关于串口读写问题 ------- 大神请进来瞧瞧

金牛萌萌 2016-09-05 04:16:35


给串口写入一个字符串“abcd”,数据读不出来,大神帮忙看一下哪里出现了问题?多谢!

...全文
616 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
nt006 2016-09-23
  • 打赏
  • 举报
回复
引用 12 楼 q3733353520 的回复:
[quote=引用 11 楼 halloworldd 的回复:] [quote=引用 10 楼 q3733353520 的回复:] 2个线程 一个用w方式打开串口设备,并且write数据 一个用r方式打开串口设备,并且read数据(发现有数据可读时)。
这样确实可以,线程1一直处于发送状态,发送的很快, 线程2处于接收状态,此时线程2并不能把数据接收过来,每次接收的数据都是残缺的,,除非在线程1中增加延时,当延时设置为1s时,数据能完整接收,小于1s就不行了,但是1s的时间有太久了,,,现在就卡在这儿了!!![/quote] 用select[/quote] 一个串口接收发送 你用个线程 说实话 你拿练习可以 ,拿来实用欠妥当
  • 打赏
  • 举报
回复
引用 11 楼 halloworldd 的回复:
[quote=引用 10 楼 q3733353520 的回复:] 2个线程 一个用w方式打开串口设备,并且write数据 一个用r方式打开串口设备,并且read数据(发现有数据可读时)。
这样确实可以,线程1一直处于发送状态,发送的很快, 线程2处于接收状态,此时线程2并不能把数据接收过来,每次接收的数据都是残缺的,,除非在线程1中增加延时,当延时设置为1s时,数据能完整接收,小于1s就不行了,但是1s的时间有太久了,,,现在就卡在这儿了!!![/quote] 用select
金牛萌萌 2016-09-19
  • 打赏
  • 举报
回复
引用 10 楼 q3733353520 的回复:
2个线程 一个用w方式打开串口设备,并且write数据 一个用r方式打开串口设备,并且read数据(发现有数据可读时)。
这样确实可以,线程1一直处于发送状态,发送的很快, 线程2处于接收状态,此时线程2并不能把数据接收过来,每次接收的数据都是残缺的,,除非在线程1中增加延时,当延时设置为1s时,数据能完整接收,小于1s就不行了,但是1s的时间有太久了,,,现在就卡在这儿了!!!
  • 打赏
  • 举报
回复
2个线程 一个用w方式打开串口设备,并且write数据 一个用r方式打开串口设备,并且read数据(发现有数据可读时)。
花开花折 2016-09-14
  • 打赏
  • 举报
回复
引用 8 楼 u010909114 的回复:
[quote=引用 6 楼 halloworldd 的回复:] [quote=引用 3 楼 u010909114 的回复:] 1:延时加长点; 2:利用事件读取数据;
能普及一下读取串口和“事件”之间的联系么,目前我对这块儿还是空白。谢谢你的帮助![/quote] 当接收端口接收到第一个字节时,会触发一个事件,你可在此事件中开始读取串口接收缓冲区的数据;[/quote] C# 及C++中都有对应的串口控件,用来处理串口通信,当然也可自己写。
花开花折 2016-09-14
  • 打赏
  • 举报
回复
引用 6 楼 halloworldd 的回复:
[quote=引用 3 楼 u010909114 的回复:] 1:延时加长点; 2:利用事件读取数据;
能普及一下读取串口和“事件”之间的联系么,目前我对这块儿还是空白。谢谢你的帮助![/quote] 当接收端口接收到第一个字节时,会触发一个事件,你可在此事件中开始读取串口接收缓冲区的数据;
91program 2016-09-13
  • 打赏
  • 举报
回复
串口接收,建议是使用线程 + 事件的方式,而不是读一下就不管了
金牛萌萌 2016-09-13
  • 打赏
  • 举报
回复
引用 1 楼 91program 的回复:
Linux Or Wince? 怎么看你的代码风格,好像是 Linux 呢?
是的!ubuntu!
金牛萌萌 2016-09-13
  • 打赏
  • 举报
回复
引用 3 楼 u010909114 的回复:
1:延时加长点; 2:利用事件读取数据;
能普及一下读取串口和“事件”之间的联系么,目前我对这块儿还是空白。谢谢你的帮助!
金牛萌萌 2016-09-13
  • 打赏
  • 举报
回复
引用 4 楼 91program 的回复:
串口接收,建议是使用线程 + 事件的方式,而不是读一下就不管了
我是想实现程序在开发板上运行后,处于等待接收状态,,,把开发板的串口连接电脑,用串口调试助手给板子发信息,但发现一直收不到数据,,,
花开花折 2016-09-09
  • 打赏
  • 举报
回复
1:延时加长点; 2:利用事件读取数据;
  • 打赏
  • 举报
回复
既然写用的write,为啥读就变成了PortRecv了,命名不规范还是什么? 试试直接调用read函数。 另外,rxData[RxLen+1]不对吧, 应该是rxData[RxLen]
91program 2016-09-06
  • 打赏
  • 举报
回复
Linux Or Wince? 怎么看你的代码风格,好像是 Linux 呢?

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧