Networking 在其他程序中使用serialforwarder数据

Networking 在其他程序中使用serialforwarder数据,networking,port,tinyos,nesc,Networking,Port,Tinyos,Nesc,如何构建或使用它将接收到的数据转发到另一个程序以进行某些处理 如何解析数据并将其用作其他程序(如Matlab、c#或java应用程序)的输入数据。 哪个协议用于解析接收到的数据 最后一个问题:这仅仅是为微尘,这是基站微尘?我可以为任何微尘构建一个吗?你必须彻底阅读串行堆栈…这不是很容易,但它是可以做到的 您可以直接从串行端口读取数据。在这种情况下,您不需要串行转发器。没有什么事情需要处理 例如,如果您想读取发送到PC串行端口的串行消息(usb传感器板就像串行一样工作,因为它们使用usb到串行转换

如何构建或使用它将接收到的数据转发到另一个程序以进行某些处理

如何解析数据并将其用作其他程序(如Matlab、c#或java应用程序)的输入数据。 哪个协议用于解析接收到的数据


最后一个问题:这仅仅是为微尘,这是基站微尘?我可以为任何微尘构建一个吗?

你必须彻底阅读串行堆栈…这不是很容易,但它是可以做到的

您可以直接从串行端口读取数据。在这种情况下,您不需要串行转发器。没有什么事情需要处理

例如,如果您想读取发送到PC串行端口的串行消息(usb传感器板就像串行一样工作,因为它们使用usb到串行转换器,如FTDI芯片)

在C#(与Java等相同)中,您可以读取串行端口中的字节流。您可以解析此字节流以提取tinyos的标准串行消息

虽然它有一些问题,但这在中得到了某种程度的解释,但您应该能够找到这些问题并使您的程序正常工作

正如TEP 113中所述,标准串行数据包类似于:

7e 40 09 00 be ef 05 7d 5d 06 01 02 03 04 05 7e

也就是说,一个数据包以hex
7E
(我相信是126或127)开头,也以
7E
结尾。最后2个字节是数据包的
CRC
。因此,当您遇到
7E
时,您可以在c#程序中从串行端口开始读取,并在到达流中的下一个
7E
时停止读取。中间的一切都是你的包

您必须小心
转义
,也就是说,如果
7E
是数据包内容的一部分,为了避免与起始和结束dilimeter混淆,它将转义到其他内容中…这也在TEP 113中进行了解释

我相信有一些C++代码可以计算CRC,你可以很容易地把它转换成C或java代码。 还要检查
Serial.h
的源代码,其中包含有关如何在TinyOS中形成串行数据包的一些详细信息