2013-04-25 18 views
0

我該如何構建serialforwarder或使用它將接收到的數據轉發到另一個程序來完成某些過程?在另一個程序中使用串行轉發器數據

如何解析數據並將其用作其他程序(如Matlab或c#或java應用程序)的輸入數據。 哪個協議用來解析接收到的數據?

最後一個問題:它只是作爲基站mote的motes?我可以爲任何微粒創建一個嗎?

回答

0

你必須仔細閱讀序列堆棧...它不是很容易,但它的能力。

您可以直接從串口讀取。在這種情況下,你不需要串行轉發器。有幾件事情需要照顧。

例如,如果您想讀取正在發送到PC串行端口的串行消息(usb感應板就像串行一樣工作,因爲它們使用USB轉串口轉換器,比如FTDI芯片)。您可以讀取串行端口中傳入的字節流。在C#中(對於Java等),您可以讀取進入串行端口的字節流。您可以解析這些字節流以提取tinyos的標準串行消息。

雖然它有一些問題,但您應該能夠找到這些問題並使您的程序正常工作,但在TEP #113中有所解釋。

正如它在TEP 113所述,一個標準的串行數據包是一樣的東西:

7E 40 09 00是EF 05 7D 5D 06 01 02 03 04 05 7E

這意味着,一個數據包以十六進制開頭7E(我相信它的126或127),並以7E結束。最後2個字節是數據包的CRC。因此,當您遇到7E時,您可以在c#程序中開始從串口讀取數據,並在到達流中的下一個7E時停止讀取數據。它們之間的一切都將是你的數據包。

你必須小心escaping,即如果7E是你的數據包內容的一部分,不要與開始和結束稀釋劑混淆,它將被轉移到別的東西......這也解釋了TEP 113.

我相信有一些C++代碼來計算CRC,你可以很容易地將它轉換爲C#或Java代碼。

另請參閱Serial.h的源代碼,其中包含有關如何在TinyOS中形成串行數據包的一些詳細信息。

相關問題