问题描述
我使用带有 Zigbee 的 Arduino 来发送来自传感器的数据,使用带有另一个 Zigbee 的 RaspBerry Pi 来读取 10 字节的数据,其中包含一个头部和一个停止点。 我在 Windows 10 IoT 上使用 VS 2019 进行编码。 我的问题是我的 RPI 读取数据但越来越晚,所以我不再实时了。 我知道问题来自于迫使我阅读每条消息的缓冲区,我愿意改变它。 我只想读取缓冲区中的最后一条消息,但我不知道该怎么做。 我试图比发送数据更快地读取但错误,我还搜索了如何清空缓冲区但我没有找到。 谢谢您的帮助, 罗曼。
private async Task<ZigBeeCommResult> Read()
{
var retvalue = new ZigBeeCommResult();
try
{
_dataReader = new DataReader(_zbCoordinator.InputStream);
var numBytesRecvd = await _dataReader.LoadAsync(10);
byte[] data = new byte[10];
retvalue.TextResult = "";
Debug.WriteLine(_dataReader.UnconsumedBufferLength);
while (_dataReader.UnconsumedBufferLength > 0)
{
for (uint j = 0; j < 10; j++)
{
data[j] = _dataReader.ReadByte();
//Debug.WriteLine(data[j]);
retvalue.TextResult += data[j];
}
}
txtHeader.Text = retvalue.TextResult;
}
catch (Exception ex)
{
retvalue.IsSuccessful = false;
retvalue.TextResult = ex.Message;
}
finally
{
if (_dataReader != null)
{
_dataReader.DetachStream();
_dataReader = null;
}
}
return retvalue;
}
和
public void dispatcherTimerReaderSetup()
{
// configure dispatcher
_dispatcherTimerReader = new dispatcherTimer();
_dispatcherTimerReader.Tick += dispatcherTimerReader_Tick;
_dispatcherTimerReader.Interval = new TimeSpan(0,500);
_dispatcherTimerReader.Start();
}
public void dispatcherTimerReader_Tick(object sender,object e)
{
Read();
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)