2010-05-17 71 views
0

我試圖通過串口與硬件設備連接。當我使用的軟件,如Portmon,看看他們看起來像這樣的信息:Ascii的二進制文件,並返回

42 21 21 21 21 41 45 21 26 21 29 21 26 59 5F 41 30 21 2B 21 27 
42 21 21 21 21 41 47 21 27 21 28 21 27 59 5D 41 32 21 2A 21 28 

當我運行它們直通十六進制ASCII到轉換器的命令沒有意義。這些消息實際上是否與十六進制不同?我希望看到設備傳遞的消息並使用c#模擬它們。我能做些什麼來準確找出信息是什麼?

+1

你爲什麼認爲這些消息是ASCII編碼的字符串?這實際上可以是任何*數據,例如32位無符號整數,後面是16位有符號整數,後面跟着一個字節,然後是... – 2010-05-17 20:09:23

+1

您是否也配置了端口讀取器,BuadRate,Stop Bits ,數據位f有時會丟失設備的非用戶結果 – adopilot 2010-05-17 20:21:33

回答

5

硬件設備是否指定協議?僅僅因爲它是一個串口連接,並不意味着它必須是ASCII /可讀的英文文本。它可能只是一個字節序列,例如42是一個命令,21212121是該命令的數據。可能是初始化序列或其他。

在這一天結束時,所有你一起工作的是一系列的字節數。它們的含義可以在協議規範中找到,或者如果沒有,您需要手動查看每條命令。向設備發出命令,捕獲輸入,發出另一個命令。

尋找模式。通用初始化?什麼可能是命令?什麼數據通過了?

是的,乏味的,但逆向工程是很少容易。

爲十六進制ASCII碼是這樣的:

乙!!!! AE! &!)! & Y_A0!+!'
乙!!!! AG! '!(!' Y] A2!*!(

這看起來像某種協議給我,有一些初始化序列(B !!!!)和命令(AE和AG),但這只是猜測

0

決定性的是發送數據到計算機,所有的數字數據都有一個和零的形式,如10101001010110010 ...。這樣的位(二進制數字)插入字節,因此,所有的數據由一個字節從而一個字節可以代表任何的2^8個值0至2^8 - 1 = 255,或者,在十六進制表示法中,任何號碼0x00至0xFF。

有時字節表示字母數字(和其他)個字符的字符串,ASCII常常編碼。該數據格式爲每個值從0到127分配一個字符。但是所有數據都不是ASCII編碼的字符。

例如,如果該裝置是光強度傳感器,然後每個字節可以給的光強度爲介於0(漆黑)和255(亮,因爲它得到)。或者,數據可以是位圖圖像。然後數據將從一些明確定義的結構(即thisthis)開始,指定顏色深度(每像素的位數,即或多或少的顏色數量),寬度,高度和壓縮位圖。然後像素數據將開始。通常情況下,字節會變爲BBGGRRBBGGRRBBGGRR,其中第一個BB是第一個像素的藍色強度,第一個GG是第一個像素的綠色強度,第一個RR是第一個像素的紅色強度,第二個BB是藍色強度第二個像素,等等。

事實上,數據可能意味着什麼。這種設備是什麼?它有一個開放的規範嗎?

相關問題