delphi 7 +spcomm 通讯问题

slm_delphi 2013-02-06 10:31:56
delphi 7 +spcomm ,spcomm .Readintervaltimeout = 10,可以接收到 发来的数据,但如果输入数据间隔很大的话 就什么也收不到,而且输入的数据 是多个字节 , 个人感觉 就算接收丢数据 也不应该 什么也接收不到啊!
而下载的sscom32串口调试为什么在什么情况下都能接收到数据,求高手帮帮忙 !
工作进度受阻 , 高手 帮忙!
...全文
355 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
BillYongke 2013-06-21
  • 打赏
  • 举报
回复
可以尝试一下
看那山瞧那水 2013-02-06
  • 打赏
  • 举报
回复
Readintervaltimeout这个参数(记得还有2个参数,是直接针对Window API设置的),一般运用中,如果不是直接用API进行通信,而是用这些封装过的串口通信控件,可以不用理这些参数,用默认值就好了。 你接收数据方式是用spcomm的事件吧,在事件的代码里先加个延迟,sleep(100)到sleep(400),时间自己调整下,就能接收到完整数据了。 更好点方法是在判断要接收的数据长度,类似这样: while WantNum < InputNum do begin if (超时)/(超次数)then Exit; Sleep(10); end; Read(); WantNum要接收的字节数,InputNum是缓冲区中字节数,这个参数是API函数Read()中的inBytes的参数。Spcomm的OnRecieveData()中应当有带这个参数(CPort控件是有这个参数的)
hongss 2013-02-06
  • 打赏
  • 举报
回复
2楼说的在发送的时候加上延时是可以的 另外,查看下你的BufferLength,看看是不是适合你的数据
slm_delphi 2013-02-06
  • 打赏
  • 举报
回复
多谢高手帮忙,你说的 在接收事件里 调整 我可以理解,但现在是 明明串口总有数据传入, 用sscom32工具都能接收到 ,而我程序的 spcomm的OnRecieveData(),却 触发不了,调Readintervaltimeout还有可能触发,但还不是 每次startcom 后 都能触发。 希望再能指点一二 谢谢!

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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