小弟初搞串口.选择了spcomm控件.
上位机指令如下:
 第X字节                     内  容  及  注  解
1 02(XON)                 开始  
2 A~Z                   地址编号
3 A~F                   命令A:握手
                            命令B:读重       
4 异或校验                高四位   
5 异或校验                低四位
6 03(X0FF)                结束   这个我要怎么组成信息发送给上位机.并用变量保存上位机发回的信息.望 高人指点一二.

解决方案 »

  1.   

    发给上位机? 发给下位机吧其实这个通讯就是一个读缓存写缓存的过程,要与下位机协议好一起动作的。按照协议选择适合的数据类型,
    一般都是组织成数组或者结构体 write()下去,
    下位机收到正确的命令和数据后就放一组正确的数据到换成区
    然后上位机的返回 一般就是一个read()函数读取缓存区的数据,
    接着校验读取的到缓存字节是否正确
    这样就完成了一次通讯过程。
      

  2.   

    给个下例子你参考下,数据定义:
    type
      Func04_Send = packed record
        case byte of // 04功能命令数据结构
          0:
            (Adder: byte; // 设备地址编号
              Func: byte; // 功能
              MemAdder: Word; // 数据地址
              DataSize: Word; // 数据长度,单位为字节
              Crc16: Word; // CRC校验码
            );
          1:
            (b: array [0 .. 7] of byte);
      end;发送方法(不完整,我只选了部分你需要的):
    var { Count单位为字(2 字节) }
      s: Func04_Send;
    begin
     s.Adder := CAR_ADDER;
        s.Func := $04;
        s.MemAdder := Swap(Adder);
        s.DataSize := Swap(Count * 2);
        s.Crc16 := CRC(s.b[0], 6);
        RtuSize := sizeof(Func04_Send);    Result := WriteCom(@s, RtuSize); // 发送读取命令
    end;
      

  3.   

    原来的代码找不到了,你找个demo看看就明白了,很简单的
      

  4.   

    Delphi的串口开发吗?
    需要安装VB,然后导入VB的MS comm control3.2就OK.
    在delphi里调用MSCOMM控件,在网上搜这个控件的属性和方法,很多。