串口通信中主动发送数据,然后接收是否需要监听线程? ( 积分: 100 )

  • 主题发起人 主题发起人 jinfenglin
  • 开始时间 开始时间
J

jinfenglin

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在做一个机房监控系统,其中对电压电流的监视是通过传感器和单片机实现与主机的通信,单片机与主机通过串口相连,监视策略采用轮询的方式,即主机主动发送数据给单片机,然后单片机再回一个数据给主机,也就是同步通信。在这种情况下是否需要监听线程?
第一次写串口通信程序,请帮助。
 
我现在做一个机房监控系统,其中对电压电流的监视是通过传感器和单片机实现与主机的通信,单片机与主机通过串口相连,监视策略采用轮询的方式,即主机主动发送数据给单片机,然后单片机再回一个数据给主机,也就是同步通信。在这种情况下是否需要监听线程?
第一次写串口通信程序,请帮助。
 
这两个数据之间有什么关联没有,比如主机根据收到的数据组织对应的数据发送回去,如果有关联可以同步,同步比异步做起来简单一点

监听的线程一直开着吧,让它在那里死循环就可以了,只要没有消息来,那个线程就不会触发,不影响系统资源。我记得是有个WaitForSingleObject还是WaitForMultipleObjects的就可以不用一直占用资源,记不太清楚了,以前公司封装的。

如果没有什么特殊要求,建议用SPCOMM,找个有代码的版本,自己可以做些调整
 
没有必要单独开线程,因为你发出的信息,单片机马上就返回信息,而且是必须返回信息,
所以发送后马上就读就可以了
 
确实是这样的,毕竟有线程比没有线程总是要麻烦,因为发送完马上就读数据,我先试试SPCOMM这个控件吧。
 
SPCOMM控件就没有线程了???[?]
SPCOMM控件内部自带了两个线程的,一个负责读数据,一个负责写数据,好好研究一下SPCOMM的源代码,怎么用线程真的很简单了
 
有线程不麻烦,SPCOMM都已经帮你处理调了,如果用同步还会有个问题,如果单片机不发回来,你就要死等,另外还需要处理一种东西,就是数据包错误的问题,要求重发等等。自己设置超时,协调起来不间的就简单了
 
>>如果单片机不发回来,你就要死等
这不正是要用线程的理由么?

>>另外还需要处理一种东西,就是数据包错误的问题,要求重发等等。自己设置超时
就算不用线程,数据包错误也要处理吧?超时也要设置的吧?

楼上的以为如何?
 
楼上的误会了,我的意思是不用线程死等很比较麻烦,死循环占资源

如果不用线程处理错误包和超时麻烦一些
 
我看了一下SPCOMM的源代码,正如godelphi2004所讲,它还是有两个线程。目前我用的这个停等协议本身确实存在死等的问题,我正在与同事商量改成异步通信,这样可能更好控制一点。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部