我在VB里用MSCOMM控件来对一个读写卡器操作,但不知道数据类型的如何转化?
比如:握手信号是PC发送一个十六制的"05",读写卡器返回一个十六制的"20",
但这个握手信号只占一个byte,
握手成功后进行数据发送,数据中有命令体也占一个byte,比如命令:"47"
DATA="05"
MSCOMM1.OUTPUT=DATA
DATA="47"
MSCOMM1.OUTPUT=DATA
这样是不行的....它们各自都占了两个byte问:关键是这个DATA如何进行转化?才能让它只占一个byte????????????
比如:握手信号是PC发送一个十六制的"05",读写卡器返回一个十六制的"20",
但这个握手信号只占一个byte,
握手成功后进行数据发送,数据中有命令体也占一个byte,比如命令:"47"
DATA="05"
MSCOMM1.OUTPUT=DATA
DATA="47"
MSCOMM1.OUTPUT=DATA
这样是不行的....它们各自都占了两个byte问:关键是这个DATA如何进行转化?才能让它只占一个byte????????????
MSCOMM1.OUTPUT=data
那这样DATA里面该怎么存放呢???
DATA里面该怎么存????
报错说:无效的属性值
为什么????,是不是一定要用STRING型的????
redim a(x) //x 为数组长度
a(0)=&H23 给数组付值
。
。
。
a(x)=&H23
MSCOMM1.OUTPUT=a() 用数组的华要这样写
是这样理解吧?????
MSComm1.InputMode = comInputModeBinary
Dim ccc As String
ccc = Trim(Me.Text3.Text)
strArray = StrConv(ccc, vbFromUnicode)
MSComm1.Output = strArray
MSComm1.InputMode = comInputModeBinary
Dim i As Integer
varArray = MSComm1.Input
strArray = varArray
For i = 0 To UBound(strArray)
If Me.Text4.Text <> "" Then
Me.Text4.Text = Me.Text4.Text & " " & Hex(strArray(i))
Else
Me.Text4.Text = Hex(strArray(i))
End If
Next
Public Sd_Data() as Byte
Public Rv_Data() as Byte...
在要发送的时候:
Redim Sd_Data(0) 或 Redim Sd_Data(n) '发送数据为n+1个字节
然后发送语句就是: Mscomm1.output = Sd_Data '用数组名称就可以了...
在接收数据的时候:
Rv_Data = Mscomm1.Input '根据收取数据的长度自动把Rv_Data数组给确定长度了
然后输出后处理之类的,如:
For i =0 to Ubound(Rv_Data)
Debug.Print Hex$(Rv_data) '以十六进制查看一下对不对
Next
后面的事楼主想怎么办就怎么办吧
...
Sd_Data(0) = &H1
Sd_Data(1) = &H3F
Sd_Data(2) = &H2
...