01 03 20 00 00 03 0E 0B   .. .....
 01 03 20 00 00 03 0E 0B   .. .....
 01 03 20 00 00 03 0E 0B   .. .....
 01 03 20 00 00 03 0E 0B   .. .....
 01 06 20 00 00 00 82 0A   .. ...‚.
 01 06 20 00 00 20 83 D2   .. .. ƒÒ
 01 06 20 00 00 01 43 CA   .. ...CÊ
 01 03 20 00 00 03 0E 0B   .. .....
 01 06 20 00 00 02 03 CB   .. ....Ë以上是我用serial monitor 监听得到的发送的数据。我在VB6中也要发送同上数据怎么做?
小弟第一次做串口通信,请大家指点一下,谢谢!

解决方案 »

  1.   

    首先明确你是想用RTU还是用ASCII方式来发送!
    用RTU方式
    dim OutputByte(8) as byte
    前6个字节是数据,包括从机地址、功能码、起始地址以及需要读取的寄存器数量,后两个字节是用CRC计算出来的校验码
    把它们都放在OutputByte中,然后用
    do while(.....)
    doevents
    loop
    MSComm1.Output=OutputByte 
    结构发送
      

  2.   

    这个只是十六进制和字符型的转换问题。
    把十六进制直接显示就是右边的东西。再把十六进制数十六位的高八位和低八位转换成相应的字符再加一个空格就是左边的显示方法。
    比如char i=0x31;
    显示打印字符是1。如果用十六进制显示的话就是31
    char temp=GetChar(i & 0xF0);  
    char temp1=GetChar(i & 0x0F);
    GetChar由自己来写就行,就是一个switch case语句把相应的数值1转换成字符1。