日期:2014-05-16  浏览次数:20706 次

对同一设备文件操作,write后,能read出刚write的内容,为什么???
用mini2440在调一个3G模块,需要对模块发AT指令,由于mini2440上没有串口终端,我需要写个发AT指令的测试程序。模块与mini2440通过USB连接,驱动加载后成功生成ttyUSB0设备文件,我的测试程序就是对这个ttyUSB0进行write和read操作,奇怪的是write一个AT指令(如ATI)后,从设备read的内容包括两个部分,先是输出刚write的内容(如ATI),再接着才是AT指令的正常回显信息。我要问,AT指令名称(如ATI)明明是写入的信息,为什么能read出来呢,能read出的应该只有回显信息才对呀???

------解决方案--------------------
做成多线程吧,一个接收,一个发送,这样是最好的。
你读的和你发送的一样,很可能是你ate1打开3g模块的回显来了。你发一个at指令后他会把你发给他的指令回显给你,后面才接ok等等回应。

------解决方案--------------------
探讨
我也试着用多线程的,可结果一样。我在虚拟机的linux上用minicom也做了调试,回显的只有ok等应有的信息,并没有我所发的at指令啊?
我的读、写线程函数如下:
/*AT指令回显线程函数*/
void at_echo(int *fd)
{
int fd_r = *fd;
int nread;
fd_set rd;
char buf[MAX_READ];

printf("r……