说的详细些,你点击不同的button,是不是向串口发送不同的指令?串口对指令的回应应该是不同的(格式不同或有相应的协议),根据协议解包后不就知道是对应哪个指令回来的数据了吗?

解决方案 »

  1.   

    1.程序开始时我就开始一直发送指令(相同的指令)给serialport,然后接收数据,进行处理 ,实时把结果显示在窗体上。我单独运行这一部分是没有问题的。用的是backgroundworker.
    2.当我点击窗体上的按钮时,我就想停止backgroundworker的工作(原因:只有一个serialport接收数据),它就会发送另一条指令给serialport.当然每个按钮发送的指令是不同的,串口对指令的回应也是不同的。
    3.但是当backgroundworker和窗体介面的button事件同时工作时,接收的数据就会有问题。我想问一下,如何随时的停止backgroundworker的工作以及能不能控制serialport接收数据的部分。
    3.另一方面我为了接收的数据是正确的,当我发送指令给串口后,我用了一个lock方法,如果接收不到正确的数据我就会等待,直到接收到serialport发送回来的正确数据。所以如果接收不到正确的数据。就会造成死锁,我应该怎么办!
    或者有没有更好的思路呢,希望各位能够帮助我。谢谢你们!