无法读取serial port里的数据,该怎么解决
无法读取serial port里的数据
private void Form2_Load(object sender, EventArgs e)
{
SerialPort serialPort = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
serialPort.Handshake = Handshake.None;
serialPort.WriteTimeout = 500;
serialPort.ReadTimeout = 500;
// serialPort.PortName = SerialPort.GetPortNames()[0];
serialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
serialPort.Open();
}
private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
string indata = sp.ReadExisting();
Console.WriteLine("Data Received:");
Console.Write(indata);
}
为什么就是读取不到DataReceivedHandler里的数据?
------解决方案--------------------
肯定与什么变量作用域没关系,人家在里面已经对sender进行转换了。请检查三个问题:
1.为什么private static void DataReceivedHandler有 static,去掉看看。
2.Console.WriteLine("Data Received:");
Console.Write(indata);
是不是一闪就过了,你根本没看到,应该加一句Consolse.ReadKey(),停留一下控制台。
3.确认COM1口真的有数据传过来,可用超级终端或串口调试助手先看看。
4.ReceivedBytesThreshold影响事件执行,看看设小点行不行
private void Form2_Load(object sender, EventArgs e)
{
SerialPort serialPort = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
serialPort.Handshake = Handshake.None;
serialPort.WriteTimeout = 500;
serialPort.ReadTimeout = 500;
// serialPort.PortName = SerialPort.GetPortNames()[0];
serialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
serialPort.Open();
}
private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
string indata = sp.ReadExisting();
Console.WriteLine("Data Received:");
Console.Write(indata);
}
为什么就是读取不到DataReceivedHandler里的数据?
------解决方案--------------------
肯定与什么变量作用域没关系,人家在里面已经对sender进行转换了。请检查三个问题:
1.为什么private static void DataReceivedHandler有 static,去掉看看。
2.Console.WriteLine("Data Received:");
Console.Write(indata);
是不是一闪就过了,你根本没看到,应该加一句Consolse.ReadKey(),停留一下控制台。
3.确认COM1口真的有数据传过来,可用超级终端或串口调试助手先看看。
4.ReceivedBytesThreshold影响事件执行,看看设小点行不行