【发布时间】:2012-02-29 19:14:26
【问题描述】:
我开发了一个监听串口的小程序。我的程序正在接收数据。问题是,它没有以所需的格式(一个字符串)显示它。我的程序接收的数据有两个字符串,例如:
ID:34242 State:NY
邮编:12345 StreetType:Ave
它按块显示,并且一些数据被传递到下一行:
ID:34242
State:N
Y Zip:12
345 Street
Type:Ave
我已经使用 SerialDataReceive 事件处理程序来接收我的数据,它看起来像这样:
private static void Port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
SerialPort spL = (SerialPort) sender;
int bufSize = 20;
Byte[] dataBuffer = new Byte[bufSize];
Console.WriteLine("Data Received at"+DateTime.Now);
Console.WriteLine(spL.Read(dataBuffer, 0, bufSize));
string s = System.Text.ASCIIEncoding.ASCII.GetString(dataBuffer);
Console.WriteLine(s);
}
如您所见,我将字节检索到缓冲区中,创建一个字节数组来保存数据并使用 ASCII 编码将字节转换为字符串。我尝试使用 ReadLine() 但我的数据没有通过该函数显示。有谁知道将数据解析和格式化为一个字符串的任何其他方法?
【问题讨论】:
-
每条记录的末尾是否有分隔符?打印出数字字节值,并特别注意发送的最后一条记录。数据以连续流的形式出现,但希望协议设计为带有某种终止字符(回车是典型的,但可能不是这种情况,因为 ReadLine 不适合您)。
标签: c# serial-port