使用MSCOMM控件,但是发现使用 MSCOMM1.OUTPUT = CHR(139)时发送的不是139而是0,不明白如何发送二进制数据,请各位大虾指教

解决方案 »

  1.   

    是的,MSCOMM控件不能发送大于128的ASCII码,但是,我们仍然可以通过别的方法来实现ASCII码的发送。考虑到一个BYTE型的数据是8位的,即恰好是2^8=256的,所以,我们可以通过把大于128的ASCII码转换成BYTE型,然后再传即可。例,欲传ASCII码为139的字符
    Dim bytAscii as byte
    bytAscii=139
    mscomm1.output=bytAcsii如果是有多个字符的话,可以使用动态的BYTE数组。
      

  2.   

    发送
    dim dynamicbyte() as byte
    ..
    ..
    redim dynamicbyte(1 to n)
    for i = 1 to n
    dynamicbyte(i) = var(i)
    next i
    mscomm1.output = dynamicbyte
    接收
    dim getbyte() as byte
    ..
    ..
    getbyte = mscomm1.input
    for i = lbound(getbyte) to ubound(getbyte)
    var(i) = getbyte(i)
    next i