C#串口数据读取挂起问题

时间:2011-08-26 05:35:45

标签: c#

我想在串口

上连续读取DATA

DATA格式为A5 30 31 32 32 ....... 0D

在一次查询中收到差不多50字节

我这样做 DATA = Convert.ToByte(serialPort1.ReadByte()); 行代码,但程序将在两次三次查询后挂起。

请任何人共享一个简单的串口代码。

阿什拉夫

3 个答案:

答案 0 :(得分:0)

您很可能有一个有缺陷的串口。尝试将设备连接到其他端口。

答案 1 :(得分:0)

您对ReadByte()的调用可能只会陷入无限超时,等待更多未通过的数据。

您确定继续接收数据吗?您确定正确设置了波特率,奇偶校验,停止位和握手吗?

答案 2 :(得分:0)

你可以试试这个 SerialPort.ReadExisting Method

根据编码,在SerialPort对象的流和输入缓冲区中读取所有立即可用的字节。

以下是我使用的示例代码,它对我来说很好用

 public static string ReadMessage(int index)
    {
        using (SerialPort sp = new SerialPort(_portNumber))
        {
            sp.Open();
            sp.Write("AT+CMGR=" + index + "\r");

            Thread.Sleep(2000);

            return sp.ReadExisting();


        }
    }