关于SPComm分批接收大量数据的问题(100分)

  • 主题发起人 主题发起人 lmcui
  • 开始时间 开始时间
L

lmcui

Unregistered / Unconfirmed
GUEST, unregistred user!
我正在写一个从下位机接收数据的程序,通过串口和下位机通信,每次需要接收大约20K左右的数据,
但是SPComm的接收缓冲区的固定的,我看了SPComm的源码(当然了,大部分看不懂:( ),默认2K,
我把它设置成了1K。在OnReceiveData事件里处理接收的数据。每次处理一个缓冲区。
用语句 move(Buffer^,PChar(@rBuf)^,BufferLength); 把接收缓冲区的内容保存到rBuf中处理。
事件中有一个循环,来处理这1K的数据。
问题是:
好像在第一个缓冲区的数据还没有处理完毕时就又触发了一个OnReceiveData事件,
那样我的数据处理就不对了,我希望OnReceiveData在我处理完一个缓冲区后再触发,或实现类似功能。
不知我描述的清楚不?哪位高手可以帮忙解决?先谢了!
 
你应该自己再设一个缓冲区,比仿一个TList,或比仿说是一个String,
每次收到先放着,然后用一个线程去处理列表中的数据,
 
就算再设一个缓冲区,如果不能保证每一次触发OnReceiveData的时候不影响前面缓冲区的数据,
结果还是一样啊,我就是不知道做这样的缓冲区怎么处理。
我也想过用线程,但是如果用线程的话,可能同时运行多个线程,我觉得也不很好。
 
我做过的才这样告诉你啊,呵呵,一个线程专管接收,一个线程专管处理,
 
不好意思,我还是不大明白,能不能给个例子。
 
我现在的机器没装D,你如果对线程不了解,就装一个线程控件吧,然后试试,
 
接受答案了.
 
zyy04:
把分给kkyy我倒是没意见,但是问题还没有解决,为什么结我的帖子?版主就厉害?!!!
 
对不起,上次打开你的帖子是比较感兴趣;因为当时还在处理一些版内旧帖,
没注意把你的帖子当作旧贴处理了,这里向你道歉。
 
后退
顶部