设备的串口协议看下面的链接:
http://cn.briefcase.yahoo.com/bc/syalan1/vwp?.dir=/com&.dnm=%b4%ae%bf%da%d0%ad%d2%e9.jpg&.src=bc&.view=l&.done=http%3a//cn.briefcase.yahoo.com/bc/syalan1/lst%3f%26.dir=/com%26.src=bc%26.view=l
小弟是第一次做这项目,请各位帮忙,我知道使用MSCOMM控件,但怎么把控制指令发出去?文档上写的格式在程序中如何写?它指令格式中STX(02hex)和ETX(03hex)是什么意思?
比如有个命令行“PON”。那我写程序时该怎么写?各位大虾帮帮忙
9 个解决方案
#1
你提供的图片看不清楚。STX和ETX是指令,相关的意思,你不妨查看一下这个产品的指令手册。一般就是Modem的指令了。具体不大清楚
#2
stx 为发送的每一条指令的第一个字节,就是开始字节
etx 为每条指令的最后一个字节,这二个字节的值不变
所有发送的字节的值为16进制数,其他的看不清楚
用comm发送的时候,先初始化com口,奇偶校验位不变的话,只要在开始的时候初始化一次
通常初始化用以下代码:
MSComm1.InputMode = comInputModeBinary
MSComm1.RThreshold = 3
MSComm1.InputLen = 3
MSComm1.Settings = "9600,n,8,1"
关键的设置在于MSComm1.Settings =波特率,奇偶校验,数据位,停止位
有关这个属性的设置建议看看帮助。
发送时用字节数组,把要发送的字节依次读入数组然后发送
给你个例子:
Dim vSend As Variant
Dim bSend(0 To 5) As Byte
bSend(0) = Stx
bSend(1) = &H1
bSend(2) = &H2
bSend(3) = &H3
bSend(4) = &H4
bSend(5) = Etx
vSend = bSend
If MSComm1.PortOpen Then
MSComm1.Output = vSend
Else
MSComm1.PortOpen = True
MSComm1.Output = vSend
End If
Do While (MSComm1.OutBufferCount <> 0)
Loop
etx 为每条指令的最后一个字节,这二个字节的值不变
所有发送的字节的值为16进制数,其他的看不清楚
用comm发送的时候,先初始化com口,奇偶校验位不变的话,只要在开始的时候初始化一次
通常初始化用以下代码:
MSComm1.InputMode = comInputModeBinary
MSComm1.RThreshold = 3
MSComm1.InputLen = 3
MSComm1.Settings = "9600,n,8,1"
关键的设置在于MSComm1.Settings =波特率,奇偶校验,数据位,停止位
有关这个属性的设置建议看看帮助。
发送时用字节数组,把要发送的字节依次读入数组然后发送
给你个例子:
Dim vSend As Variant
Dim bSend(0 To 5) As Byte
bSend(0) = Stx
bSend(1) = &H1
bSend(2) = &H2
bSend(3) = &H3
bSend(4) = &H4
bSend(5) = Etx
vSend = bSend
If MSComm1.PortOpen Then
MSComm1.Output = vSend
Else
MSComm1.PortOpen = True
MSComm1.Output = vSend
End If
Do While (MSComm1.OutBufferCount <> 0)
Loop
#3
把通信协议搞清楚就好做了,应该有关于通信协议的说明吧.
#4
to wxy_xiaoyu(然也)
说明书上说的指令格式是这样的:
STX(02 HEX) ID(2 BYTE) COMMAND(3 BYTE) ETX(03 HEX)
ID是设备的编号,COMMAND是命令行如“PON”“FCA”等,那STX和ETX是不是直接放到字节数组中啊?就像bSend(0) = Stx?应该转换为16进制吧
说明书上说的指令格式是这样的:
STX(02 HEX) ID(2 BYTE) COMMAND(3 BYTE) ETX(03 HEX)
ID是设备的编号,COMMAND是命令行如“PON”“FCA”等,那STX和ETX是不是直接放到字节数组中啊?就像bSend(0) = Stx?应该转换为16进制吧
#5
up
#6
gz
#7
STX,ETX只是表示指令的名字,具体应填上 &h02和&h03
在VB中,就是
bSend(0) = 2'表示stx
...
在VB中,就是
bSend(0) = 2'表示stx
...
#8
StrSend=Chr("&H2")(起始符)+ID(设备编号)+COMMAND INFO+Chr("&H3")(结束符)
其中的信息不知道是以什么方式(ASCII 或者 十六进制...)解释和传输的?
做一下转换,保证发送信息的长度应该就行了.
MSCOMM1.Output=StrSend
另外找些串口调试助手之类的小软件或许可以帮助你.
其中的信息不知道是以什么方式(ASCII 或者 十六进制...)解释和传输的?
做一下转换,保证发送信息的长度应该就行了.
MSCOMM1.Output=StrSend
另外找些串口调试助手之类的小软件或许可以帮助你.
#9
设备的串口协议看下面的链接:
http://cn.briefcase.yahoo.com/bc/syalan1/lst?&.dir=/com&.src=bc&.view=l
http://cn.briefcase.yahoo.com/bc/syalan1/lst?&.dir=/com&.src=bc&.view=l
#1
你提供的图片看不清楚。STX和ETX是指令,相关的意思,你不妨查看一下这个产品的指令手册。一般就是Modem的指令了。具体不大清楚
#2
stx 为发送的每一条指令的第一个字节,就是开始字节
etx 为每条指令的最后一个字节,这二个字节的值不变
所有发送的字节的值为16进制数,其他的看不清楚
用comm发送的时候,先初始化com口,奇偶校验位不变的话,只要在开始的时候初始化一次
通常初始化用以下代码:
MSComm1.InputMode = comInputModeBinary
MSComm1.RThreshold = 3
MSComm1.InputLen = 3
MSComm1.Settings = "9600,n,8,1"
关键的设置在于MSComm1.Settings =波特率,奇偶校验,数据位,停止位
有关这个属性的设置建议看看帮助。
发送时用字节数组,把要发送的字节依次读入数组然后发送
给你个例子:
Dim vSend As Variant
Dim bSend(0 To 5) As Byte
bSend(0) = Stx
bSend(1) = &H1
bSend(2) = &H2
bSend(3) = &H3
bSend(4) = &H4
bSend(5) = Etx
vSend = bSend
If MSComm1.PortOpen Then
MSComm1.Output = vSend
Else
MSComm1.PortOpen = True
MSComm1.Output = vSend
End If
Do While (MSComm1.OutBufferCount <> 0)
Loop
etx 为每条指令的最后一个字节,这二个字节的值不变
所有发送的字节的值为16进制数,其他的看不清楚
用comm发送的时候,先初始化com口,奇偶校验位不变的话,只要在开始的时候初始化一次
通常初始化用以下代码:
MSComm1.InputMode = comInputModeBinary
MSComm1.RThreshold = 3
MSComm1.InputLen = 3
MSComm1.Settings = "9600,n,8,1"
关键的设置在于MSComm1.Settings =波特率,奇偶校验,数据位,停止位
有关这个属性的设置建议看看帮助。
发送时用字节数组,把要发送的字节依次读入数组然后发送
给你个例子:
Dim vSend As Variant
Dim bSend(0 To 5) As Byte
bSend(0) = Stx
bSend(1) = &H1
bSend(2) = &H2
bSend(3) = &H3
bSend(4) = &H4
bSend(5) = Etx
vSend = bSend
If MSComm1.PortOpen Then
MSComm1.Output = vSend
Else
MSComm1.PortOpen = True
MSComm1.Output = vSend
End If
Do While (MSComm1.OutBufferCount <> 0)
Loop
#3
把通信协议搞清楚就好做了,应该有关于通信协议的说明吧.
#4
to wxy_xiaoyu(然也)
说明书上说的指令格式是这样的:
STX(02 HEX) ID(2 BYTE) COMMAND(3 BYTE) ETX(03 HEX)
ID是设备的编号,COMMAND是命令行如“PON”“FCA”等,那STX和ETX是不是直接放到字节数组中啊?就像bSend(0) = Stx?应该转换为16进制吧
说明书上说的指令格式是这样的:
STX(02 HEX) ID(2 BYTE) COMMAND(3 BYTE) ETX(03 HEX)
ID是设备的编号,COMMAND是命令行如“PON”“FCA”等,那STX和ETX是不是直接放到字节数组中啊?就像bSend(0) = Stx?应该转换为16进制吧
#5
up
#6
gz
#7
STX,ETX只是表示指令的名字,具体应填上 &h02和&h03
在VB中,就是
bSend(0) = 2'表示stx
...
在VB中,就是
bSend(0) = 2'表示stx
...
#8
StrSend=Chr("&H2")(起始符)+ID(设备编号)+COMMAND INFO+Chr("&H3")(结束符)
其中的信息不知道是以什么方式(ASCII 或者 十六进制...)解释和传输的?
做一下转换,保证发送信息的长度应该就行了.
MSCOMM1.Output=StrSend
另外找些串口调试助手之类的小软件或许可以帮助你.
其中的信息不知道是以什么方式(ASCII 或者 十六进制...)解释和传输的?
做一下转换,保证发送信息的长度应该就行了.
MSCOMM1.Output=StrSend
另外找些串口调试助手之类的小软件或许可以帮助你.
#9
设备的串口协议看下面的链接:
http://cn.briefcase.yahoo.com/bc/syalan1/lst?&.dir=/com&.src=bc&.view=l
http://cn.briefcase.yahoo.com/bc/syalan1/lst?&.dir=/com&.src=bc&.view=l