当前位置: 技术问答>linux和unix
unix下串口编程 加速问题
来源: 互联网 发布时间:2016-08-16
本文导语: 工程上的需要写了一个串口通讯的程序,实际过程中调用的次数很多,所以每次程序都要运行很长时间(实在不能忍)才结束,请教一下怎样优化串口通讯程序才能提速?无限的感谢!!下面是程序的主要部分: i...
工程上的需要写了一个串口通讯的程序,实际过程中调用的次数很多,所以每次程序都要运行很长时间(实在不能忍)才结束,请教一下怎样优化串口通讯程序才能提速?无限的感谢!!下面是程序的主要部分:
int uart_tx(uint32_t opera){
int fd;
fd = OpenDev("/dev/ttyS0"); /* Open Serial Port #1*/
SetSpeed(fd, 9600); //设置波特率
SetFormat(fd, 8, 1, 'N'); //其他的设置
write(fd, &opera, sizeof(opera)); //传输数据
close(fd); //关闭串口
return 0;
}
int uart_rx(char *buff){
int fd;
int nread = 0;
int i;
for (i = 0; i 0){ //循环等待接受的数据
close(fd);
return 0;
}
}
}
int uart_tx(uint32_t opera){
int fd;
fd = OpenDev("/dev/ttyS0"); /* Open Serial Port #1*/
SetSpeed(fd, 9600); //设置波特率
SetFormat(fd, 8, 1, 'N'); //其他的设置
write(fd, &opera, sizeof(opera)); //传输数据
close(fd); //关闭串口
return 0;
}
int uart_rx(char *buff){
int fd;
int nread = 0;
int i;
for (i = 0; i 0){ //循环等待接受的数据
close(fd);
return 0;
}
}
}
|
while (1){
while ((nread = read(fd, buff, 116)) > 0){ //循环等待接受的数据
close(fd);
return 0;
}
}
这样写是错误的,你第一次读到数据后,已经把句柄关闭,后边再去读,肯定出错.
while ((nread = read(fd, buff, 116)) > 0){ //循环等待接受的数据
close(fd);
return 0;
}
}
这样写是错误的,你第一次读到数据后,已经把句柄关闭,后边再去读,肯定出错.