我是業余的,有個串口通訊的問題請求大佬解答下,按照通訊協議,需要發送給儀器的串口命令為:stx+"00541 "+etx+"13"+CR+LF,我將此字串
我將比字串含控制符轉為16進制ascii碼表示
02 30 30 35 34 31 20 20 20 03 31 33 0D 0A在串口助手中使用16進制發送,儀器回應成功,
那么問題來了,如果我以ascii方式怎么表示呢?
我用vb.net寫的程式,串口serialport控制元件中使用write()方法發送字串是沒有回應的,是不是我需要在程式中將比字串轉成16進制的位元組陣列呢,該如何轉呢?
請大佬不吝賜教!
uj5u.com熱心網友回復:
將整數數、字串轉換為Byte[]的方法:BitConverter.GetByte(資料或字串); 這里的字串默認是Unicode編碼。
//用gb2312編碼轉換為byte[]
System.Text.Encoding.GetEncoding(936).GetBytes("字符內容");
uj5u.com熱心網友回復:
或者這么問吧,我通過串口通訊控制元件serialport,怎么把這14個字串發給設備(4個控制符,3個空格) stx+"00541 "+etx+"13"+CR+LF,代碼如下,儀器沒有回應通過上面串口除錯工具,輸入上述16進制碼可以通訊:
dim strSendStr string
strSendStr = Chr(2) & “00541 ”&“13” & vbCr & vbLf
serialport1.write(strSendStr )'發送字串
uj5u.com熱心網友回復:

serialport1.write(strSendStr ),好像字串根本就沒發出去,因為發完之后我用一個變數接收發送快取區的位元組,發現還是0,程式整個運行完,也沒報例外,這是為什么?有大佬知道?
uj5u.com熱心網友回復:
樓主設定serialport的屬性了嗎?
串口助手的串口設定是9600, 7, E, 1。
uj5u.com熱心網友回復:
謝謝熱心的網友,已經解決了,是代碼埠選擇錯誤了,難怪沒報錯,也發送不成功轉載請註明出處,本文鏈接:https://www.uj5u.com/net/77789.html
標籤:VB.NET
上一篇:缺少toolbar控制元件。
