VB通信串口与USB口
我写了个VB通信程序,最简单的读写串口缓冲区数据,在家里把COM口的2、3脚短接,能在TEXT文档中读写出串口数据,但与万用表(有COM的那种)连接,根本读不出任何数据。...
我写了个VB通信程序,最简单的读写串口缓冲区数据,在家里把COM口的2、3脚短接,能在TEXT文档中读写出串口数据,但与万用表(有COM的那种)连接,根本读不出任何数据。我用过同事编写的软件(不是用VB编写的),只要一连接,表上的读数自动重置,然后才读数。我的软件连接后表根本不重置,一点反应也没有,读也读不出任何数据。(我用MSCOMM插件,COM口的设置完全跟我同事一样,只是他也不会用VB,他是用其它语言写的)与万用表连接的是COM转USB的连接线,有影响吗?
程序如下:
Option Explicit
Dim BUF As String
Private Sub Command1_Click()
MSComm1.CommPort = Combo1.Text
MSComm1.Settings = "9600,n,8,1"
MSComm1.PortOpen = True
MSComm1.SThreshold = 1
End Sub
Private Sub Command2_Click()
MSComm1.Output = Trim(Text2.Text)
End Sub
Private Sub Command3_Click()
End Sub
Private Sub Command4_Click()
Text1.Text = ""
Text2.Text = ""
End Sub
Private Sub Command5_Click()
End
End Sub
Private Sub Form_Load()
Combo1.AddItem "1"
Combo1.AddItem "2"
Combo1.AddItem "3"
Combo1.AddItem "4"
Combo1.AddItem "5"
End Sub
Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
Case comEvReceive
BUF = Trim(MSComm1.Input)
If Len(BUF) = 0 Then
Text1.Text = "EMPTY"
Else
Text1.Text = BUF 'Trim(MSComm1.Input)
End If
End Select
End Sub
通信协议是什么?如果有个例如,或者随便发个其它的通信协议,我有说明书,但没有说哪个是协议
万用表上也是9600,N,8,1,这个是协议吧 展开
程序如下:
Option Explicit
Dim BUF As String
Private Sub Command1_Click()
MSComm1.CommPort = Combo1.Text
MSComm1.Settings = "9600,n,8,1"
MSComm1.PortOpen = True
MSComm1.SThreshold = 1
End Sub
Private Sub Command2_Click()
MSComm1.Output = Trim(Text2.Text)
End Sub
Private Sub Command3_Click()
End Sub
Private Sub Command4_Click()
Text1.Text = ""
Text2.Text = ""
End Sub
Private Sub Command5_Click()
End
End Sub
Private Sub Form_Load()
Combo1.AddItem "1"
Combo1.AddItem "2"
Combo1.AddItem "3"
Combo1.AddItem "4"
Combo1.AddItem "5"
End Sub
Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
Case comEvReceive
BUF = Trim(MSComm1.Input)
If Len(BUF) = 0 Then
Text1.Text = "EMPTY"
Else
Text1.Text = BUF 'Trim(MSComm1.Input)
End If
End Select
End Sub
通信协议是什么?如果有个例如,或者随便发个其它的通信协议,我有说明书,但没有说哪个是协议
万用表上也是9600,N,8,1,这个是协议吧 展开
4个回答
展开全部
9600是波特率 N是奇偶校验位,8是数据位,1是停止位。它设定的是串口通讯的方式。
通讯协议可以理解为暗号,以特定的格式发出,才会有应答!至于是什么格式,就要看你的串口设备的情况了,有的是自定的协议,也有用公共协议的,比如MODBUS协议,就是8为数据位的,例如发送01 03 00 00 00 02 C4 0B,那么它的意思就是读一号地址串口设备起始地址为零的两个寄存器的数据,01 是串口设备地址码,03是功能码,读保持寄存器。02是寄存器的数量,C4和0B是由前六位数据经过标准CRC16计算程序计算出的校验码,目的是防止出错。只要知道了你的串口设备的通讯协议,然后根据协议发出相应的字符串命令,就可以得到回应了,不过你用下面这句发送好像是不行MSComm1.Output = Trim(Text2.Text),
给你个写个例子试下:
DIM DATA(7) AS STRING
DIM I AS INTEGER
MSCOMM1.INBUFFERCOUNT = 0
FOR I = 0 TO 7
DATA(I)=TEXT1(I).TEXT
NEXT
MSCOMM1.OUTPUT = DATA
应该差不多吧!
通讯协议可以理解为暗号,以特定的格式发出,才会有应答!至于是什么格式,就要看你的串口设备的情况了,有的是自定的协议,也有用公共协议的,比如MODBUS协议,就是8为数据位的,例如发送01 03 00 00 00 02 C4 0B,那么它的意思就是读一号地址串口设备起始地址为零的两个寄存器的数据,01 是串口设备地址码,03是功能码,读保持寄存器。02是寄存器的数量,C4和0B是由前六位数据经过标准CRC16计算程序计算出的校验码,目的是防止出错。只要知道了你的串口设备的通讯协议,然后根据协议发出相应的字符串命令,就可以得到回应了,不过你用下面这句发送好像是不行MSComm1.Output = Trim(Text2.Text),
给你个写个例子试下:
DIM DATA(7) AS STRING
DIM I AS INTEGER
MSCOMM1.INBUFFERCOUNT = 0
FOR I = 0 TO 7
DATA(I)=TEXT1(I).TEXT
NEXT
MSCOMM1.OUTPUT = DATA
应该差不多吧!
2010-07-12
展开全部
关于VB串口通信,有一套非常好的技术资料,800M多,有源码,控件,文章,视频,书籍等,你在淘宝搜索“太阳雨VB串口资料”就可以找到,希望可以帮助到你。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
找说明书吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
很明显,他这个万用表 有自己的 通信协议
你同事 应该 知道 吧
找出 万用表 的说明书
祝你顺利
你同事 应该 知道 吧
找出 万用表 的说明书
祝你顺利
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询