http://bbs.csdn.net/topics/390744417
串口控件本身的线程不是这样理解的,你不用管它本身用不用线程,它的内部线程和你也没关系。前面说过了,你可以在自己的主线程里创建好Spcomm,并配置好各个参数,然后你的线程就可以用这个在主线程里创建的SPCOMM了。为了简单,一个线程单独用一个SPCOMM,这样就不用考虑各个线程间的冲突了。要发送的消息可以预先设置好一个列表传入通信子线程,通信子线程收到数据后给主线程发消息,可以这样发消息:
var
aDataRec:TMyRec;
.................
PostMessage(MainFormHandle,WM_MESSAGE001,Integer(@aDataRec),0);
................
//这个aDataRec可以是临时变量,这样就可以传递大数据了,也不要用全局变量了
如果上位机和下位要交互的信息是有限和预知的,可以在通信线程里设置好。如果是要人参与交互,那就得临时挂起通信线程了,控件通信流程。
时间: 2024-10-15 11:43:38