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

解决方案 »

  1.   

    ReadLine是读字符串,可能接收到的不是字符串流数据吧
      

  2.   

    http://bbs.csdn.net/topics/330233058
    10年就有一模一样的问题解决过了
      

  3.   


    sp.ReadLine()是线程阻塞的,机器向串口发送数据然后 串口有数据接收时,sp.ReadLine()才会继续向下执行。
      

  4.   

    因为下位机没有发回车换行来,默认是\n结束,相当于执行ReadTo('\n')
    因为下位机没发\n,所以一直卡在这里等待。
      

  5.   

    串口编程,读数据时会等待数据卡住,要么用线程,要么用事件
    sp.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(sp_DataReceived);