串口通信的问题,因为要发出一连串的指令,每条指令都需要串口给出应答才能执行下一条语句。现在我做了两个线程,发送指令是一个线程,每条语句执行后把线程Suspend,然后启动接收线程接受串口数据,串口数据接收后,再把发送线程resume,同时接收线程suspend;发送线程继续执行发送指令,如此循环...但是一直得不到正确结果,第一条指令发送和接收都正常,第二条就不成了,请不吝赐教!!!

解决方案 »

  1.   

    源代码如下:急切盼望答案,一定给分!!
    private void shuiliang_Load(object sender, System.EventArgs e)
    {
    send=new Thread(new ThreadStart(communication));
    getInput=new Thread(new ThreadStart(receive));

    }
    private void receive()
    {

    inData=(string) com.Input;

    txtComm.Text=inData;

    if(send.ThreadState.ToString()=="Suspended") send.Resume();

    }
    private void communication()
    {
    String sendData;
    if(comboBox2.Text.Substring(12,2)=="SJ")
    {

    sendData="AT+CREG?\r";
    com.Output=sendData;

    send.Suspend();

    String one=inData.Substring(11,10); if(one!="+CREG: 0,1") {txtComm.Text+="modem天线不正常!!!";send.Abort();}
    else
    {

    txtComm.Text+="modem天线正常!!!";
    sendData="ATD13752514105;\r";

    com.Output=sendData;

    send.Suspend();
    // String atdRes=inData.Substring(inData.Length-1,1);
    }
    }

    } private void com_OnComm(object sender, System.EventArgs e)
    {
    if(com.CommEvent==2)
    {
    getInput.Start();

    }
    }
      

  2.   

    我建议你用timer控制一下。
    如果你在线程里面一直while的话,很难收到数据。
      

  3.   

    发送用一个线程
    当你第一次接受完后线程就结束了
    应该用while(true)
    {
      不断接受,如果有内容就显示
    }
    试试