另外需要值得注意的是:DataReceived并不保证每收到一个字节都会触发一次!你需要使用SerialPort的其它属性和方法,如BytesToRead来读取缓存中的数据。

解决方案 »

  1.   

    我用串口调试精灵试过了。能发送出来。串口调试精灵能接收到。但是现在问题是串口调试精灵发送出来的数据我这边收不到。代码贴上
    private void spCom_DataReceived(object sender, SerialDataReceivedEventArgs e)
            {
                spCom.Handshake = Handshake.RequestToSend;
                if (spCom.BytesToRead == 0)
                {
                    return;
                }
                           int ArraySum = spCom.BytesToRead;
                char[] InputArray = new char[ArraySum];
                spCom.Read(InputArray, 0, ArraySum);
                dataBag = InputArray.ToString();
                MessageBox.Show(dataBag);
            }
      

  2.   

    你看看你有没有这句话: comPort.RtsEnable = true;
    问题解决记着给分.
    我以前也遇到过这个问题
      

  3.   

    1、你上面的描述似乎是用串口调试精灵来虚拟一个串口设备进行通信?
    如果你是需要与某个真实的串口设备通信 ,我的意思是使用串口通信精灵而不是用你的程序来与这个设备进行通信,发送某个指令,然后看设备是否返回了响应;2、注意到你是使用的Read(char[]...)这个重载的方法,你需要确定返回的数据是否char,建议使用read(byte[]...)这个重载方法先检查一下是否有返回的数据。当然,也可以把断点停在spCom.BytesToRead上看是否有数据。
      

  4.   

    问题是我的方法重载现在在datareceivr这个事件里了。现在都不触发datareceivr。我加断点也看不到啊
      

  5.   

    我之前写过一个这样的类。可以参考下:
    http://blog.csdn.net/JustLovePro/archive/2008/12/15/3523348.aspx