检测中断是串行数据帧的开始(Windows IoT,串行设备)

时间:2016-07-21 09:14:25

标签: c++ uwp serial-communication windows-10-iot-core windowsiot

我需要在UWP应用程序(C ++ / CX)中通过串行(FTDI)捕获数据帧的开头。

此帧的开头仅由中断信号决定。

通过在“一种循环”中调用dataReader中的函数LoadAsync / ReadBuffer / ReadBytes, 就像在Windows IOT git中可用的SerialSample一样,我能够检索完整的帧,但是我找不到第一个字节。

例如:

我想要的:[0] [1] [2] [...] [n-2] [n-1] [n]

得到的结果:[55] [56] [...] [n-1] [n] [0] [1] [...] [54]

或者如果我重新启动程序:[22] [23] [...] [n-1] [n] [0] [1] [...] [21]

开始只取决于我何时启动通信。 此外,帧中字节的数字“n”不是预先知道的。

我尝试使用PinChanged事件来检测中断信号并确实检测到它们, 但仅限于异步操作“LoadAsync”。

返回此函数后,数据被加载,我无法准确知道中断发生在哪个字节之间。

我还尝试逐字节加载数据,然后当检测到中断时,我考虑帧的开始。

不幸的是,这个事件也是异步的,似乎有一点延迟:我有一个偏移,这个在我的第一个“trig”期间似乎总是一样。

加载几帧后,出现随机偏移(我不知道为什么......)。

此外,如果我想在N帧之后触发,则偏移量与之前不同,所以我不能只是“修复我收到的字节的索引”。

总结一下:     有没有办法确切地知道哪个字节发生中断?

感谢。

0 个答案:

没有答案