我在VB里用MSCOMM控件来对一个读写卡器操作,但不知道数据类型的如何转化?
比如:握手信号是PC发送一个十六制的"05",读写卡器返回一个十六制的"20",
但这个握手信号只占一个byte,
握手成功后进行数据发送,数据中有命令体也占一个byte,比如命令:"47"
DATA="05"
MSCOMM1.OUTPUT=DATA
DATA="47"
MSCOMM1.OUTPUT=DATA
这样是不行的....它们各自都占了两个byte问:关键是这个DATA如何进行转化?才能让它只占一个byte????????????

解决方案 »

  1.   

    dim data as bytedata=5
    MSCOMM1.OUTPUT=data
      

  2.   

    如果我要发送一串数据,里面包括:数据包ID(1byte)、命令(1byte)、数据长度(1byte)、数据内容这几项,
    那这样DATA里面该怎么存放呢???
      

  3.   

    比如:数据包ID为“01”,命令为“3F”,数据长度为“02”,数据内容为“AT344F"
    DATA里面该怎么存????
      

  4.   

    用数组dim data(XX) as byte
      

  5.   

    把一个BYTE型的赋给MSCOMM1.OUTPUT会报错,
    报错说:无效的属性值
    为什么????,是不是一定要用STRING型的????
      

  6.   

    dim a() as byte
     redim  a(x) //x 为数组长度
    a(0)=&H23  给数组付值



    a(x)=&H23
    MSCOMM1.OUTPUT=a()  用数组的华要这样写
      

  7.   

    按上面这位大虾的话,那我要赋的数据都在a()里面了,而且每一个子元素都只占一个BYTE????
    是这样理解吧?????
      

  8.   

    我也只是一头菜鸟   a(0)=&H23  这样就是把一个16进制数付给了一个byte 变量
      

  9.   

    Output 属性可以传输文本数据或二进制数据。用 Output 属性传输文本数据,必须定义一个包含一个字符串的 Variant。发送二进制数据,必须传递一个包含字节数组的 Variant 到 Output 属性。正常情况下,如果发送一个 ANSI 字符串到应用程序,可以以文本数据的形式发送。如果发送包含嵌入控制字符、Null 字符等等的数据,要以二进制形式发送
      

  10.   

    同意
       MSComm1.InputMode = comInputModeBinary
        Dim ccc As String
        ccc = Trim(Me.Text3.Text)
        strArray = StrConv(ccc, vbFromUnicode)
        MSComm1.Output = strArray
      

  11.   

    接收:
    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
      

  12.   

    用char来定义,要几位定义几位。然后安位赋值
      

  13.   

    a(0)=&H23   这样a(0)不就是一个字节么?
      

  14.   

    字节操作,典型的用Byte数组操作,一般定义一个发送数组和接受数组:
    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
    后面的事楼主想怎么办就怎么办吧
    ...
      

  15.   

    当然在Redim Sd_Data(n)以后,还有一个赋值操作,如:
    Sd_Data(0) = &H1
    Sd_Data(1) = &H3F
    Sd_Data(2) = &H2
    ...