请教MFC上位机程序,50个仪表,1个控制台(升源降源),采用多线程如何对仪表进行检测?
50个仪表放到控制台上,只有一个控制台。要做一个自动的MFC上位机程序,点一下按键,一直跑到完。软件能够自动的使控制台升源降源,然后与仪表通信,进行仪表的检测。控制台是一对多的,也就是50个仪表只能用一个控制台。这涉及到同步问题。下一步的检测只能是等待这一步所有仪表都检测完毕,才进行下一步(只能如此)。通信及控制台的控制、测试等不是问题。关键是能否用多线程,同时启动50个线程并发检测。
之前的做法是采用定时器的方式。设定全局变量timerno,timerno随定时器累加。每个timerno固定做特定的操作(即与仪表进行通信)。这样就能保证50个仪表是一致的。
这种方法的问题是,仪表是从设备,通信时有应答。应答的快慢不一致。所以只能按照最慢的应答时间等待,才能保证不超时。这样比较费时。比如有49个都是
在100ms应答,而有1个是在1000ms时应答。则必须用1000ms做最大等待时间。
现在想改成线程方式,即每个仪表收到应答后就进行下一步操作,各干各的,这样会节省时间。但如果遇到控制台的升源降源等一致性操作的时候,必须同步等待所有仪表完成上一步才行。
请问这两个方法哪个更好,50个线程的方案是否可行,该如何做?