我在断点调试的时候可以得到返回值,但是在运行时就得不到,我用的串口调试工具检测的.没有返回值,请问高手们,这是怎么回事
 SerialPort sp = new SerialPort("COM2", 9600, Parity.None, 8, StopBits.One);
                sp.Open();
                sp.WriteLine(###K1);
            byte[] data = new Byte[sp.BytesToRead];
            sp.Read(data, 0, data.Length);
            if (data.Length > 0)
            {
                //string read = data[0].ToString();
                comstatu.Text = "连接成功";
            }

解决方案 »

  1.   

    你说返回值是通过串口读取回来的数据吧??
    试着这样:SerialPort sp = new SerialPort("COM2", 9600, Parity.None, 8, StopBits.One);
                    sp.Open();
                    sp.WriteLine(###K1);
                Thread.Sleep(1000);
                byte[] data = new Byte[sp.BytesToRead];              
                sp.Read(data, 0, data.Length);
                if (data.Length > 0)
                {
                    //string read = data[0].ToString();
                    comstatu.Text = "连接成功";
                }
    看有没有返回值。
      

  2.   

    在文件前面加上:
    using Sytem.Threading; 
    引用 这个命名空间。
      

  3.   

    我用sp.ReadLine();
    可以返回值,但是一运行就死那儿了,其他的都点不动了
      

  4.   

    用线程处理你这个readline,可能是因为这是个block的通信。我没用过这个方法,不清楚它具体的工作模式。
      

  5.   

    使用MS串口控件,一般通过其DataReceived事件进行编程,在该事件处理程序中读取数据即可!
      

  6.   

    使用VS2005就自带了啊,如果使用VS2003需要导入,我用的VS2005TeamSuit串口控件是安装好开发环境就有的!
      

  7.   

    我用的也是2005啊,有一个控件SerialPort ,你说的是不是这个啊.
      

  8.   

    你应该在DataReceived事件里去读数据啊...................
      

  9.   

    1、把SerialPort控件拖到你的窗体上
    2、在窗体Load()函数里打开该串口,SerialPort应该是有个Open函数
       (当然你可以在窗体的其它地方初始化)
    3、在VS2005的“属性”页上添加SerialPort事件DataReceived的处理函数,假设为OnDataReceived_YourSerailPort(...)
    4、检测是错误消息还是数据消息(),如果是数据接收消息,通过SerialPort的Read函数读取数据
    5、根据读取的数据,进行你的App层协议解析#
    SerialPort事件:DataReceived/ErrorReceived/Disposed/PinChanged
    关于SerialPort可以看MSDN或者http://msdn.microsoft.com/zh-cn/library/system.io.ports.serialport(VS.80).aspx
      

  10.   

    这个问题,其实很简单。你到baidu ,google.  c# serialport 就可以 很多的。
      

  11.   

    有没有完整的例子,我做的如下:
     private void Form1_Load(object sender, EventArgs e)
            {
                this.serialPort1.PortName = "COM2";
                this.serialPort1.BaudRate = 9600;
                this.serialPort1.StopBits = System.IO.Ports.StopBits.One;
                this.serialPort1.Parity = System.IO.Ports.Parity.None;
                this.serialPort1.DataBits = 8;
                this.serialPort1.Write(textBox1.Text);
                this.serialPort1.Open();
            }
     private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
            {
                this.textBox2.Text = serialPort1.ReadExisting();
                serialPort1.Close();
            }
    结果运行没有错误,但是看不到运行结果