sjs与 sjlz  都是16进制的指令数组,想用同一个串口接受不同的指令,不知道怎么用timer控件  做。

解决方案 »

  1.   

    每次运行到10秒时  会弹出380 无效属性值,MSComm1.Output = sjs
      

  2.   

    PortOpen不要写在这里,最好form_load里就处理好
      

  3.   

    感觉你这个思路不好啊。
    建议:自已在网上看一本串口通讯的书,要好很多;我自己的处理方法:用不同的按钮,表示要发送的不同数据,并且应该有一些变量表示不同的状态。
    定时器发送也可应用类似的思路(用一个状态变量控制)。然后若想判断返回的数据,可以根据那些表示状态的标量在mscomm,on_comm事件里分别处理
      

  4.   

    LZ是想发送的是字节数组,该字节数组须将所谓16进制数的字符串表示形式需要转换为Byte数组,才能发送。
    MsComm控件的OutPut属性是需要赋予Variant数据类型。
    Output 属性,往传输缓冲区写数据流。
    说明
    Output 属性可以传输文本数据或二进制数据。用 Output 属性传输文本数据,必须定义一个包含一个字符串的 Variant。发送二进制数据,必须传递一个包含字节数组的 Variant 到 Output 属性。
    正常情况下,如果发送一个 ANSI 字符串到应用程序,可以以文本数据的形式发送。如果发送包含嵌入控制字符、Null 字符等等的数据,要以二进制形式发送。