在书上看到说:串口的读写分为两种情况,一种是字符串的读写,只要直接引用缓冲区就可以了,如:
mscomm1.output:= memo1.text. 另一种情况是二进制的读写,则要复杂一些,但没有举例。
我现在想通过串口把以下十六进制数据命令发到一个设备上去,
“55 90 99 99 FE FE 05 01 00 00 99 99 CRC ” (CRC是校验码,也是一个十六进制字节)
请问该如何写一段写串口数据的相关代码呢?要注意哪些?多谢,越详细越好,一定给分!

解决方案 »

  1.   

    用BYTE数组,MSCOMM就看VB6的例子,MSDN上就有。
    多看帮助和源码,这个市程序员的最基本准则
      

  2.   

    function TYKTComServer.CashTerm(TermNo: Integer): WordBool;
    var//现金收费机
      InputArr0,InputArr1,OutArr:array of byte;
      Temp:byte;
      i,j,k:integer;
      rtn:boolean;
    begin
      try
        result:=false;    SetLength(InputArr0,1);
        InputArr0[0]:=TermNo;    setlength(inputarr1,5);
        InputArr1[0]:=5;
        InputArr1[1]:=$30;
        InputArr1[2]:=$10;
        //校验值
        Temp:=0;
        for i:=0 to 2 do
          Temp:=Temp+InputArr1[i];
        InputArr1[3]:=Temp;
        Temp:=0-Temp;
        InputArr1[4]:=Temp;    with FrmMain.Comm do
          for k:=0 to 1 do
            begin
              OutBufferCount:=0;
              InBufferCount:=0;          Settings:='57600,M,8,1';
              Output:=InputArr0;
              sleep(3);          Settings:='57600,S,8,1';
              Output:=InputArr1;
              rtn:=false;
              sleep(15);          j:=InBufferCount;
              if (CommEvent=2) and (j<>0) then
                begin
                  rtn:=true;
                  setlength(OutArr,j);
                  OutArr:=Input;
                  if j=OutArr[0] then //check length
                    begin
                      Temp:=0;  //check
                      for i:=0 to j-3 do
                        Temp:=Temp+OutArr[i];
                      if Temp=OutArr[j-2] then
                        begin
                          Temp:=0-Temp;
                          if Temp=OutArr[j-1] then
                            if OutArr[1]=$10 then
                              begin
                                Result:=true;
                                exit;
                              end;
                        end;
                    end;
                end;
              if not rtn then exit;
            end;
      except
        InitializeComm;
      end;
    end;初学时写的
    很烂
    不好意思
    ^_^