当前位置: 技术问答>linux和unix
倾家荡产问问题
来源: 互联网 发布时间:2016-11-16
本文导语: 在Ubuntu 9.10下面做驱动有一段时间,经常到csdn上问问题,很感谢解答的大虾们。现在小弟遇到了问题,可以说不知道是什么原因的错误。先让小弟把问题描述一下:read读取串口设备传上来的数据,设备是触摸屏,手...
在Ubuntu 9.10下面做驱动有一段时间,经常到csdn上问问题,很感谢解答的大虾们。现在小弟遇到了问题,可以说不知道是什么原因的错误。先让小弟把问题描述一下:read读取串口设备传上来的数据,设备是触摸屏,手按下时有数据传输到pc上,手松开时设备也会发送数据到pc端。问题时出现在手触摸的过程中会有数据丢失,有时松开的时候设备传上来的数据没有被接收到。
主要函数如下:
.....初始化USB转串口设备的属性函数........
void Init_Com(int fd)
{
struct termios Opt;
tcgetattr(fd,&Opt);
memset(&Opt,0,sizeof(struct termios));
//设置波特率
cfsetispeed(&Opt,B57600);
cfsetospeed(&Opt,B57600);
(Opt).c_cflag |= (CLOCAL | CREAD );
(Opt).c_cflag &= ~CRTSCTS; // set the hardware and soft flow control,disable
//设置c_cflag参数//无校检,8位
(Opt).c_cflag &= ~PARENB;
(Opt).c_iflag &= ~INPCK;
(Opt).c_cflag &= ~CSTOPB;
(Opt).c_cflag &= ~CSIZE;
(Opt).c_cflag |= CS8;
(Opt).c_cflag &= ~PARODD;
// (Opt).c_iflag &= ~(IXON | IXOFF | IXANY);
// (Opt).c_iflag &= ~(INLCR | IGNCR | ICRNL);
// (Opt).c_iflag &= ~(BRKINT | ICRNL | INPCK | ISTRIP );
(Opt).c_lflag &= ~(ICANON | ECHO | ECHOE |ISIG);
//(Opt).c_lflag &= ~( ECHO | ECHOE |ISIG);
(Opt).c_oflag &= ~OPOST;
//设置延迟操作参数
(Opt).c_cc[VMIN] =0;
(Opt).c_cc[VTIME] = 2;
//fcntl(fd,F_SETFL,FNDELAY);
tcsetattr(fd,TCSANOW,&Opt);
}
..................................
.........接收函数,每次设备返回16个字节帧..........
int Recv_Data(int fd)
{
unsigned char Read_Buf[16] = {0};
while(1)
{
memset(Read_Buf,0,sizeof(Read_Buf));
usleep(100);
read_ret = read(fd,Read_Buf,sizeof(Read_Buf));
for(i=0;i
主要函数如下:
.....初始化USB转串口设备的属性函数........
void Init_Com(int fd)
{
struct termios Opt;
tcgetattr(fd,&Opt);
memset(&Opt,0,sizeof(struct termios));
//设置波特率
cfsetispeed(&Opt,B57600);
cfsetospeed(&Opt,B57600);
(Opt).c_cflag |= (CLOCAL | CREAD );
(Opt).c_cflag &= ~CRTSCTS; // set the hardware and soft flow control,disable
//设置c_cflag参数//无校检,8位
(Opt).c_cflag &= ~PARENB;
(Opt).c_iflag &= ~INPCK;
(Opt).c_cflag &= ~CSTOPB;
(Opt).c_cflag &= ~CSIZE;
(Opt).c_cflag |= CS8;
(Opt).c_cflag &= ~PARODD;
// (Opt).c_iflag &= ~(IXON | IXOFF | IXANY);
// (Opt).c_iflag &= ~(INLCR | IGNCR | ICRNL);
// (Opt).c_iflag &= ~(BRKINT | ICRNL | INPCK | ISTRIP );
(Opt).c_lflag &= ~(ICANON | ECHO | ECHOE |ISIG);
//(Opt).c_lflag &= ~( ECHO | ECHOE |ISIG);
(Opt).c_oflag &= ~OPOST;
//设置延迟操作参数
(Opt).c_cc[VMIN] =0;
(Opt).c_cc[VTIME] = 2;
//fcntl(fd,F_SETFL,FNDELAY);
tcsetattr(fd,TCSANOW,&Opt);
}
..................................
.........接收函数,每次设备返回16个字节帧..........
int Recv_Data(int fd)
{
unsigned char Read_Buf[16] = {0};
while(1)
{
memset(Read_Buf,0,sizeof(Read_Buf));
usleep(100);
read_ret = read(fd,Read_Buf,sizeof(Read_Buf));
for(i=0;i
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
站内导航:
特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!