⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 module1.vb

📁 实现485串口通信的一个小例子!能读取我们公司的二次压降检测仪的数据。
💻 VB
📖 第 1 页 / 共 2 页
字号:
        End Sub
#Region "recivedata"
        Public Shared Sub SynReceiveData()
            System.Threading.Thread.Sleep(0)
            _serialPort.ReadTimeout = 1000
            Try
                'Dim firstByte As Byte
                'Dim bytesRead As Integer
                'firstByte = Convert.ToByte(_serialPort.ReadByte())
                'bytesRead = _serialPort.BytesToRead
                '_buffer = New Byte(20) {}
                '_buffer(0) = firstByte
                For i = 0 To _buffer.Length - 1
                    _buffer(i) = Convert.ToByte(_serialPort.ReadByte())
                Next
                Console.WriteLine("Receive datas success! ")
            Catch ex As TimeoutException
                Console.WriteLine("Recieve datas timeout error!")
                'do timeout error

            End Try
        End Sub
#End Region
#Region "readpt"
        Public Shared Sub readport()
            Dim SQL As String
            Dim conn As New Data.SqlClient.SqlConnection
            Dim cmd As Data.SqlClient.SqlCommand
            Dim rd As Data.SqlClient.SqlDataReader
            Dim ds As New Data.DataSet
            conn.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings("connectionString").ConnectionString
            SQL = "select * from device"
            Try
                conn.Open()
            Catch ex As SqlClient.SqlException
                Console.WriteLine(ex.Message)
            End Try
            '从设备表中获取设备的序列号数组
            cmd = New Data.SqlClient.SqlCommand(SQL, conn)
            rd = cmd.ExecuteReader()
            Dim rcount As Integer
            rcount = 0
            Dim did() As Integer
            Dim dad() As Integer
            did = New Integer(20) {}
            dad = New Integer(20) {}
            While rd.Read()
                did(rcount) = rd.Item(0)
                dad(rcount) = rd.Item(3)
                rcount = rcount + 1
            End While
            rd.Close()
            '根据设备的ID号更新实时数据表中对应ID号的行的数据
            Dim k As Integer
            For k = 0 To rcount - 1
                _wbuffer0(1) = _wbuffer0(1) + Convert.ToInt32(dad(k)) - 1
                _wbuffer0(12) = _wbuffer0(12) + Convert.ToInt32(dad(k)) - 1
                _wbuffer1(1) = _wbuffer1(1) + Convert.ToInt32(dad(k)) - 1
                _wbuffer1(12) = _wbuffer1(12) + Convert.ToInt32(dad(k)) - 1
                _wbuffer2(1) = _wbuffer2(1) + Convert.ToInt32(dad(k)) - 1
                _wbuffer2(12) = _wbuffer2(12) + Convert.ToInt32(dad(k)) - 1
                _wbuffer3(1) = _wbuffer3(1) + Convert.ToInt32(dad(k)) - 1
                _wbuffer3(12) = _wbuffer3(12) + Convert.ToInt32(dad(k)) - 1
                _wbuffer4(1) = _wbuffer4(1) + Convert.ToInt32(dad(k)) - 1
                _wbuffer4(12) = _wbuffer4(12) + Convert.ToInt32(dad(k)) - 1
                _wbuffer5(1) = _wbuffer5(1) + Convert.ToInt32(dad(k)) - 1
                _wbuffer5(12) = _wbuffer5(12) + Convert.ToInt32(dad(k)) - 1
                _wbuffer6(1) = _wbuffer6(1) + Convert.ToInt32(dad(k)) - 1
                _wbuffer6(12) = _wbuffer6(12) + Convert.ToInt32(dad(k)) - 1
                _wbuffer7(1) = _wbuffer7(1) + Convert.ToInt32(dad(k)) - 1
                _wbuffer7(12) = _wbuffer7(12) + Convert.ToInt32(dad(k)) - 1
                _wbuffer8(1) = _wbuffer8(1) + Convert.ToInt32(dad(k)) - 1
                _wbuffer8(12) = _wbuffer8(12) + Convert.ToInt32(dad(k)) - 1
                Dim _date As DateTime
                Dim _dat As String
                Dim da As New Data.SqlClient.SqlDataAdapter("select * from SecPTS where d_Id='" & Convert.ToInt32(did(k)) & "'", conn)
                Dim dab As New Data.SqlClient.SqlCommandBuilder(da)
                da.Fill(ds, "TempSecPTS")
                _serialPort.Open()
                SendBytesData(_wbuffer0)
                '开启接收数据线程
                _buffer = New Byte(21) {}
                ReceiveData()
                _serialPort.Close()
                _dat = Hex(_buffer(17)) + "-" + ((_buffer(16) >> 4) And 1).ToString + (_buffer(16) And 15).ToString + "-" + Hex(_buffer(15)) + " " + Hex(_buffer(14)) + ":" + Hex(_buffer(13)) + ":" + Hex(_buffer(12))
                Try
                    _date = DateTime.Parse(_dat)
                Catch
                    Console.WriteLine("Read datetime error!")
                End Try
                'drow = ds.Tables("TempSecPTS").Rows(0)
                ds.Tables("TempSecPTS").Rows(0).Item(0) = _date
                _serialPort.Open()
                SendBytesData(_wbuffer1)
                '开启接收数据线程
                _buffer = New Byte(51) {}
                ReceiveData()
                _serialPort.Close()
                For i = 0 To 8
                    ds.Tables("TempSecPTS").Rows(0).Item(i + 2) = CInt(_buffer(12 + i * 4) And 15) / 100000 + CInt(_buffer(12 + i * 4) >> 4) / 10000 _
                                + CInt(_buffer(13 + i * 4) And 15) / 1000 + CInt(_buffer(13 + i * 4) >> 4) / 100 _
                                + CInt(_buffer(14 + i * 4) And 15) / 10 + CInt(_buffer(14 + i * 4) >> 4) _
                                + CInt(_buffer(15 + i * 4) And 15) * 10 + CInt(_buffer(15 + i * 4) >> 4) * 100
                Next
                _serialPort.Open()
                SendBytesData(_wbuffer2)
                '开启接收数据线程
                _buffer = New Byte(39) {}
                ReceiveData()
                _serialPort.Close()
                For i = 0 To 5
                    ds.Tables("TempSecPTS").Rows(0).Item(i + 11) = CInt(_buffer(12 + i * 4) And 15) / 100 + CInt(_buffer(12 + i * 4) >> 4) / 10 _
                                 + CInt(_buffer(13 + i * 4) And 15) + CInt(_buffer(13 + i * 4) >> 4) * 10 _
                                 + CInt(_buffer(14 + i * 4) And 15) * 100 + CInt(_buffer(14 + i * 4) >> 4) * 1000 _
                                 + CInt(_buffer(15 + i * 4) And 15) * 10000 + CInt(_buffer(15 + i * 4) >> 4) * 100000
                Next
                _serialPort.Open()
                SendBytesData(_wbuffer3)
                '开启接收数据线程
                _buffer = New Byte(63) {}
                ReceiveData()
                _serialPort.Close()
                For i = 0 To 11
                    ds.Tables("TempSecPTS").Rows(0).Item(i + 17) = (CInt(_buffer(12 + i * 4)) _
                                 + CInt(_buffer(13 + i * 4)) * 256 _
                                 + CInt(_buffer(14 + i * 4)) * 256 * 256 _
                                 + CInt(_buffer(15 + i * 4)) * 256 * 256 * 256) / 100000
                Next
                _serialPort.Open()
                SendBytesData(_wbuffer4)
                '开启接收数据线程
                _buffer = New Byte(39) {}
                ReceiveData()
                _serialPort.Close()
                For i = 0 To 5
                    ds.Tables("TempSecPTS").Rows(0).Item(i + 29) = (CInt(_buffer(12 + i * 4)) _
                                 + CInt(_buffer(13 + i * 4)) * 256 _
                                 + CInt(_buffer(14 + i * 4)) * 256 * 256 _
                                 + CInt(_buffer(15 + i * 4)) * 256 * 256 * 256) / 100
                Next
                _serialPort.Open()
                SendBytesData(_wbuffer5)
                '开启接收数据线程
                _buffer = New Byte(33) {}
                ReceiveData()
                _serialPort.Close()
                For i = 0 To 8
                    ds.Tables("TempSecPTS").Rows(0).Item(i + 35) = (CInt(_buffer(12 + i * 2)) _
                                 + CInt(_buffer(13 + i * 2)) * 256)
                Next
                _serialPort.Open()
                SendBytesData(_wbuffer6)
                '开启接收数据线程
                _buffer = New Byte(27) {}
                ReceiveData()
                _serialPort.Close()
                For i = 0 To 5
                    ds.Tables("TempSecPTS").Rows(0).Item(i + 44) = (CInt(_buffer(12 + i * 2)) _
                                 + CInt(_buffer(13 + i * 2)) * 256)
                Next
                _serialPort.Open()
                SendBytesData(_wbuffer7)
                '开启接收数据线程
                _buffer = New Byte(51) {}
                ReceiveData()
                _serialPort.Close()
                For i = 0 To 8
                    ds.Tables("TempSecPTS").Rows(0).Item(i + 50) = CInt(_buffer(12 + i * 4)) _
                                 + CInt(_buffer(13 + i * 4)) * 256 _
                                 + CInt(_buffer(14 + i * 4)) * 256 * 256 _
                                 + CInt(_buffer(15 + i * 4)) * 256 * 256 * 256
                Next
                _serialPort.Open()
                SendBytesData(_wbuffer8)
                '开启接收数据线程
                _buffer = New Byte(39) {}
                ReceiveData()
                _serialPort.Close()
                For i = 0 To 5
                    ds.Tables("TempSecPTS").Rows(0).Item(i + 59) = CInt(_buffer(12 + i * 4)) _
                                 + CInt(_buffer(13 + i * 4)) * 256 _
                                 + CInt(_buffer(14 + i * 4)) * 256 * 256 _
                                 + CInt(_buffer(15 + i * 4)) * 256 * 256 * 256
                Next
                ds.Tables("TempSecPTS").Rows(0).Item(65) = 1
                Try

                    'ds.Tables("strUserInfo").AcceptChanges
                    da.Update(ds, "TempSecPTS")
                Catch
                    Console.WriteLine("Write current datas error!")
                End Try
                ds.Clear()
                _wbuffer0 = New Byte() {(104), (1), (0), (0), (0), (0), (0), (104), (1), (2), (16), (80), (52), (22)}
                _wbuffer1 = New Byte() {(104), (1), (0), (0), (0), (0), (0), (104), (1), (2), (16), (82), (54), (22)}
                _wbuffer2 = New Byte() {(104), (1), (0), (0), (0), (0), (0), (104), (1), (2), (17), (82), (55), (22)}
                _wbuffer3 = New Byte() {(104), (1), (0), (0), (0), (0), (0), (104), (1), (2), (16), (96), (68), (22)}
                _wbuffer4 = New Byte() {(104), (1), (0), (0), (0), (0), (0), (104), (1), (2), (17), (96), (69), (22)}
                _wbuffer5 = New Byte() {(104), (1), (0), (0), (0), (0), (0), (104), (1), (2), (16), (97), (69), (22)}
                _wbuffer6 = New Byte() {(104), (1), (0), (0), (0), (0), (0), (104), (1), (2), (17), (97), (70), (22)}
                _wbuffer7 = New Byte() {(104), (1), (0), (0), (0), (0), (0), (104), (1), (2), (16), (98), (70), (22)}
                _wbuffer8 = New Byte() {(104), (1), (0), (0), (0), (0), (0), (104), (1), (2), (17), (98), (71), (22)}
            Next
            conn.Close()
            conn.Dispose()
        End Sub
#End Region
        Public Shared Function SetPortName(ByVal defaultPortName As String) As String
            Dim newPortName As String

            Console.WriteLine("Available Ports:")
            Dim s As String
            For Each s In IO.Ports.SerialPort.GetPortNames()
                Console.WriteLine(" {0}", s)
            Next s

            Console.Write("COM port({0}): ", defaultPortName)
            newPortName = Console.ReadLine()

            If newPortName = "" Then
                newPortName = defaultPortName
            End If
            Return newPortName
        End Function

        Public Shared Function SetPortBaudRate(ByVal defaultPortBaudRate As Integer) As Integer
            Dim newBaudRate As String

            Console.Write("Baud Rate({0}): ", defaultPortBaudRate)
            newBaudRate = Console.ReadLine()

            If newBaudRate = "" Then
                newBaudRate = defaultPortBaudRate.ToString()
            End If
            'Dim start, finish As Double

            'start = Microsoft.VisualBasic.DateAndTime.Timer
            '' Set end time for 5-second duration.
            'finish = start + 5.0
            'Do While Microsoft.VisualBasic.DateAndTime.Timer < finish
            '    ' Do other processing while waiting for 5 seconds to elapse.
            'Loop




            Return Integer.Parse(newBaudRate)

        End Function

    End Class


End Module
#Region "test"
'If TimeOfDay >= #11:59:55 PM# Then
'    MsgBox("The current time is within 5 seconds of midnight" & _
'        vbCrLf & "The timer returns to 0.0 at midnight")
'    Return
'End If
'Dim start, finish, totalTime As Double
'        If (MsgBox("Press Yes to pause for 5 seconds", MsgBoxStyle.YesNo)) _
'            = MsgBoxResult.Yes Then
'            start = Microsoft.VisualBasic.DateAndTime.Timer
'' Set end time for 5-second duration.
'            finish = start + 5.0
'            Do While Microsoft.VisualBasic.DateAndTime.Timer < finish
'' Do other processing while waiting for 5 seconds to elapse.
'            Loop
'            totalTime = Microsoft.VisualBasic.DateAndTime.Timer - start
'            MsgBox("Paused for " & totalTime & " seconds")
'        End If
'    End Sub
#End Region

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -