VB中的串口发送指令问题!~

jsmouse 2008-05-09 09:05:36
表1:字段名 字长 指令
STX 1 byte 02H
TRDT 1 byte 10H
WINDOW MODE 1 byte "0"=%, "1"=dot
H WIDTH 4 bytes %="0001" to "1000" Dots="0004" and up
V WIDTH 4 bytes %="0001" to "1000" Dots="0004" and up
R 3 bytes "000" to "255"
G 3 bytes "000" to "255"
B 3 bytes "000" to "255"
WINDOW COLOR(TTL) 1 byte "0"=None, "1"=R, "2"=G, "3"=RG,"4"=B, "5"=RB, "6"=GB, "7"=RGB
WINDOWHALF TONE 1 byte "0"=None, "1"=RH, "2"=GH, "3"=RHGH, "4"=BH, "5"=RHBH, "6"=GHBH, "7"=RHGHBH
FORMAT 1 byte "0" to "F"
FLICKER INTERVAL 1 byte "0" to "7"
ETX 1 byte 03H
表2:
STX 1 byte 02H
SPT 1 byte 4BH
PROGRAM NO. 1 1 to 3 bytes "0" to "849"
PATTERN BLOCK NO. 2 bytes "01"=Graphic color
ETX 1 byte 03H

我指令数组定义为BYTE型,请教各位我这两组命令用16进制怎么发,谢谢!~尤其是对其中大于255的数据!~
...全文
189 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zdingyun 2008-05-10
  • 打赏
  • 举报
回复
LZ:
表2:
STX 1 byte 02H
SPT 1 byte 4BH
PROGRAM NO. 1 1 to 3 bytes "0" to "849"
PATTERN BLOCK NO. 2 bytes "01"=Graphic color
ETX 1 byte 03H

我指令数组定义为BYTE型,请教各位我这两组命令用16进制怎么发,谢谢!~尤其是对
其中大于255的数据!~

从你上述文字叙述看
你第2组命令字节总长在6到8间
其中
PROGRAM NO.1 字节是1到3,你可将其赋值得给String变量
PATTERN BLOCK NO.2 字节是2 ,你可将其赋值得给String变量


Option Explicit
Dim i As Integer
Private Sub Command1_Click()
Dim progm As String
Dim pbn As String
Dim strData As String
Dim sj() As Byte
Dim ml As String
progm = "849"
pbn = "01"
strData = progm & pbn
For i = 1 To Len(strData)
ml = ml & Hex(Asc(Mid(strData, i, 1)))
Next
ml = "024B" & ml & "03"
Print ml
ReDim sj(Len(ml) / 2 - 1)
For i = 0 To Len(ml) - 1 Step 2
sj(i / 2) = Val("&H" & Mid(ml, i + 1, 2))
Next
MSComm1.Output = sj
End Sub

表1解决方法同上述思路

lyserver 2008-05-09
  • 打赏
  • 举报
回复
1、用HEX进行十六进制转换。
2、Byte不能大于255,大于255的数据,实质是多个BYTE,发送时要判断数值大小,如果大于255小于65536,则可使用两个BYTE进行表示,转换方式为第一个BYTE为数据值 AND &HFF,第二个为数据值 MOD &HFF。如果不想自己进行转换,还可以使用COPYMEMORY进行转换。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧