2017-07-19 33 views
1

我是使用Visual Basic的新手,剛開始使用該語言進行編碼。 從簡單的編碼,我想嘗試一些有點複雜,如通過串口通信發送和接收數據。我能要經過很多關於它的教程,來到約試圖驗證碼:如何在串行端口上顯示收到的數據

Imports System 
Imports System.Threading 
Imports System.IO.Ports 
Imports System.ComponentModel 

Public Class Form1 

    Dim myPort As Array 
    Delegate Sub SetTextCallback(ByVal [text] As String) 'Added to prevent threading errors during receiving of data 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 

     myPort = IO.Ports.SerialPort.GetPortNames() 
     ComboBox1.Items.AddRange(myPort) 

     Button2.Enabled = False 

    End Sub 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 

     SerialPort1.PortName = ComboBox1.Text 
     SerialPort1.BaudRate = ComboBox2.Text 
     SerialPort1.Open() 

     Button1.Enabled = False 
     Button2.Enabled = True 
     Button3.Enabled = True 

    End Sub 

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 

     SerialPort1.Write(RichTextBox1.Text & vbCr) 'concatenate with \n 

    End Sub 

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click 
     SerialPort1.Close() 
     Button1.Enabled = True 
     Button2.Enabled = False 
     Button3.Enabled = False 
    End Sub 

    Private Sub ReceivedText(ByVal [text] As String) 'input from ReadExisting 
     If Me.RichTextBox2.InvokeRequired Then 
      Dim x As New SetTextCallback(AddressOf ReceivedText) 
      Me.Invoke(x, New Object() {(text)}) 
     Else 
      Me.RichTextBox2.Text &= [text] 'append text 
     End If 
    End Sub 

    Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived 
     ReceivedText(SerialPort1.ReadExisting()) 
    End Sub 
End Class 

Button1的指定用於打開端口,而Button2的和將Button3用於編寫和分別關閉端口。 RichTextBox1是我可以寫入要發送的數據的位置,RichTextBox2是顯示接收到的數據的位置。現在我的問題是每當我點擊按鈕寫入數據的端口沒有任何顯示。我想問如何解決這個問題。

回答

0

無法寫入消息並在串行通信的同一端讀取它。

如果你想「假的」串行通信,從而使您的PC會談本身,你有2個解決方案:

  1. 使用一些nullmodem模擬器幾乎創建通過軟件連接的COM端口對。像com0com這樣的軟件,只是在尋找你想要的東西,但有時候有些棘手的問題在一開始就工作得很好。

  2. 另一個解決方案是具有2個串行端口在計算機(與USB 適配器例如)和發送端口的TRx的銷連接到讀端口的RDX銷 ,和的所述RDX銷發送端口到讀取端口的TRx引腳 。所有其他引腳只有1到1.然後您也可以從一個端口讀取數據並從另一個端口讀取數據。

兩種方法都是一樣的,第一種是通過軟件,第二種是物理方式。

Here你有另一個關於這個問題,你可以得到更多的信息。另外谷歌「僞造串行端口」應該有所幫助。

相關問題