串口通信的小问题 请帮忙啊

树先生 2008-12-08 03:18:21
写了一个串口通信(PC与PLC)程序,一切都正常。
就是当发送频率比较快时接收方就会出现丢失数据,为什么呢?请大家指点,多谢!
...全文
103 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
CA_HA_M 2008-12-08
  • 打赏
  • 举报
回复
你说pc来不及处理plc发来的数据,是不是你只用了一个主线程,把数据接收处理全干了?

如开个数据接收线程专门用于接收数据,再用一个线程或主线程处理接收到的数据,不应该出现pc来不及响应plc的情况,除非你的数据处理过于复杂.
CA_HA_M 2008-12-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xxrlily 的回复:]
刚刚弄清楚了 数据没有丢失 应该是plc发送频率过高 计算机对上一条指令的处理还没有结束 来不及处理后面的指令
刚查了一下 好像要设置一个缓冲区 请问怎么设置啊 谢了
[/Quote]
应该是2个缓冲区,一个接收一个发送;
如果是设置plc的,你应该看plc的技术手册
如果是pc的,那你就应该说明白是用的什么方式读写串口.
hhyttppd 2008-12-08
  • 打赏
  • 举报
回复
[Quote=引用楼主 xxrlily 的帖子:]
写了一个串口通信(PC与PLC)程序,一切都正常。
就是当发送频率比较快时接收方就会出现丢失数据,为什么呢?请大家指点,多谢!
[/Quote]

楼主啊,你至少要交待一下上下文件吧,你用什么方式读写串口呢?
比如MS comm, 或CreateFile.... WriteFile..
wzg112 2008-12-08
  • 打赏
  • 举报
回复
不好意思,少了一个字,存数据!
wzg112 2008-12-08
  • 打赏
  • 举报
回复
定义一个大的buffer[buffersize]或指针存数
树先生 2008-12-08
  • 打赏
  • 举报
回复
刚刚弄清楚了 数据没有丢失 应该是plc发送频率过高 计算机对上一条指令的处理还没有结束 来不及处理后面的指令
刚查了一下 好像要设置一个缓冲区 请问怎么设置啊 谢了
CA_HA_M 2008-12-08
  • 打赏
  • 举报
回复
PLC的数据处理速度肯定比不上pc,如果PLC刚接收完一帧数据,还未来的及清空接收缓冲区,你的下一帧数据就到了,肯定会出现丢帧现象.所以,pc端的发送软件要在每个发送帧之间加一定的延时,延时多少你可以试验一下.
wudeshou82666 2008-12-08
  • 打赏
  • 举报
回复
串口通信(PC与PLC)程序
两边的波特率肯定要设为一样啊,不懂你的发送频率快时丢数据是什么意思.
可能是PLC跟不上你设置的串口的速度吧

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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