mscomm有一个收发数据属性,设为16进制收发便可,如下:
procedure   TFormMain.ReadCommByte();
  var   
      vTmp:variant;   
      CodeSize:Integer;   
      Code:Byte;   
  begin   
      StatusBar1.Panels[1].Text:='';   
      CodeSize:=MsCommCall.InBufferCount;   
      if   CodeSize>0   then   begin   
          vTmp:=VarArrayCreate([0,CodeSize-1],varByte);   
          vTmp:=MsCommCall.Input;   
          Code:=vTmp[CodeSize-1];   
      end   
      else   begin   
          Code:=C_None;   
      end;   
      AThreadCall.SetBackCode(Code);   
      case   Code   of   
      C_Idle:StatusBar1.Panels[0].Text:=Translate('C_Idle','Idle');   
      C_Succ:StatusBar1.Panels[0].Text:=Translate('C_Succ','Succ');   
      C_Err:StatusBar1.Panels[0].Text:=Translate('C_Err','Err');   
      C_None:StatusBar1.Panels[0].Text:=Translate('C_None','None');   
      else   StatusBar1.Panels[0].Text:=Translate('C_Unk','UnkCode   %xH',[Code]);   
      end;   
  end;   
    
  procedure   TFormMain.SendIdleCode();
  var   
      vTmp:variant;   
  begin   
      if   not   MsCommCall.PortOpen   then   begin   
          AddLog(Translate('IdleError','Comm   closed   when   send   idle   code!'),false);   
          exit;   
      end;   
      vTmp:=VarArrayCreate([0,0],varByte);   
      vTmp[0]:=Byte(0);//the   code   is   0x00h   
      MsCommCall.Output:=vTmp;   
      StatusBar1.Panels[1].Text:=Translate('Idle','Idle');   
  end;