我有2个应用程序,实际上其中两个是相同的应用程序,但是它们在两台不同的计算机上工作,并且第一台计算机(让我们说A)控制第二台计算机(让我们说B)以远程控制连接到计算机的硬件。 B. B也可以单独控制所有硬件。
问题在于,如果A告诉B开启,则无法打开软件中的CNiButton按钮,但是当唯一的B运行时,它可以触发/开启CNiButton。因此,我认为这不是图书馆问题。因为它仅在B尝试打开时才正常工作,但是A告诉B打开,所以它不工作/打开。另外,B中的软件异常终止。
我无法共享代码,因为无法访问代码。无论如何,我真的需要根据您的不同意见
A和B的计算机一起使用,因此B总是侦听A的计算机,如果有来自A的数据包,则B根据数据包执行操作
这可能是什么原因? 是什么导致程序终止?
我还提供了一些有关我的系统的信息 -有很多线程可以监听硬件 -B包括监听线程A -如果A通过通信RS432按下button1,则B呼叫button1发生事件
我认为线程彼此重叠,但是我不明白为什么CNiButton会发生这种情况,而其他标准按钮却不会发生这种情况。
还有什么理由可以使该按钮不应该从除主线程之外的其他线程运行?
同时,该程序适用于VisualC ++ 6.0,并具有适用于NI硬件的驱动程序。
Edit1
我认为需要添加一些我记得的代码!
有一个按钮
CNiButton ledTemperature;
如果您知道LabView,则此按钮看起来像是LabView带领的。还有一个线程监听B计算机,说void listenBComputer()方法和MFC CMSComm类的方法,
CMSComm comPort;
void MyClass:: listenBComputer();
listenBComputer()方法调用B comuter,如果B单击例如:fireOpenButton,则A做同样的事情,并假装调用fireOpenButton的方法,就像A计算机单击fireOpenButton,并且必须像打开“ ledTemperature” CNiButton一样,
ledTemperature.SetValue(true) ;
当B计算机向A发送命令但该代码和过程相同,或者如果A在没有B计算机的情况下单击fireOpenButton时,我们说的是相同的代码和过程,则此操作将不会引发异常。