当前位置: 技术问答>linux和unix
请问:Linux 串口编程 非阻塞异步模式 write没有数据
来源: 互联网 发布时间:2016-10-27
本文导语: 各位大侠,求救下 我在Linux下面做串口编程遇到一个问题。 虽然知道不能轻易在这里发帖问这个很基本的编程,实在是自己已经看了两天。 先前也遇到许多问题,都解决了。现在这个,检查得有点没有思路。 还请能...
各位大侠,求救下
我在Linux下面做串口编程遇到一个问题。
虽然知道不能轻易在这里发帖问这个很基本的编程,实在是自己已经看了两天。
先前也遇到许多问题,都解决了。现在这个,检查得有点没有思路。
还请能够提下建议,谢谢(*^__^*)
程序前两天还能够正常使用,现在只能read不能write。
直接使用write(fd0,buf,15),返回值是成功的,15。但另一台电脑上没有数据
而另个电脑发过来的数据能够接收。
我使用的是异步模式,SIGIO形式的,不知道这是不是其中的一个错点(但是先前都能够收发,设置%98都是正确的)
重点有可能在这里:
我的write函数是用子函数调用的,writeback()函数,其中有一个参数为fd0(串口的文件描述符)。
而打开串口和设置参数是在主函数main()里面进行的。
是不是传递这个文件描述符不能当成一般的int传递呢?
文件描述符说是表示内核管理的一个数组地址(百度的)。
我打印过主函数里面的fd0和传递过去的fd0,值是正确的。
我尝试过使用地址传递,但依然writeback正确,但是没有收到数据。
还尝试过在main里面read完成后关闭串口,然后再writeback里面重新打开,依然如故。
唯一一点怪异的是,前两天时候,程序完全没有问题。。。可是。。
请各位大侠们提点思路。小弟初来CSDN,一个程序员大菜鸟,分不知道有多少,能给尽量都给。
我在Linux下面做串口编程遇到一个问题。
虽然知道不能轻易在这里发帖问这个很基本的编程,实在是自己已经看了两天。
先前也遇到许多问题,都解决了。现在这个,检查得有点没有思路。
还请能够提下建议,谢谢(*^__^*)
程序前两天还能够正常使用,现在只能read不能write。
直接使用write(fd0,buf,15),返回值是成功的,15。但另一台电脑上没有数据
而另个电脑发过来的数据能够接收。
我使用的是异步模式,SIGIO形式的,不知道这是不是其中的一个错点(但是先前都能够收发,设置%98都是正确的)
重点有可能在这里:
我的write函数是用子函数调用的,writeback()函数,其中有一个参数为fd0(串口的文件描述符)。
而打开串口和设置参数是在主函数main()里面进行的。
是不是传递这个文件描述符不能当成一般的int传递呢?
文件描述符说是表示内核管理的一个数组地址(百度的)。
我打印过主函数里面的fd0和传递过去的fd0,值是正确的。
我尝试过使用地址传递,但依然writeback正确,但是没有收到数据。
还尝试过在main里面read完成后关闭串口,然后再writeback里面重新打开,依然如故。
唯一一点怪异的是,前两天时候,程序完全没有问题。。。可是。。
请各位大侠们提点思路。小弟初来CSDN,一个程序员大菜鸟,分不知道有多少,能给尽量都给。
|
费解,要看看源码