今天碰到很麻烦的问题,先说一下设备情况.
上位机(就是我现在写的程序)首先对设备发送带设备号的召唤命令,设备接收到命令后,如果是对自己召唤,就对上位机返回激活成功应答.
我的程序发送召唤后,怎么都接收不到设备的应答,serialPort_DataReceived事件始终没有触发,我用其他串口调试软件试过,发送带设备号的命令,能接收到设备返回的应答.
难道serialport还有其他东西要设置吗?请高人指教.

解决方案 »

  1.   

    项目代码太多,就上我测试的一部分代码吧
    Private void SendCall()
            {
                this.serialPort1.PortName = "com15";
                byte[] b = new byte[7];
                b[0] = 0xA3;
                b[1] = 0xA5;
                b[2] = 0xAA;
                b[3] = 0xCA;
                b[4] = 0x30;
                b[5] = 0x35;
                b[6] = 0x00;
                //前4位验证码,中间两位设备号,最后一位是结束位
                serialPort1.Open();
                serialPort1.Write(b, 0, b.Length);
            }
    发送的命令是16进制表示.这样发过去之后还是没有收到设备返回的应答.
    难道我发送的命令格式不对?
      

  2.   

    打开串口前设置:
    Serialport.Handshake=Handshake.RequestToSend
      

  3.   

    或者设置SerialPort.DtrEnable=True
    SerialPort.RtsEnable=True