问题:我从串口发送十六进制串
‘3c 0e 01 71 13 90 58 15 08 68 00 00 d1 a8 bd 24 0c 0d' 
但我收到的却是十六进制串 
‘3c 0e 01 71 13 90 58 15 08 68 00 00 d1 a8 3f 0c 0d'
‘bd 24'变成了‘3f'
部分代码如下:
函数说明:
Get_BccEnd(KeyStr):取得串的异或值和结束位’0d' 即得到串:
‘3c 0e 01 71 13 90 58 15 08 68 00 00 d1 a8 bd 24 0c 0d' ;
Rf_Key_Down():向串口发送串:
‘3c 0e 01 71 13 90 58 15 08 68 00 00 d1 a8 bd 24 0c 0d' ;
procedure TFrm_Key_Down.BTn_Load_KeyClick(Sender: TObject);
Var
   iPOrt_RetState:integer;
   KeyStr:Widestring;
Begin
   Edit1.text:='139058150868';
   KeyStr:='3c0e0171'+Edit1.Text+'0000'+'d1a8bd24';
   Keystr:=get_BccEnd(Keystr);
   iPOrt_RetState:=Rf_Key_Down(amsComm[Int_Com],keyStr);
End;Function Get_BccEnd(BccStr:String):String;
Var
  Xor_Int,i:Integer;
  Bcc_Bit:String;
Begin
  Xor_Int:=HexToStr(Copy(BccStr,1,2)) Xor HexToStr(Copy(BccStr,3,2));
    fOR I:=3 TO Trunc(length(BccStr)/2) DO
    Xor_Int:=xor_Int xor HexToStr(Copy(BccStr,2*i-1,2));
    Bcc_Bit:=Inttohex(Xor_int,2);
    If Length(Bcc_Bit)=1 Then
       Bcc_Bit:='0'+Bcc_Bit;
    Result:=BccStr+Bcc_Bit+'0D';
End;Function Rf_Key_Down(MsComm:TMsComm;Var keyStr:Widestring):Integer;
Var
  iPOrt_RetState,i:integer;
  Hstr:string;
Begin
  CurMSComm:=MSComm;
  Hstr:=KeyStr;
  For i:=1 to trunc((length(Hstr))/2) Do
    Begin
      Query_Card[i]:=Chr(StrToIntDef('$'+Copy(HStr,i*2-1,2),10));
    End;
  CurMSComm.Output:=Query_Card[1]+Query_Card[2]+Query_Card[3]+Query_Card[4]+Query_Card[5]+Query_Card[6]+Query_Card[7]+Query_Card[8]+Query_Card[9]+Query_Card[10]+Query_Card[11]+Query_Card[12]+Query_Card[13]+Query_Card[14]+Query_Card[15]+Query_Card[16]+Query_Card[17]+Query_Card[18];
  sleep(100);
End;请问为什么会出现这种情况?如何解决!谢谢!欢迎各位提出意见和建议。