VB串口通信程序代码 联系客服

发布时间 : 星期一 文章VB串口通信程序代码更新完毕开始阅读

strBuff = TextSend End If

If MSComm1.PortOpen = False Then MsgBox \请打开串口\End If

On Error GoTo uerror MSComm1.Output = strBuff

Label11.Caption = Label11.Caption + Len(strBuff) '发送计数 uerror: End Sub

Private Sub ComSend2_Click()

If ComSend2.Caption = \自动发送\ ComSend2.Caption = \关闭自动发送\ Timer1.Interval = TextTime.Text Timer1.Enabled = True Else

ComSend2.Caption = \自动发送\ Timer1.Enabled = False End If End Sub

Private Sub ComClean1_Click()

TextSend.Text = \'清空发送窗口 End Sub

Private Sub Option3_Click()

MSComm1.InputMode = comInputModeBinary '选择接收方式 End Sub

Private Sub Option4_Click()

MSComm1.InputMode = comInputModeText '选择接收方式 End Sub

Private Sub Timer1_Timer()

Call ComSend1_Click '定时调用手动发送 End Sub

Private Sub Timer2_Timer() If Combo3 = \无None\

MSComm1.Settings = Str(Combo2) + \ElseIf Combo3 = \奇Odd\

MSComm1.Settings = Str(Combo2) + \ElseIf Combo3 = \偶Even\

MSComm1.Settings = Str(Combo2) + \End If End Sub

Private Sub Combo1_Click()

If MSComm1.PortOpen = True Then '如果串口打开先关闭后再进行其他操作 MSComm1.PortOpen = False

End If MSComm1.CommPort = Combo1.ListIndex + 1 '读取com口号 End Sub Private Sub ComClean3_Click() Label10.Caption = 0 Label11.Caption = 0 End Sub Private Sub ComClean2_Click() TextReceive.Text = \'接收窗口 End Sub 功能上:实现了字符串的发送和接收,8位数据的十六进制发送和接收,有端口,波特率等设置。 缺点: 1:只可以发送两位十六进制数。 2:接收和发送的显示数据上有点不同步,十六进制的没有算进去。 3:没有TXT的文件发送和接收的功能。 需要源程序的,可下载本文的图片,下载后把图片的.jpg格式改为.rar格式就可以解压出来了。 附:MSComm控件的属性: 属性 (Name) (自定义) CommPort 说明 MSComm控件的名称 打开属性页 获得或设置通讯端口号 决定在通讯过程中是否使数据终端机状态线有效。取值为: DTREnable True False 获得或设置是否搜索EOF字符。取值为: EOFEnable True False 获得或设置软件的握手协议。取值为: 0 comNone Handshaking 1 comXOnXoff 2 comRTS 3 comRTSXOnXOff InBufferSize Index InputLen 获得或设置接收缓冲区的大小,以字节数为单位。 在对象数组中的编号 获得或设置输入属性从接收缓冲区读出的字符数。 获得或设置输入属性检索的数据类型。取值为: InputMode 0 comInputModeText 1 comInputModeBinary Left NullDiscard 距离容器左边框的距离 决定是否将空字符串从端口传送到接收缓冲区。取值为: True False OutBufferSize ParityReplace RThreshold 获得或设置传输缓冲区中的字符数 获得或设置当出现奇偶校验错误时,用来替换数据流中无效字符的字符。 获得或设置要接受的字符数。 决定能否使行有效。取值为: RTSEnable True False Settings SThreshold Tag Top 获得或设置波特率、奇偶校验、数据位和停止位参数。 获得或设置传输中所能允许的最小字符数 存储程序所需的附加数据 距容器顶部边界的距离

将接到的数据赋值于全局变量,通过ADO数据控件连接数据库及表,用以下代码保存数据: Private Sub Timer1_Timer()

If Label1.Caption <> CStr(Time$) Then Label1.Caption = Time$ sum_zj = sum_zj + 1 Text3 = sum_zj '校准

If sum_zj >= 3 Then sum_zj1 = sum_zj1 + 1 sum_zj = sum_zj - 3 Text4 = sum_zj1

Adodc1.Recordset.AddNew '每3秒记录一组数据 Adodc1.Recordset(0) = shiYAnH

Adodc1.Recordset(1) = Mid(Time$, 1, 2) & Mid(Time$, 4, 2) & Mid(Time$, 7, 2) '记录time Adodc1.Recordset(2) = record_jm(0) '记录数据 Adodc1.Recordset(3) = record_jm(1) '记录数据 Adodc1.Recordset(4) = record_jm(2) '记录数据 Adodc1.Recordset(5) = record_jm(3) '记录数据 Adodc1.Recordset(6) = record_jm(4) '记录数据 Adodc1.Recordset(7) = record_jm(5) '记录数据 Adodc1.Recordset(8) = record_jm(6) '记录数据 Adodc1.Recordset(9) = record_jm(7) '记录数据 Adodc1.Recordset(10) = record_jm(8) '记录数据 Adodc1.Recordset(11) = record_jm(9) '记录数据 Adodc1.Recordset(12) = record_jm(10) '记录数据 Adodc1.Recordset(13) = record_jm(11) '记录数据 Adodc1.Recordset.Update End If End If End Sub

Private Sub Timer2_Timer()

Picture4.DrawStyle = 0

以下代码绘制实时曲线(6点): Picture4.DrawWidth = 3 ' = dash

Picture4.Line (sum_z1 * 18 + 500, record_jm(0) * -150 + 7900)-(sum_z1 * 18 + 500, record_jm(2) * -150 + 7900), vbRed ', BF Picture4.Line (sum_z1 * 18 + 500, record_jm(1) * -150 + 7900)-(sum_z1 * 18 + 500, record_jm(3) * -150 + 7900), vbCyan ', BF Picture4.Line (sum_z1 * 18 + 500, record_jm(2) * -150 + 7900)-(sum_z1 * 18 + 500, record_jm(4) * -150 + 7900), vbBlack ', BF

Picture4.Line (sum_z1 * 18 + 500, record_jm(3) * -150 + 7900)-(sum_z1 * 18 + 500, record_jm(5) * -150 + 7900), vbMagenta ', BF

Picture4.Line (sum_z1 * 18 + 500, record_jm(4) * -150 + 7900)-(sum_z1 * 18 + 500, record_jm(6) * -150 + 7900), vbGreen ', BF

Picture4.Line (sum_z1 * 18 + 500, record_jm(5) * -150 + 7900)-(sum_z1 * 18 + 500, record_jm(7) * -150 + 7900), vbBlue ', BF End Sub

Private Sub Timer3_Timer()

If Label32 <> CStr(Time$) Then 'Label1.Caption Label32.Caption = Time$ sum_z = sum_z + 1 Text31 = sum_z '校准

If sum_z >= 5 Then sum_z = sum_z - 5 sum_z1 = sum_z1 + 1 Text30 = sum_z1 End If End If End Sub

以下代码绘制曲线的坐标: Private Sub Form_Load() With Adodc1

Adodc1.ConnectionString = \Security Info=False\

Adodc1.RecordSource = \ End With Text1 = \

Text2 = \

Text5 = \ Text8 = \ Text13 = \ 'Load frmMain colvb = vbBlack xx = 100