vb.net 串口数据采集类
发布时间:2020-12-16 22:48:08 所属栏目:大数据 来源:网络整理
导读:Imports System.IO.PortsImports System.Text''' summary''' 通讯仪表为称重仪表''' /summary''' remarks/remarksPublic Class ClsIC Dim WithEvents Rs232 As SerialPort Delegate Sub SeTextCallBack(ByVal InputSting As String) Const conBaudRate As In
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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |