我想發送hex
命令到我的設備,因爲它只能理解hex
。發送字符串到它的十六進制等效
正因爲如此我設法創建一個可以驗證,如果用戶輸入這是一個string
有有效相應hex
功能。問題是here。
因此,通過驗證users input
是否具有相應的hex
等價物,我確信我的系統發送的內容將被我的設備讀取。 By searching我意識到,這需要被轉換爲字節,它指出
使用ASCIIEncoding類convtert字符串字節 的陣列可以傳送。
代碼:
Dim str as String = "12345678"
Dim bytes() as Byte = ASCIIEncoding.ASCII.GetBytes(strNumbers)
' Then Send te bytes to the reader
sp.Write(bytes, 0, bytes.Length)
你並不需要的值隱蔽,以十六進制,在這種情況下HEX是 mearly顯示同樣的事情不同的方式。
我的代碼:
'This is a string with corresponding hex value
Dim msg_cmd as string = "A0038204D7"
'Convert it to byte so my device can read it
Dim process_CMD() As Byte = ASCIIEncoding.ASCII.GetBytes(msg_cmd)
'Send it as bytes
ComPort.Write(process_CMD, 0, process_CMD.Length)
我的輸出:
41 30 30 33 38 32 30 34 44 37
所需的輸出:
A0 03 82 04 D7
是交談的設備將向您介紹一些命令行工具的唯一途徑?沒有一個API可以發送實際字節? – Plutonix
有一個API,我使用[Terminal](https://sites.google.com/site/terminalbpp/)作爲接收器來測試我的系統發送的內容是否真的是十六進制。 –
所以你想要它發送一個字符串的十六進制數字?如果是這樣,你想使用哪種編碼的字符串? ASCII?如果你不想將它作爲字符串發送,那麼你完全困惑,因爲這就是十六進制。十六進制是一個數值的字符串表示。 –