【发布时间】:2011-12-19 06:55:43
【问题描述】:
我正在尝试处理我的传入缓冲区并确保我在每次传输时都获得了所有 125 字节的数据。我创建了一个字节数组。我怎么知道正在接收 125 字节的数据。我尝试显示字节数,但它显示的数字不同,我不确定它是否是获取接收字节数的正确编码。
这是我的代码:
void datareceived(object sender, SerialDataReceivedEventArgs e)
{
myDelegate d = new myDelegate(update);
listBox1.Invoke(d, new object[] { });
}
public void update()
{
Console.WriteLine("Number of bytes:" + serialPort.BytesToRead); // it shows 155
while (serialPort.BytesToRead > 0)
bBuffer.Add((byte)serialPort.ReadByte());
ProcessBuffer(bBuffer);
}
private void ProcessBuffer(List<byte> bBuffer)
{
// Create a byte array buffer to hold the incoming data
byte[] buffer = bBuffer.ToArray();
// Show the user the incoming data // Display mode
for (int i = 0; i < buffer.Length; i++)
{
listBox1.Items.Add("SP: " + (bBuffer[43].ToString()) + " " + " HR: " + (bBuffer[103].ToString()) + " Time: ");
}
}
【问题讨论】:
-
我试图澄清我的答案(我最初误读了问题),但是:
BytesToRead仅指本地接收缓冲区;它不会告诉你什么是传入的。通常,BytesToRead之类的主要用途是:如果您想决定是处理已经存在的数据还是阻塞(同步),还是执行BeginRead(异步)跨度>
标签: c# multithreading bluetooth serial-port