
怎样在vb中自动检测到可用串口号的具体程序代码
j = 0 For i = 1 To 16 Step 1 If comISP.PortOpen = True Then '先关闭串口 comISP.PortOpen = False End If comISP.CommPort = i On Error Resume Next '说明当一个运行时错误发生时,控件转到紧接着发生错误的语句之后的语句,并在此继续运行。
访问对象时要使用这种形式而不使用 On Error GoTo。
comISP.PortOpen = True If Err.Number <> 8002 Then '无效的串口号。
这样可以检测到虚拟串口,如果用Err.Number = 0的话检测不到虚拟串口 If j = 0 Then j = i End If cboPort.AddItem COM & i '生成串口选择列表 End If comISP.PortOpen = False Next i If j >= 1 Then cboPort.Text = COM & j '自动打开可用的最小串口号 comISP.CommPort = j comISP.PortOpen = True cmdOpenCom.Caption = 关闭串口 shpCOM.FillColor = vbGreen If Err.Number = 8005 Then '串口已打开,vbExclamation ' comISP.PortOpen = False cboPort.Text = cmdOpenCom.Caption = 打开串口 shpCOM.FillColor = vbRed End If End If
怎样用VB来判断串口是否存在,是否被占用
是否有数据输入
错误消息(MS Comm 控件)下表列出 MSComm 控件可以捕获的错误:常数 值 描述 comInvalidPropertyValue 380 无效属性值 comSetNotSupported 383 属性为只读 comGetNotSupported 394 属性为只读 comPortOpen 8000 端口打开时操作不合法 8001 超时值必须大于 0 comPortInvalid 8002 无效端口号 8003 属性只在运行时有效 8004 属性在运行时为只读 comPortAlreadyOpen 8005 端口已经打开 8006 设备标识符无效或不支持该标识符 8007 不支持设备的波特率 8008 指定的字节大小无效 8009 缺省参数错误 8010 硬件不可用(被其它设备锁定) 8011 函数不能分配队列 comNoOpen 8012 设备没有打开 8013 设备已经打开 8014 不能使用 comm 通知 comSetCommStateFailed 8015 不能设置 comm 状态 8016 不能设置 comm 事件屏蔽 comPortNotOpen 8018 仅当端口打开时操作才有效 8019 设备忙 comReadError 8020 读 comm 设备错误 comDCBError 8021 为该端口检索设备控制块时的内部错误
VB.NET中如何处理串口通信接收的数据
你可以预先约定一个截止附,读取的字节统统放到缓存区里,直到读到截止附再处理、显示。
vb6中怎样判断字符串中是否包含某个字符
instr()函数,返回第二个字符串在第一个字符串中出现的位置,如果没有,则返回0例如:instr(1,abcdef,j)返回结果为0 注:1表示从第一个字符串的第一个字符开始查找
vb串口通讯
用mscomm控件可实现串口通信检测方法可以在USB和串口分别发送一个数据包,假如对端也开了程序,就返回一个确认数据。
vb串口通讯
BCD码是一种8421编码,它将一个字节分两部分,高4位代表一个数字,低4位代表一个数字。
也就是说,计算机怎么识别一个字节到底是二进制码还是BCD码,这是由程序代码来运算的。
我的理解可由16进制数简化理解: 每2个BCD码构成一字节,接收到每字节二进制数据需处理成16进制的字符形式。
仅是由00-99的范围。
而非00-FF范围。
基于如上设想所做的收发代码如下,未考虑BCD码高低位字节及接收17个字节,你需对接收代码略作修改: Option ExplicitPrivate Sub cmdSend_Click() Dim sendsj As String sendsj = txtSend MSComm1.Output = sendsjEnd SubPrivate Sub Form_Load() MSComm1.Settings = 9600,N,8,1 MSComm1.CommPort = 1 MSComm1.PortOpen = True MSComm1.RThreshold = 17 txtSend = R txtReceive = End SubPrivate Sub MSComm1_OnComm() Dim BytesReceived() As Byte Dim buffer As String Dim HData As String Dim i As Integer Select Case MSComm1.CommEvent Case comEvReceive '接收十六进制数据。
并以十六进制显示 MSComm1.InputLen = 0 MSComm1.InputMode = comInputModeBinary '设置当前以二进制数接收数据 buffer = MSComm1.Input '接收数据至字符串中 BytesReceived() = buffer '将数据转入BYTE中 For i = 0 To UBound(BytesReceived) '显示结果以十六进制显示 If Len(Hex(BytesReceived(i))) = 1 Then HData = HData & 0 & Hex(BytesReceived(i)) Else HData = HData & Hex(BytesReceived(i)) End If txtReceive.Text = HData '最后将结果后入txtreceive中 '进行数据处理 MSComm1.OutBufferCount = 0 '清除发送缓冲区 MSComm1.InBufferCount = 0 '清除接收缓冲区 Next End SelectEnd Sub
高手来帮帮忙啊
vb的串口通信
参考: 补充答复:已经在上述链接的23楼上传修改后工程.LZ:你需要对COM号,波特率,校验位,数据位,停止位做选择,都出现蓝色高亮.此外修改上述链接工程中代码的BUG:Private Sub cmdOpen_Click() '打开关闭端口 On Error GoTo Userr If List1 <> And List2 <> And List3 <> And List3 <> And List3 <> Then MSComm1.Settings = List2 & , & List3 & , & List5 & , & List4 If openFlag Then cmdOpen.Caption = 打开串口 MSComm1.PortOpen = False '打开端口 Shape1.FillColor = vbRed Else MSComm1.CommPort = Val(List1) MSComm1.PortOpen = True cmdOpen.Caption = 关闭串口 Shape1.FillColor = vbGreen End If End If openFlag = Not openFlag Exit SubUserr: MsgBox (Err号 & Err.Number & 串口号错误或已打开!)End Sub
VB串口通讯问题
我 想:其实,你 这 还是 单个 串口 的 通信 问题下位机 提供的 温度数据的 同时 一定 会有 标明是 哪路 温度数据 的 标记
在接收 程序 里 识别 并 分开 不就行了
祝你顺利 上面说了:每收到一个温度值,发送方应该指定 是 哪路 发送的
接收方由此判断、区别接收的温度值
其实,发送方 加入 一个 标示 哪一路的标志 就可以了



