簡體   English   中英

在VB.net中的代碼中創建串行端口

[英]Creating a Serial Port in code in VB.net

我試圖只使用代碼在VB.net中創建一個串口。 因為我正在創建一個類庫,所以我無法使用內置組件。 我試過實例化一個新的SeialPort()對象,但這似乎還不夠。 我確信有一些簡單的我想念,任何幫助將不勝感激! 謝謝!

PS我應該補充一點,我此時遇到的問題是獲取處理datareceived事件的代碼。 除此之外它可能正在起作用,但由於這個問題我無法分辨。

如果要使用事件,請確保使用'withevents'聲明serialPort對象。 下面的示例將允許您連接到串行端口,並將使用接收的字符串引發事件。

Imports System.Threading

Imports System.IO

Imports System.Text

Imports System.IO.Ports


Public Class clsBarcodeScanner

Public Event ScanDataRecieved(ByVal data As String)
WithEvents comPort As SerialPort

Public Sub Connect()
    Try
        comPort = My.Computer.Ports.OpenSerialPort("COM5", 9600)
    Catch
    End Try
End Sub

Public Sub Disconnect()

    If comPort IsNot Nothing AndAlso comPort.IsOpen Then
        comPort.Close()
    End If

End Sub

Private Sub comPort_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles comPort.DataReceived
    Dim str As String = ""
    If e.EventType = SerialData.Chars Then
        Do
            Dim bytecount As Integer = comPort.BytesToRead

            If bytecount = 0 Then
                Exit Do
            End If
            Dim byteBuffer(bytecount) As Byte


            comPort.Read(byteBuffer, 0, bytecount)
            str = str & System.Text.Encoding.ASCII.GetString(byteBuffer, 0, 1)

        Loop
    End If

    RaiseEvent ScanDataRecieved(str)

End Sub
End Class

我發現這篇文章非常好。

我寫的代碼是:

port = new System.IO.Ports.SerialPort(name, 4800, System.IO.Ports.Parity.None, 8, System.IO.Ports.StopBits.One);
port.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(port_DataReceived);
port.Open();

void port_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
    buffer = port.ReadLine();
    // process line
}

對不起,這是C#,但......

我遇到的唯一問題是如果端口在打開時被丟棄,應用程序似乎在退出時失敗。

謝謝大家的幫助,尤其是關於使用WithEvents關鍵字實例化類的答案。

我發現了一篇非常好的文章,解釋了如何為串口創建一個管理器類。 它還討論了將二進制數據和十六進制數據發送到串行端口。 這非常有幫助。

http://www.dreamincode.net/forums/showtopic37361.htm

我在過去的項目中使用過SerialPort .Net類,我工作得很好。 你真的不需要別的。 檢查控制面板中的硬件設置,確保使用相同的參數實例化類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM