2011-08-26 84 views
0

欲时间可持续读取数据串行端口C#串行端口DATA读挂问题

数据格式上A5 30 31 32 32 0D .......

几乎50bytes收到一个查询

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

请别人分享一个简单的串口代码。

阿什拉夫

+0

告诉我们更多的代码,比如你的循环和串行线 –

回答

0

最有可能你有一个有缺陷的串行端口。尝试将您的设备连接到不同的端口。

+0

我的设备是的设置其实不响应的一些时间查询 –

0

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

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

+0

serialPort1.PortName =(“COM1”); serialPort1.BaudRate = 9600; serialPort1.DataBits = 8; serialPort1.Parity = Parity.None; serialPort1.Open(); (_继续) { DATA = Convert.ToByte(serialPort1.ReadByte()); if(DATA == 13) { byte_count = 0; packet_started = false; _Continue = false; } } serialPort1.Close(); } –

+0

请将您的代码从评论移至问题 – Reniuz

0

你可以试试这个 SerialPort.ReadExisting Method

读取所有立即可用的字节,根据编码,在流和一个串口对象的输入缓冲区两者。

这里是我使用的样本代码,它工作正常,我

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(); 


     } 
    } 
+0

我不是一个好的程序员,所以需要一个完整的代码 –

+0

这是我使用的完整课程。 http://goo.gl/9Y3SZ 我的应用程序是使用串口从GSM调制解调器访问消息。希望这可以帮助。 –