关于串口通讯问题-发送大量数据(50分)

  • 主题发起人 主题发起人 soulhuman
  • 开始时间 开始时间
S

soulhuman

Unregistered / Unconfirmed
GUEST, unregistred user!
我在通过串口发送大量数据时,会用到sleep
但是我的程序就假死掉了,直到发送完毕才能回复正常
我在每个sleep后加上,application.processmessages,窗口就正常了,但是点击关闭按钮没反应?

另外,发送大量数据时,到后来发送的越来越慢,慢到很慢很慢,怎么回事呢?

我用的SPCOMM
 
spcomm需要控制发送速度,
太快是不行的,
否则可以用MSCOMM
 
在主线程中使用sleep就会使程序没有响应,建议新创建线程,在其中使用spcomm来发送信息,这样sleep时只会暂停这个线程,主线程不受影响。主窗口还是会响应的。
 
我的做法是在一个独立的线程中发送数据
发送时使用API
如果发送失败,判断原因
如果原因是缓冲区已经满了
那就应该清除错误
等待一会儿之后再发送
等待时使用自己定义的函数
不要用Sleep
可以模拟Application.ProcessMessage的实现
然后在发送循环中判断是否已经退出程序了
 
用application.processmessages就不要用sleep了
延时可以用读取系统时钟的方式计算
 
有多大的数据啊?电脑的缓冲是16K
 
数据再大,也可以拆成数个小包啊,否则接收也不好处理阿,你根本不用管它,每次发送成功后就会返回了,然后发送下一个包就可以了,没必要用上sleep的
 
我现在改为多线程了,问题解决了,谢谢了
我是通过串口发送图片,发送一张时,没什么问题,但是如果有10张以上的时候,到后来发送的速度越来越慢,什么原因呢?
 

Similar threads

后退
顶部