天嵌 ARM开发社区

 找回密码
 注册
查看: 2602|回复: 5

tq2440, linux串口问题

[复制链接]
xiebudong 发表于 2012-3-7 21:21:44 | 显示全部楼层 |阅读模式
linux的串口驱动程序的read和write好像和一般的串口驱动程序的读写不一样啊,
比如:
char buff[512];  
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);
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-5-10 23:15 , Processed in 1.046875 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表