重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
你的意思是用VB编程通过串口发送指令给其他设备,然后得到设备的返回信息?
创新互联专注于企业营销型网站建设、网站重做改版、西乡塘网站定制设计、自适应品牌网站建设、H5场景定制、成都做商城网站、集团公司官网建设、外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为西乡塘等各大城市提供网站开发制作服务。
如果是的话,可以用VB6.0里的串口控件MScomm实现,具体的控件操作,网上搜下太多了。另外可以用vb点虐 (2005以上)里面的串口类SerialPort实现,这个类网上也有很多的。
代码的话,你要提供电脑端串口发送的指令表,及设备的返回信息表。这样便于判断指令的执行是否正确。还有根据你提供的图片分析,请求指令应该是宏定义
IRP_MJ_CREATE 我理解应该对应一个数字 如0x21(十六进制)
IOCTL_SERIAL_SET_BAUD_RATE= 0x22
……
就是说从电脑串口发送0x21,即打开串口; 发送0x22,设置波特率为38400,等等。
然后设备返回信息,如0x100表示串口打开成功,等等。
请把问题再描述清楚些。
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.NET 中,判断串口发送是否为空可以通过判断 SerialPort 类的 IsOpen 和 BytesToWrite 属性来实现。
IsOpen 属性可以判断串口是否已经打开,如果串口没有打开,则无法发送数据,因此 IsOpen 属性可以用来判断串口发送是否可行。
BytesToWrite 属性可以获取当前串口发送缓冲区中待发送的字节数,如果 BytesToWrite 属性的值为 0,则说明当前串口发送缓冲区为空,可以进行下一次发送操作。
下面是一个简单的示例代码:
```
Dim serialPort As New SerialPort()
' 设置串口参数...
If serialPort.IsOpen AndAlso serialPort.BytesToWrite = 0 Then
' 发送数据...
End If
```
在使用串口发送数据时,需要始终注意串口是否已经打开,以及当前发送缓冲区中是否有待发送的数据,否则可能会出现发送失败的情况。