当前位置: 技术问答>linux和unix
linux串口通信问题
来源: 互联网 发布时间:2017-01-12
本文导语: 主函数代码如下: int main(int argc, char**argv) { int fd; int nread; char buff[512]; char *wb="hello world!"; char *dev="/dev/ttyUSB0"; fd = OpenDev(dev); set_speed(fd, 9600); if(set_Parity(fd, 8, 1, 'N') == 0) { printf("Set Parity Errorn"); ex...
主函数代码如下:
int main(int argc, char**argv)
{
int fd;
int nread;
char buff[512];
char *wb="hello world!";
char *dev="/dev/ttyUSB0";
fd = OpenDev(dev);
set_speed(fd, 9600);
if(set_Parity(fd, 8, 1, 'N') == 0)
{
printf("Set Parity Errorn");
exit(0);
}
write(fd, wb, 13);
while(1)
{
while((nread = read(fd, buff, 512))>0) //全部读取完才进入while循环?还是读到一个字节就进一次?
{
printf("nLen %dn", nread); //此行删除后无法收取信息,但串口可以打开(OpenDev函数中如果正常打开
//则输出串口打开成功提示),为什么?
buff[nread+1]=''; //实际运行中上面到nread是输出了13个1
printf("%sn", buff);
}
}
}
输出如下:
问题已经打在注释里了,求解释。
int main(int argc, char**argv)
{
int fd;
int nread;
char buff[512];
char *wb="hello world!";
char *dev="/dev/ttyUSB0";
fd = OpenDev(dev);
set_speed(fd, 9600);
if(set_Parity(fd, 8, 1, 'N') == 0)
{
printf("Set Parity Errorn");
exit(0);
}
write(fd, wb, 13);
while(1)
{
while((nread = read(fd, buff, 512))>0) //全部读取完才进入while循环?还是读到一个字节就进一次?
{
printf("nLen %dn", nread); //此行删除后无法收取信息,但串口可以打开(OpenDev函数中如果正常打开
//则输出串口打开成功提示),为什么?
buff[nread+1]=''; //实际运行中上面到nread是输出了13个1
printf("%sn", buff);
}
}
}
输出如下:
问题已经打在注释里了,求解释。
|
while((nread = read(fd, buff, 512))>0) //全部读取完才进入while循环?还是读到一个字节就进一次?
这个得看你是怎么设置串口的,可以设置一字节就返回,也可设置多个字节返回。
{
printf("nLen %dn", nread); //此行删除后无法收取信息,但串口可以打开(OpenDev函数中如果正常打开
//则输出串口打开成功提示),为什么?
这行不影响,没见到过这样的情况。
buff[nread+1]=''; //实际运行中上面到nread是输出了13个1
因为每次读取一个就返回了。
printf("%sn", buff);
这个得看你是怎么设置串口的,可以设置一字节就返回,也可设置多个字节返回。
{
printf("nLen %dn", nread); //此行删除后无法收取信息,但串口可以打开(OpenDev函数中如果正常打开
//则输出串口打开成功提示),为什么?
这行不影响,没见到过这样的情况。
buff[nread+1]=''; //实际运行中上面到nread是输出了13个1
因为每次读取一个就返回了。
printf("%sn", buff);
|
网络上找找timeio看看