這次換成使用 VB.NET 來撰寫程式與 SDC36 進行通訊,其他詳細的通訊說明可以參考下列文章

Labview:使用 CPL 協定與 SDC36 控制器進行通訊,讀取控制器數據

,在 VB.NET 撰寫與 RS-232 進行通訊的程式,可以很方便的使用 .Net 提供的 SerialPort Class

來撰寫即可。

 

程式畫面:

image

 

程式碼:

Imports System.IO.Ports
Imports System.Text
 
Public Class Form1
    Dim port As New SerialPort("COM3", 9600, Parity.Even, 8, StopBits.One)
    Delegate Sub SetTextCallback(ByVal str As String)
    Private Sub btnGetData_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGetData.Click
        AddHandler port.DataReceived, AddressOf DataReceived
        port.RtsEnable = True
        port.Open()
        port.Write(New Byte() {&H2, &H30, &H31, &H30, &H30, &H58, &H52, &H53, &H2C, &H39, &H31, &H30, &H31, &H57, &H2C, &H31, &H3, &H39, &H32, &HD, &HA}, 0, 21)
    End Sub
 
    Private Sub DataReceived(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs)
        Dim buffer(port.BytesToRead) As Byte
        Dim str As String
        port.Read(buffer, 0, port.BytesToRead)
        str = BitConverter.ToString(buffer).Replace("-", " ") & vbCrLf
        str += New ASCIIEncoding().GetString(buffer)
        SetText(str)
        port.Close()
    End Sub
 
    Private Sub SetText(ByVal str As String)
        If Me.display.InvokeRequired Then
            Dim d As New SetTextCallback(AddressOf SetText)
            Me.Invoke(d, New Object() {str})
        Else
            Me.display.Text = str
        End If
    End Sub
 
End Class

程式碼下載:comport.zip

 

在程式撰寫中,如果需要進行監控的話,可以使用 Access Port 這套不錯用的軟體,而 SerialPort Terminal 這套軟體則可以讓你用來進行通訊測試,且還提供原始碼(C#)可以下載喔。

iammic 發表在 痞客邦 PIXNET 留言(0) 人氣()