设置serialPort1.ReceivedBytesThreshold = 64;
仅在触发接收字节事件时才生效。现在,我正在使用计时器和serialPort1.Read(temp, 0, bytestoread);
。,并且没有在使用字节接收事件。设置接收字节阈值会对此产生影响。
private void timer1_Tick(object sender, EventArgs e) //creates a timer tick event to read everything in the port when the timer ticks
{
int bytestoread = 0;
timer1.Stop();
try
{
bytestoread = serialPort1.BytesToRead;
}
catch(InvalidOperationException ex)
{
//MessageBox.Show("Serial connection lost. Exception types:" + ex.ToString());
}
if (serialPort1.IsOpen)
{
if(bytestoread != 0)
{
byte[] temp = new byte[bytestoread];
serialPort1.Read(temp, 0, bytestoread);
if(firstRead && (temp[0] == 0xC0 && temp[1] == 0x04 && temp[2] == 0xC0))
{
serialPort1.Write(packageToSend, 0, packageToSend.Length);
}
else
{
tempBuffer.AddRange(temp);
firstRead = false;
btnIndicator.BackColor = Color.Green;
}
}
}
timer1.Start();
}
答案 0 :(得分:1)
查看您发布的代码,我看不到SerialPort.ReceivedBytesThreshold
属性将如何影响您的代码。 Here是.NET库中的文档。它说它控制“ DataReceived
事件发生之前内部输入缓冲区中的字节数”。默认值为1。由于您没有在发布的代码中处理DataReceived
事件,因此更改此事件不会影响整体执行。
这种情况的用例是,如果您有一个用于该事件的事件处理程序,并且只希望在一定数量的字节可用时才触发它。