请教各位,开发环境windows 2000+delphi6,利用mscomm控件,接收读卡器的数据,最终要获得卡号。我写了一些代码,但是edit控件显示的是乱码“??糋”,如何显示出来我们可以看懂的数据呢,无论是二进制还是十进制,或者是十六进制,procedure TForm1.FormCreate(Sender: TObject);
begin
self.MSComm1.CommPort:=1;
self.MSComm1.PortOpen:=true;
self.MSComm1.Settings:='9600,n,8,1';
self.MSComm1.RThreshold:=7;
self.MSComm1.InputMode:=comInputModeBinary;
self.MSComm1.InBufferCount:=0;
self.MSComm1.InputLen:=0;
end;procedure TForm1.MSComm1Comm(Sender: TObject);
var
str:olevariant;
begin
 str:=self.MSComm1.Input;
 self.Edit1.Text:=str;
end;

解决方案 »

  1.   

    传送卡号的数据格式: 
    AAH FFH D0 D1 D2 D3 D4 校验和数据结构(共8字节)的说明:
    地  址 定  义
    0-1 命令码(AA  FF)
    2-6 40位卡号
    7 校验和(地址0-6位共7字节“XOR”异或值 )
    举例:某40位卡号为01021DF6FA(HEX),对应发送格式为:
    AAH FFH 01 02 1DH F6H FAH 47H
    其卡号为5个字节:01H 02H 1DH F6H FAH
    因为卡号现在还未全部分配,一般前1个字节作为出厂编码,后4个字节为现在实际使用卡号,编程时可将这4个字节存入一长整数中,显示出来就是10进制卡号了。
    举例中的十进制的卡号为:0035518202
      

  2.   

    读取字节就要按照byte来读取 定义byte流数组好了   按照字符串读出来肯定是乱码拉
      

  3.   

    byte流数组应该是可以的,你要注意的是数组的长度。
    你可先设一下COM口的接收长度。