vb.net 串口数据采集类

 
Imports System.IO.Ports
Imports System.Text
''' <summary>
'''  通讯仪表为称重仪表
''' </summary>
''' <remarks></remarks>
Public Class ClsIC
    Dim WithEvents Rs232 As SerialPort
    Delegate Sub SeTextCallBack(ByVal InputSting As String)

    Const conBaudRate As Integer = 19200
    Const conParity As IO.Ports.Parity = Parity.None
    Const conDatabit As Integer = 8
    Const conStopbit As IO.Ports.StopBits = StopBits.One
    Const conPortName As String = "COM3"

    Private mBaudRate As Integer
    Private mParity As IO.Ports.Parity
    Private mDataBit As Integer
    Private mStopBit As IO.Ports.StopBits
    Private mPortName As String

    Private mvarValue As Integer

    Public Enum YiBiaoType
        YuanYangGu = 1       '托利多仪表
        GM = 2               '杰曼 
        JinZhong = 3         '金钟

    End Enum

    ''' <summary>
    ''' 返回重量值
    ''' </summary>
    ''' <value>只读属性</value>
    ''' <returns>WeightValue</returns>
    ''' <remarks></remarks>
    ReadOnly Property WeightValue() As Integer
        Get
            Return mvarValue
        End Get
    End Property

    ''' <summary>
    ''' 设置或返回仪表类型
    ''' </summary>
    ''' <remarks></remarks>
    Private mvarYibiaoType As Integer = YiBiaoType.YuanYangGu
    Public Property Type() As Integer
        Get
            Return mvarYibiaoType
        End Get
        Set(ByVal value As Integer)
            mvarYibiaoType = value
        End Set
    End Property

    ''' <summary>
    ''' 初始化串口,默认19200,8,n,1,COM3
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub New()

        mBaudRate = conBaudRate
        mParity = conParity
        mDataBit = conDatabit
        mStopBit = conStopbit
        mPortName = conPortName

    End Sub
    ''' <summary>
    ''' 初始化串口
    ''' </summary>
    ''' <param name="pPorts"></param>
    ''' <param name="pBaudRate"></param>
    ''' <param name="pParity"></param>
    ''' <param name="pDatabit"></param>
    ''' <param name="pStopbit"></param>
    ''' <remarks></remarks>
    Public Sub New(ByVal pPorts As String, ByVal pBaudRate As Integer, ByVal pParity As IO.Ports.Parity, ByVal pDatabit As Integer, ByVal pStopbit As IO.Ports.StopBits)

        mBaudRate = pBaudRate
        mParity = pParity
        mDataBit = pDatabit
        mStopBit = pStopbit
        mPortName = pPorts

    End Sub
    ''' <summary>
    ''' 打开串口,可以指定阀值,默认1
    ''' </summary>
    ''' <param name="pReadbyteThrd"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function Open(Optional ByVal pReadbyteThrd As Integer = 1) As Boolean

        Try
            Rs232 = New IO.Ports.SerialPort(mPortName, mBaudRate, mParity, mDataBit, mStopBit)
            Rs232.Encoding = Encoding.ASCII
            If Not Rs232.IsOpen Then
                Rs232.Open()
                Rs232.ReceivedBytesThreshold = pReadbyteThrd
                Return True
            End If
        Catch ex As Exception
            Throw New Exception(ex.Message & "Open Com error!")
            Return False
        End Try

    End Function

    ''' <summary>
    ''' 接收数据
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Private Sub Rs232_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles Rs232.DataReceived

        Try

            If e.EventType <> SerialData.Chars Then Exit Sub
            Dim Indata As String = Rs232.ReadTo(vbCr)

            If mvarYibiaoType = YiBiaoType.YuanYangGu Then
                mvarValue = Val(Indata.Substring(4, 6))       '将收到托利多仪表的数据入接收文字框中
            ElseIf mvarYibiaoType = YiBiaoType.GM Then
                mvarValue = Val(Indata.Substring(4, 7))       '将收到杰曼仪表的数据入接收文字框中
            ElseIf mvarYibiaoType = YiBiaoType.JinZhong Then    '将收到金钟仪表的数据入接收文字框中
            End If
        Catch ex As Exception
            MsgBox(ex.Message & "Read Com error!")
        End Try

    End Sub
    ''' <summary>
    ''' 关闭串口
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub Close()

        Try
            If Rs232 IsNot Nothing OrElse Rs232.IsOpen Then
                Rs232.Close()
                Rs232.Dispose()
            End If

        Catch ex As Exception
            Throw New Exception(ex.Message & "Close com Error!")
        End Try

    End Sub

    Public Function Write(ByVal Writestr As String) As Boolean
        Try
            Rs232.Write(Writestr)
            Return True
        Catch ex As Exception
            Return False
            MsgBox(ex.Message & "Write Com error!")
        End Try
    End Function

  End Class

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值