欲时间可持续读取数据串行端口C#串行端口DATA读挂问题
数据格式上A5 30 31 32 32 0D .......
几乎50bytes收到一个查询
我这样做 DATA = Convert.ToByte(serialPort1.ReadByte()); 行代码,但程序会在两次查询后挂起。
请别人分享一个简单的串口代码。
阿什拉夫
欲时间可持续读取数据串行端口C#串行端口DATA读挂问题
数据格式上A5 30 31 32 32 0D .......
几乎50bytes收到一个查询
我这样做 DATA = Convert.ToByte(serialPort1.ReadByte()); 行代码,但程序会在两次查询后挂起。
请别人分享一个简单的串口代码。
阿什拉夫
最有可能你有一个有缺陷的串行端口。尝试将您的设备连接到不同的端口。
我的设备是的设置其实不响应的一些时间查询 –
您对ReadByte()的调用可能会陷入无限超时,等待更多未通过的数据。
您确定您会继续接收数据吗?你确定你正确设置了波特率,奇偶校验,停止位和握手吗?
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(); } –
请将您的代码从评论移至问题 – Reniuz
你可以试试这个 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();
}
}
我不是一个好的程序员,所以需要一个完整的代码 –
这是我使用的完整课程。 http://goo.gl/9Y3SZ 我的应用程序是使用串口从GSM调制解调器访问消息。希望这可以帮助。 –
告诉我们更多的代码,比如你的循环和串行线 –