2012-03-04 84 views
0

我有一個RS232總線上的EMS總線,所有塊都用BREAK(0x00)分開的協議。在協議可靠(RS232)中識別BREAK

數據從設備連續發送。

我的問題是,我無法分開這塊可靠。

在一個塊中有時是0x00(但這不是中斷)。

我知道每個塊都以0x01,0x02或0x03開頭,並以CRC + BREAK結尾。

有沒有一種很好的方法來拆分C#中的塊?

謝謝。

+0

你不能用Break實現一個協議。它是一個異步中斷信號,它在大多數UART設計中繞過了FIFO。和設備驅動程序輸入緩衝區。您需要取消該計劃。 – 2012-03-04 19:01:19

回答

0

你的意思是一個RS232中斷,我們只是一個零字節被髮送?

這聽起來像你在談論一個零字節,在這種情況下,你需要告訴數據字節和終止字節之間的區別。

在這種情況下,您需要查看識別數據包的功能。如果數據包始終長度相同,則可以輕鬆判斷零是否是終止符。否則你需要解析數據包中的數據才能解決問題。它們是否包含任何類型的長度信息?或者,您可能需要逐字節地讀取數據,並解析它以確定每個字節的含義,從而確定數據包的結束位置。

如果你不能這樣做,那麼你沒有協議,你有隨機的不可預知的數據。任何協議都必須允許某種方式來檢測和拆分數據包。