2012-05-03 40 views
0

寫一個帶符號字節到串行端口我需要能夠符號字節寫入到使用我怎樣才能在VB

SerialPort.Write()方法的串行端口,不同之處在於方法只需要字節[]數組的無符號字節,我如何寫一個有符號的字節到串口?

爲了什麼我工作的特定命令從-1700值1700

感謝

做噩夢

+1

有符號或無符號的字節不支持您提到的值範圍。有符號的字節代表-127到128,而無符號的字節代表0到256. –

+0

對不起,我將把這個值分成兩個單獨的字節 – codingNightmares

回答

0

串行通信信道沒有符號或無符號,只是一個概念電線上1和0的概念。它是您的操作系統(並最終是您的CPU架構),在發送方和接收方都爲這些1和0分配一個數字值。

您聲明的值範圍不能用字節表示(根據我的評論和您的回覆)。您需要了解接收設備對於給定號碼(對方設備big endian or little endian?)預期的位模式,然後您可以發送適當的byte []序列來表示要傳輸的號碼。

如果兩個設備有相同的字節順序,你可以設置的短數組,然後複製到字節數組是這樣的:

short[] sdata = new short[] { 1, -1 }; 
byte[] bdata = new byte[sdata.Length * 2]; 

Buffer.BlockCopy(sdata, 0, bdata, 0, bdata.Length); 

然而,可以肯定的和測試值的範圍。特別是如果您正在處理嵌入式設備,數字編碼可能與英特爾個人電腦上的數字編碼不完全相同。

+0

謝謝你這個Eric,這對我來說很重要。當你說測試範圍時,你的意思是輸入的值在設備指定的範圍內? – codingNightmares

+0

我的意思是從測試應用程序發送-1700,並確保另一端的設備響應,就好像它有一個-1700。重複1700和0,以及-127..128範圍內的正面和負面測試編號,以確保數字編碼的行爲與您的預期相符。 –