VB串口通信源程序(共21页).doc
《VB串口通信源程序(共21页).doc》由会员分享,可在线阅读,更多相关《VB串口通信源程序(共21页).doc(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上程序匠人 2005-9-22 14:23:00 | | | VB串口通讯实例作者:liwenzhao高精度电压表(24bit) VB源程序Dim PortValue As Integer 端口号选择1-4Dim value As Double 当前一次取值Dim value2 As Double 要显示的值Dim valueSum As Double 和Dim numCount As Double 算平均值是的计数个数Dim func As Integer 功能号标志1-4Dim valueFlag As Integer/* Check1_Click()为控制Comm
2、and1是否EnabledPrivate Sub Check1_Click()自动刷新 被选中则 刷新按钮无效If Check1.value Then Command1.Enabled = FalseElse Command1.Enabled = True Command1.SetFocusEnd IfEnd Sub*/*Private Sub Command1_Click() 显示 Call displayEnd Sub*/Private Sub Command2_Click() 复位 valueSum = 0 清计数和 numCount = 1 清计数个数 Label6.Caption =
3、 Str(numCount - 1) 显示复位 value = 0 当前一次取值value2 = 0 要显示的值valueFlag = 0 Call displayEnd SubPrivate Sub Form_Activate() numCount = 1 value = 0 valueSum = 0 PortValue = 1 Text1.Visible = False Label6.Caption = 0 Option1(0).value = True Option2(0).value = True 为什么两个都是True Command1.SetFocusSetFocus是什么?Lab
4、el1.Caption = Format(value2, 0.000,000)Format为格式输出函数For i = 0 To 3 If Option2(i).value = True Then func = i + 1 End If Next i Check1.value = 1 Call ComPortOpenEnd SubPublic Sub ComPortOpen() 开串口 With MSComm1 .CommPort = PortValue 使用COM1 .Settings = 9600,N,8,1 设置通信口参数 .InBufferSize = 40 设置MSComm1接收缓冲
5、区为40字节 .OutBufferSize = 2 设置MSComm1发送缓冲区为2字节 VB中OutBufferSize是以字符为单位的?.InputMode = comInputModeBinary 设置接收数据模式为二进制形式 .InputLen = 1 VB中InputLen单位是字符数设置Input 一次从接收缓冲读取字节数为1 .SThreshold = 1VB中SThreshold单位是字符数设置Output 一次从发送缓冲读取字节数为1 .InBufferCount = 0 清除接收缓冲区.OutBufferCount = 0 清除发送缓冲区MaxW = -99 最大值赋初值
6、? MinW = 99 最小值赋初值 ? w = 0 数据个数计数器清零 .RThreshold = 1 On Error Resume Next? 设置接收一个字节产生OnComm事件/*打开串口,如打不开,则Err,出现msg If .PortOpen = False Then 判断通信口是否打开 .PortOpen = True 打开通信口 If Err Then 错误处理 msg = MsgBox( 串口 COM & PortValue & 无效! , vbOKOnly, 警告)vbOKOnly显示确定按钮 Exit Sub End If End If*/ End With MsgBo
7、x 端口已打开End SubPublic Sub ComPortClose() 关串口 MSComm1.PortOpen = False MsgBox 端口已关闭End SubPrivate Sub MSComm1_OnComm() Call reciveEnd SubPrivate Sub Option1_Click(Index As Integer) If MSComm1.PortOpen = True Then Call ComPortClose End If PortValue = Index + 1 Call ComPortOpenEnd SubPrivate Sub recive(
8、) 检测起始位并接收数据 Dim Buffer As Variant Dim Arr() As Byte Dim inData(5) As Byte Dim count As Integer Dim temp As Byte MsgBox OnComm With MSComm1 Select Case .CommEvent 判断MSComm1通信事件 CommEvent ? Case comEvReceive 收到Rthreshold个字节产生的接收事件 Buffer = .Input Arr = Buffer 读取一个接收字节 Text1.Text = Arr(0) If Arr(0) =
9、&H1B Then &H表示是十六进制数,1B即27 ?是27.RThreshold = 0 Do DoEvents DoEvents是什么?Loop Until .InBufferCount = 4 这里的4是不是应该是40 For i = 1 To 4 count = .InBufferCount Buffer = .Input Arr = Buffer inData(i) = Arr(0) Next i If inData(4) = &HA Then If (inData(1) Mod 64) = 32 Then .RThreshold = 1 Exit Sub End If value
10、Flag = 1 0. temp = inData(1) Mod 16 If temp = 64 Then If value Then numCount = 1 valueSum = 0 End If If valueFlag = 1 Then valueSum = valueSum + value value2 = valueSum / numCount numCount = numCount + 1 valueFlag = 0 Label6.Caption = Str(numCount - 1) Str()为数字转换成字符串函数 End If Case 3 最大值 If value val
11、ue2 Then value2 = value End If Case 4 最小值 If value = 80 Then MSComm1.InBufferCount = 0 End IfEnd Sub程序匠人 2005-10-22 19:48:00 | | | Visual Basic串口通讯调试方法 现有电子秤一台,使用串口与计算机进行通讯。编写VB程序来访问串口,达到读取电子秤上显示的数据。该电子秤为BE01型仪表,输出为RS-232C标准接口,波特率为300-9600、偶校验、7个数据位、2个停止位。所有字符均发送11位ASCII码,一个起始位。在VB中与串口通讯需要引入控件MSComm
12、串口通讯控件(在Microsoft Comm Control 6.0中)。具体程序如下:控件简称:MSC Dim Out(12) As Byte 接收var中的值 Dim var As Variant 接收MSC.input中的数值 Dim nRece As Integer 计算MSC.inputbuffer的个数 Dim i As Integer, j As Integer 随即变量,计算循环 * Private Sub Form_Load() ClearText With MSC .CommPort = 1 设置Com1为通信端口 .Settings = 9600,E,7,2 设置通信端口
13、参数 9600赫兹、偶校验、7个数据位、2个停止位.(这里需要进一步说明的是:.Setting=”BBBB,P,D,S”。 含义是:B:Baud Rate(波特率);P:Parity(奇偶);D:Data Bit;S:Stop Bit) .InBufferSize = 40 设置缓冲区接收数据为40字节 .InputLen = 1 设置Input一次从接收缓冲读取字节数为1 .RThreshold = 1 设置接收一个字节就产生OnComm事件 End With End Sub * Private Sub ClearText() Text3.Text = Text2.Text = 5 Text
14、1.Text = End Sub Private Sub Command1_Click() 复位并打开串口ClearText nRece = 0 计数器清零 是不是应该把前面的去掉啊?With MSC .InputMode = comInputModeBinary 设置数据接收模式为二进制形式 .InBufferCount = 0 清除接收缓冲区 If Not .PortOpen Then .PortOpen = True 打开通信端口 End If End With End Sub Private Sub MSC_OnComm() DelayTime 用来延续时间 ClearText Wit
15、h MSC Select Case .CommEvent 判断通信事件 Case comEvReceive: 收到Rthreshold个字节产生的接收事件 SwichVar 1 是个子过程If Out(1) = 2 Then 判断是否为数据的开始标志 .RThreshold = 0 关闭OnComm事件接收 End If Do DoEvents Loop Until .InBufferCount = 3 循环等待接收缓冲区=3个字节 nRece = nRece + 1 For i = 2 To 12 SwichVar i Text1.Text = Text1.Text & Chr(Out(i)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB 串口 通信 源程序 21
限制150内