当前位置: 技术问答>linux和unix
关于linux下串口编程的问题
来源: 互联网 发布时间:2015-05-24
本文导语: 各位高手: 小弟初学串口编程,有一个小麻烦,请各位指教 代码如下:具体的设置函数没有写出来 int main(int argc, char **argv){ int fd; int nread; char buff[512]; char *dev = "/dev/ttyS0"; int i =...
各位高手:
小弟初学串口编程,有一个小麻烦,请各位指教
代码如下:具体的设置函数没有写出来
int main(int argc, char **argv){
int fd;
int nread;
char buff[512];
char *dev = "/dev/ttyS0";
int i = 1;
fd = OpenDev(dev);
printf("open ok!!n");
set_speed(fd,19200);
printf("set speed okn");
if (set_Parity(fd,8,1,'N') == FALSE) {
printf("Set Parity Errorn");
exit (0);
}
printf("begin reading.....n");
while (i)
{
while((nread = read(fd, buff, 512))>0)
{
if (buff[0] == 'z'){
printf("EXITn");
close(fd);
exit(0);
}
printf("nLen %dn",nread);
printf( "%sn", buff);
memset(buff,0,512);
}
printf("nread = %dn",nread);
i--;
}
close(fd);
exit (0);
}
但是使用测试工具反复发送数据1234567890
得到的结果:
Len 4
7890
Len 4
7890
Len 10
1234567890
Len 5
67890
Len 5
67890
Len 5
67890
Len 5
67890
Len 10
123456790
为什么会出现数据不全的情况呢?
另外还有,能不能实现一个串口多个进程通信?比如,用一个口,同时进行数据传输和超级终端控制?
谢谢
小弟初学串口编程,有一个小麻烦,请各位指教
代码如下:具体的设置函数没有写出来
int main(int argc, char **argv){
int fd;
int nread;
char buff[512];
char *dev = "/dev/ttyS0";
int i = 1;
fd = OpenDev(dev);
printf("open ok!!n");
set_speed(fd,19200);
printf("set speed okn");
if (set_Parity(fd,8,1,'N') == FALSE) {
printf("Set Parity Errorn");
exit (0);
}
printf("begin reading.....n");
while (i)
{
while((nread = read(fd, buff, 512))>0)
{
if (buff[0] == 'z'){
printf("EXITn");
close(fd);
exit(0);
}
printf("nLen %dn",nread);
printf( "%sn", buff);
memset(buff,0,512);
}
printf("nread = %dn",nread);
i--;
}
close(fd);
exit (0);
}
但是使用测试工具反复发送数据1234567890
得到的结果:
Len 4
7890
Len 4
7890
Len 10
1234567890
Len 5
67890
Len 5
67890
Len 5
67890
Len 5
67890
Len 10
123456790
为什么会出现数据不全的情况呢?
另外还有,能不能实现一个串口多个进程通信?比如,用一个口,同时进行数据传输和超级终端控制?
谢谢
|
有设flow control吗? 也可把baud rate降低看看是否是此问题