新手C#串口调试问题,能够发送,但是不能接收到数据。请大侠们指导。
我用虚拟串口模拟两个串口,COM1和COM2。当我发送数据从COM1中发送数据的时候,在voidSerialPort2_DataReceived(objectsender...
我用虚拟串口模拟两个串口,COM1和COM2。当我发送数据从COM1中发送数据的时候,在
void SerialPort2_DataReceived(object sender, SerialDataReceivedEventArgs e)事件中能够响应,但是执行到 byte[] data = Convert.FromBase64String(serialPort1.ReadLine());这句就直接跳到catch这里去了。和下面的这个帖子问题一样,但是没有说是怎么解决的。
http://bbs.csdn.net/topics/320019152 展开
void SerialPort2_DataReceived(object sender, SerialDataReceivedEventArgs e)事件中能够响应,但是执行到 byte[] data = Convert.FromBase64String(serialPort1.ReadLine());这句就直接跳到catch这里去了。和下面的这个帖子问题一样,但是没有说是怎么解决的。
http://bbs.csdn.net/topics/320019152 展开
1个回答
展开全部
获取串口中的数据,可以这样试试
int bytes = serialPort1.BytesToRead; //读取数据长度
byte[] buffer = new byte[bytes];
serialPort1.Read(buffer, 0, bytes); //读取串口数据
serialPort1.ReadLine()是输入缓冲区中直到首次出现NewLine值,出现异常参见csdn
int bytes = serialPort1.BytesToRead; //读取数据长度
byte[] buffer = new byte[bytes];
serialPort1.Read(buffer, 0, bytes); //读取串口数据
serialPort1.ReadLine()是输入缓冲区中直到首次出现NewLine值,出现异常参见csdn
追答
对于粘贴出的代码:
首先确认使用的串口是SerialPort2还是SerialPort1,截图中你调用BytesToRead使用的是SerialPort1,而定义的响应函数名为serialPort2_DataReceived,是不是串口调用出现了问题; 其次串口serialPort2的响应,定义为
this.serialPort2.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(this.serialPort2_DataReceived);
其声明为
private void serialPort2_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
依据你贴出的程序来看,明明是串口2的响应函数,你却用串口1调用BytesToRead(),自然会出现异常
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询