再问串口问题:在校验为S校验的方式下,如何发送16进制数?

解决方案 »

  1.   

    往传输缓冲区写数据流。该属性在设计时无效,在运行时为只读。语法object.Output [ = value ]Output 属性语法包括下列部分:部分 描述 
    object 对象表达式,其值是“应用于”列表中的对象。 
    value 要写到传输缓冲区中的一个字符串。 
    说明Output 属性可以传输文本数据或二进制数据。用 Output 属性传输文本数据,必须定义一个包含一个字符串的 Variant。发送二进制数据,必须传递一个包含字节数组的 Variant 到 Output 属性。正常情况下,如果发送一个 ANSI 字符串到应用程序,可以以文本数据的形式发送。如果发送包含嵌入控制字符、Null 字符等等的数据,要以二进制形式发送。数据类型Variant
      

  2.   

    是的发不出去的。
    我下载了一个串口调试软件,利用这个软件,把串口的校验设为S校验,选择发送方工为HEX,
    然后发送一个16进制数后就能驱动单片机,但我自已写了一个程序,按同样的设置发送就不好用
    ,不知是怎么回事,是不是在S校验时发送数据的时候要经过什么处理啊 ?
      

  3.   

    With MSComm1
    .Settings = "1200,n,8,1"
    .RThreshold = 0
    '.SThreshold = 1
    .InputMode = comInputModeBinary'.InputLen = 1
    .OutBufferCount = 0     '清空发送缓冲区
    .InBufferCount = 0     '清空接收缓冲区
    '.NullDiscard = True
    '
    End With
    If MSComm1.PortOpen = False Then
        MSComm1.PortOpen = True     '打开串口
    End IfDim kByte(1) As Byte
    kByte(0) = &HFF
    MSComm1.Output = kByte ' Chr(255)
      

  4.   

    你设的校验为n不是s阿
    .Settings = "1200,n,8,1"  <-????
    改为
    .Settings = "1200,s,8,1"
    试试
      

  5.   

    Dim kByte(1) As Byte
    kByte(0) = &HFF
    kByte(1)=?
      

  6.   

    因为你并没有用kbyte(1),应为
    Dim kByte(0) As Byte
    kByte(0) = &HFF
    MSComm1.Output = kByte ' Chr(255)
      

  7.   

    呵呵,不好意思,我没有用串口具体的编写过程序,但是我见有人这样发过:
    MsComm1.output=chr$("&H" & 12) 12为要发的十六进制数,我自己也不知道对不对,由大家来看看吧!