var
  SendData:array[0..5]of byte;
begin
  SendData[0]:=byte($02);
  SendData[1]:=byte($01);
  SendData[2]:=byte(strToint('$'+s));
  .....
  SendBuffer[5]:=byte($03);
  Comm1.WriteCommData(@SendData,sizeof(SendData));

解决方案 »

  1.   

    var SendPack : String;SendPack := Char($02)+ OSP +Char($03);
    Comm1.WriteCommData(@SendPack,Length(SendPack));
      

  2.   

    举个例子吧!这是用spcomm控件来完成的:
      comm1.StartComm;     //打开串口
      sleep(10);          //打开串口后延迟(必要,时间长短可根据具体情况调整)
      sbuf[1]:=byte($2e); //
      sbuf[2]:=byte($5a); //命令号 ,表示开始送数
      if xtsdz(bzc+'条屏序列号','81',bjjh)='82' then sbuf[3]:=byte($82); //条屏唯一序列号,第二号屏:82
      if xtsdz(bzc+'条屏序列号','81',bjjh)='81' then sbuf[3]:=byte($81); //条屏唯一序列号,第一号屏:81
      sbuf[42]:= byte($ff);//送数结束符。
      for i:=1 to 3 do
        begin
        comm1.writecommdata(@sbuf[i],1); //逐位送命令号和条屏序列号
        sleep(10);                       //串口送数后的时间延迟(必需)
        end;
      xxx:=str0+space(38);      //条屏需要显示的内容,这里可以直接取分发程序原拼好的字符串。 此处为测试
      xxx:= copy(xxx,1,38);     //以上两句为保证送条屏的字串为38位,实际可能不需要。
      comm1.writecommdata(pchar(xxx),38); //开始送条屏数,需将拼好的串转换为PCHAR,后面附上长度。
      sleep(10);                          //串口送数后的时间延迟(必需)
      for i:=42 to 44 do
        begin
        comm1.writecommdata(@sbuf[42],1); //往条屏送结束符,可以多送几个,也可以只送一个。
        sleep(10);                        //串口送数后的时间延迟(必需)
        end;
      comm1.StopComm;                     //关闭串口(对应打开串口,成对使用)。