我现在做的一个小程序需要用到串口,而设备只支持二进制,
我想把字符串如'48H 00 00 3 10 30 xx 00 '这个字符串转化为二进制传给设备,
然后再把从设备返回得二进制数据转化为字符串我得想法是先把这些字符串放到一个数组中,然后一个个转化,传出去,接受后再转换回来
但是我不知道怎么做,DELPHI里又没有字符串转二进制得函数,,,,,,,大家帮帮忙了.多谢各位了,

解决方案 »

  1.   

    直接用byte数组就可以了。
    var
      buf: array[0..7] of Byte;
    begin
      
      buf[0] := $48;
      buf[1] := $00;
      buf[2] := $00;
      buf[3] := $03;
      buf[4] := $10;
      ...end;
      

  2.   

    to: lynmison(菻梓)  这样就直接吧字符传转成二进制了吗?但是第一个我要传得是 48H, 改成buf[0] := $48H;就不行, 你能不能贴段串口通讯发送和接收二进制数据并的代码给我,问题解决了我马上给分,谢谢
      

  3.   

    buf[0] := $48; 就是16进制的。0x48H是C的语法。
    串口通讯的程序如果用MSComm控件应该是不难的,我使用的是VC编写的动态连接库。和你的设计思路有点不太一样。
      

  4.   

    其实,直接使用D工具+MSComm控件,可以快速完成串口通讯程序开发,以下是以前用这种方法写的串口通讯代码段。
    var
      Buf: array of Byte;
    begin  SetLength(Buf,8);
      Buf[0] := $7E;
      Buf[1] := $40;
      Buf[2] := SysDM.m_SysParam.PortID;
      Buf[3] := $12;
      Buf[4] := $34;
      Buf[5] := $56;
      Buf[6] := $00;
      Buf[7] := CheckSum(Buf,6);  if not SendComData(Buf,8,FALSE,FALSE) then
      begin
        G_MessageBox('数据通讯失败!',MB_ICONERROR);
        Exit;
      end;
    ......function TComm.SendComData(Buf: array of Byte; Len: Integer; CallRemote: Boolean; ByteSend: Boolean=True): Boolean;
    var
      i: Integer;
      tmp: array of Byte;
    begin  Result := False;
      if not MSComm.PortOpen then
      begin
        G_MessageBox('串口未打开,发送数据错误!',MB_ICONERROR);
        Exit;
      end;
      if ByteSend then
      begin
        for i:=0 to Len-1 do
        begin
          SetLength(tmp,1);
          tmp[0] := Buf[i];
          MSComm.Output := tmp;
          Sleep(10);
        end;
      end
      else begin
        SetLength(tmp,Len);
        for i:=0 to Len-1 do
        begin
          tmp[i] := Buf[i]
        end;
        //如果是呼叫信号,那么需要用无校验
        if CallRemote then MSComm.Settings := '9600,n,8,1'
        else MSComm.Settings := '9600,s,8,1';
        MSComm.Output := tmp;
        Sleep(50);
      end;
      Result := TRUE;end;
      

  5.   

    lynmison(菻梓) ,谢谢你,我基本上明白了,给分给你