2013-02-28 456 views
0

我一直在開發一個與COM設備(Fluke 123 Scopemeter)通信的程序。當我通過ASCII數據發送時,我沒有任何問題。使用RS232發送字符串和十六進制數據VB.net

我需要做的是發送ASCII和HEX數據的組合。我一直在看這個網站上的許多帖子,但他們似乎專注於發送HEX數據。我需要找到一種發送組合ASCII和HEX的方式 - 實質上,我需要找到一種方法來有效地格式化HEX數據,以便COM設備能夠理解它。

下面是我建立我的字符串的一個例子。它給了我一個錯誤「從字符串PS#0x轉換爲類型'雙'無效」,我假設是因爲我混合兩種數據類型!我希望我做的事情真的很傻,這實際上是!簡單

'Building my command line 
Command = "PS" 
Command += ControlChars.Cr 
Command += "#0 x" 
Command += &H0 + &H2 + &H0 + &H0 + &H0 
Command += " y" 
Command += &H0 + &H1 + &H0 + &H0 

... 

'Writing my command to the COM device 
moRS232.Write(Command) 

任何幫助,任何人都可以給將是非常讚賞

回答

1

訣竅是發送字節,這意味着您的字符串需要轉換爲字節。舉個例子:

Dim buf As New List(Of Byte) 
    buf.AddRange(moRS232.Encoding.GetBytes("PS" & ControlChars.Cr & "#0 x")) 
    buf.AddRange(New Byte() {0, 2, 0, 0, 0}) 
    buf.AddRange(moRS232.Encoding.GetBytes(" y")) 
    buf.AddRange(New Byte() {0, 1, 0, 0}) 
    moRS232.Write(buf.ToArray, 0, buf.Count) 

你有手冊顯示協議嗎?如果你粘貼一個鏈接。

+0

這是我基於我的COM通信的代碼。 [與VB.Net的串行通信](http://www.codeworks.it/net/VBNetRs232.htm) – 2013-03-04 08:53:19

0

你是對的 - 它會得到福祿克非常混亂,如果它得到ASCII和十六進制數據[即使它是可能的發送一種方法]

所以,如果寫入方法需要一個字符串,那麼你需要將你的十六進制命令轉換爲一個字符串以及ASC()/ CHR()命令

相關問題