xiebudong 发表于 2012-3-7 21:21:44

tq2440, linux串口问题

linux的串口驱动程序的read和write好像和一般的串口驱动程序的读写不一样啊,
比如:
char buff;
nread=read(serial_fd, buff, 512);

无论串口实际读了多少个字节,这个read函数都返回的是第三个参数传递的数值,比如我给打开的这个串口发送了一个OK,但是nread的值打印出来是512, 而且这个OK被此次读了后它并没有从串口缓冲区消失,而是一直都在缓冲区,循环读取一直都能读到这个OK。

又比如write函数,nwrite=write(serial_fd , "AT\r\n", sizeof("AT\r\n"));   nwrite不是4而是5,也就是说连\0也发过去了。。

请问是不是这样? 我现在要用串口2直接接gtm900b,发现在串口程序这里处处有问题。。请问能否告诉我read函数和write函数还有什么特别的地方,或是有没有办法将串口驱动修改一下,改为传统的样子,现在串口这样子让我好难受~~~

raominping 发表于 2012-3-7 22:39:26

这个事裸奔中的吗?

xiebudong 发表于 2012-3-7 23:29:27

是测试程序里的

TQ-lkp 发表于 2012-3-8 12:03:07

sizeof("AT\r\n")=5,所以你实际发送了5个
串口读取结束后,清空下缓冲区试下

xiebudong 发表于 2012-3-8 14:09:47

清空缓冲区用哪个函数呢?

liyunkebeyond 发表于 2012-8-4 21:20:44

清空缓冲区:tcflush(fd,TCIFLUSH);
页: [1]
查看完整版本: tq2440, linux串口问题