最近看到網路上有人說在VB.net寫Rs232的連線程式好像沒有VB6那麼的人性化,剛好最近有一個案子
也須要用到這個功能,我之前也寫過VB6的確實很方便,只要把參數設一設基本上就沒什麼問題了,只須
寫少許的程式碼,後來換到vb.net的平台一開始好像也像其他人說的怎麼那麼不人性化,其實VB.net寫
Rs232的連結程式才方便,所以我就將教學放上來,其實是怕自已以後忘了,不過真的很方便,我也有上
網找一下其他人寫的範例,但怎麼看都好複雜,明明就很簡單的東西!
(一) 首先在您的軟体介面上拉下這幾個元件。
(二)在來點二下 開啟的按鈕
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
SerialPort1.DataBits = ComboBox1.SelectedItem '設定DataBit的值
Select Case ComboBox2.SelectedIndex '設定StopBits的值
Case 0
SerialPort1.StopBits = StopBits.One
Case 1
SerialPort1.StopBits = StopBits.Two
End Select
SerialPort1.PortName = cmbCOM.SelectedItem.ToString '設定PortName的值
SerialPort1.Open() '開啟SerialPort
End Sub
(三)接下來就是接收值了,這個地方也是最多人會搞錯的地方,其本上上面的程式(步驟二)在SerialPort1屬性設定好也可以,就不用寫上述的程式,不過記得還是要寫SerialPort1.Open()
Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
Dim buff() As Byte
Dim s As String = ""
ReDim buff(SerialPort1.BytesToRead - 1)
SerialPort1.Read(buff, 0, buff.Length)
For i As Integer = 0 To buff.Length - 1
s += buff(i).ToString("X2")
If j < 22 Then
j = j + 1
End If
Next
TextBox2.Text = TextBox2.Text & s & vbCrLf
End Sub
這樣就可以接受Rs232輸出的資料
以上的程式就可以完成了!
值班美女

請問參數"j"是做什麼用的?
有範例程式可以下載嗎?
沒有範例可以下戴耶!不過你照上面的方式做,程式一定會動
恩恩~謝謝 我已經解決了問題 但我發現我能把字串輸入進去 但 我發現不能輸入Enter 指令進去 想請教一下Enter 指令要入和一起輸入進去
我看到了~謝謝了 & vbCrLf
*****
*****
*****
*****
您好,請問元件要拉那些
就你看到的那些阿!沒有比較特別的 SerialPort要記得拉
高手...真的是好手...感謝指導教學
大家一起研究吧!
請問參數"j"是做什麼用的?
If j < 22 Then j = j + 1 End If 這一段其實不必要,你可以直接把這一段給註解掉
程式是會動沒有錯... 但輸出的字串怎麼都是沒規則的數字? 我的英文字母都轉不過來
應該是你的來源設備有加密或是什麼之類的吧,建議你先用 其他的軟體試試看
我用tera term看過,都是正常的@@ 可是用程式就都是亂碼了... 不知道是不是資料字串轉換的問題??
那應該就是字串轉換的問題啦!
請問: SerialPort1.PortName = cmbCOM.SelectedItem.ToString '設定PortName的值 裡的cmbCOM未宣告? 這該怎麼解決?
SerialPort1.PortName ="COM1" cmbCOM是下拉式選單的名稱…XD
*****
*****
跨執行緒作業無效: 存取控制項 'TextBox1' 時所使用的執行緒與建立控制項的執行緒不同。 請問一下唷~~這個要怎麼處理才好?
要利用委派的方式,你可以用google 搜尋一下 vb.net thread 委派
我還是不會使用委派耶...可以請你寫一次看看嗎?
真不好意思你可能要自已上網找一下資料了, 因為我已經許久沒用Windows的系統了,所以 手邊也沒裝Visual studio的機器
感謝分享!
不客氣
請問一下如果要給機器一組碼,讓機器知到要他回讀一組碼的話 這一組我該怎麻寫 我這組是這樣格式 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 內含CRC跟檢查碼
不太懂你的意思耶!
開啟不存在的com的意外處理 要怎麼寫? 另外可以寫一段發送訊息得指令嗎?
你可以試試 Try...Catch 不懂你所謂的發送訊息的指令是什麼意思
TextBox2.Text = TextBox2.Text & s & vbCrLf 請問一下,這一段的程式碼是什麼意ˋ思?
就是把所有的字串加起來,最後vbCrLf是斷行
您好, 之前有一些人留言提到"發送訊息得指令",我想應該是指"PC端送資料給周邊設備的程式碼要怎麼寫",因為您的部落格只有Received(),沒有Send(),
SerialPort.Write 方法 (Byte[], Int32, Int32) 你看以參考一下msdn https://msdn.microsoft.com/zh-tw/library/ms143551.aspx
.ToString("X2") 是什麼作用 ?
轉16進位