日期:2014-05-17  浏览次数:21059 次

求指教C#串口通信 运行到含ReadLine()的语句就会卡住
实例了一个SerialPort sp

private void AutoRead(object sender, EventArgs e)//自动接收事件响应
        {
            if ((line = sp.ReadLine()) != null)//到这里就不行了
            {
            byte[] readdata = Convert.FromBase64String(line);
Received_Msg = Encoding.Unicode.GetString(readdata);
。。。。}
C# 串口通信 SerialPort

------解决方案--------------------
http://bbs.csdn.net/topics/330233058
10年就有一模一样的问题解决过了
------解决方案--------------------
因为下位机没有发回车换行来,默认是\n结束,相当于执行ReadTo('\n')
因为下位机没发\n,所以一直卡在这里等待。
------解决方案--------------------
串口编程,读数据时会等待数据卡住,要么用线程,要么用事件
sp.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(sp_DataReceived);