我在断点调试的时候可以得到返回值,但是在运行时就得不到,我用的串口调试工具检测的.没有返回值,请问高手们,这是怎么回事
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 = "连接成功";
}
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 = "连接成功";
}
试着这样: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 = "连接成功";
}
看有没有返回值。
using Sytem.Threading;
引用 这个命名空间。
可以返回值,但是一运行就死那儿了,其他的都点不动了
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
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();
}
结果运行没有错误,但是看不到运行结果