新手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
展开
 我来答
色浪袭人
2014-06-10 · 超过22用户采纳过TA的回答
知道答主
回答量:70
采纳率:0%
帮助的人:51.8万
展开全部
获取串口中的数据,可以这样试试

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(),自然会出现异常
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式