procedure TForm1.MSComm1Comm(Sender: TObject);
var 
receive:olevariant;
begin
if mscomm1.CommEvent=ComEvReceive then
begin
receive:=MsComm1.Input;
?//加什么代码?
memo1.Lines.Add('?');
   end;
 end;

解决方案 »

  1.   

    memo1.Lines.Add(receive);不行吗??
      

  2.   

    aiirii(ari-淘金坑) ( ) 信誉:409 memo1.Lines.Add(receive);//接受的是‘???‘
    我想读出卡号(形如S010002597416E),
      

  3.   

    如果你收的不是可显示的字符(S010002597416E),而是16进制数需要做转换,否则检查通讯参数。
    通讯参数设置正确,接受的MsComm1.Input,如何转换?
      

  4.   

    >>我想读出卡号(形如S010002597416E),从中看到有 'S' ,那说明不是十六进制了,但你又说直接取不出,那可能是一个混合协议这种,一般要根据设备给的通信协议来确定如何提取数据
      

  5.   

    但是我用串口测试工具测试后,memo1中接受的数据是S010002597416E,郁闷
      

  6.   


    procedure TForm1.MSComm1Comm(Sender: TObject);
    var 
    receive:olevariant;
    begin
    if mscomm1.CommEvent=ComEvReceive then
    begin
    receive:=MsComm1.Input;
    ?//加什么代码?使的memo1中正确显示S010002597416E,?
    memo1.Lines.Add('?');//目前显示的是‘???’,用listbox显示的是乱吗,
       end;
     end;
      

  7.   

    楼上的各位兄弟呢?waiting.....
      

  8.   

    begin
    receive:=MsComm1.Input;
    ?//加什么代码?
    memo1.text := memo1.text + receive;也可将 var receive: string;试验下
      

  9.   

    procedure TForm1.MSComm1Comm(Sender: TObject);
    var 
    receive:olevariant;
    begin
    if mscomm1.CommEvent=ComEvReceive then
    begin
    receive:=MsComm1.Input;
    ?//加什么代码,使的memo1中正确显示S010002597416E,?
    memo1.Lines.Add('?');//目前显示的是‘???’,用listbox显示的是乱吗,
       end;
     end;
      

  10.   

    csdn的人气大不如从前。2 2 2 2 2 2 22 2 ..........
      

  11.   

    aiirii(ari-淘金坑) ( ) 信誉:409 ?信誉:409 ????????????????到底是斑竹呀
      

  12.   

    procedure TForm1.MSComm1Comm(Sender: TObject);
    var 
    receive:olevariant;
    begin
    if mscomm1.CommEvent=ComEvReceive then
    begin
    receive:=MsComm1.Input;
    ?//加什么代码,使的memo1中正确显示S010002597416E,?
    memo1.Lines.Add('receive');//目前显示的是‘???’,用listbox显示的是乱吗,
       end;
     end;
      

  13.   

    procedure TForm1.MSComm1Comm(Sender: TObject);
    var 
    receive:olevariant;
    begin
    if mscomm1.CommEvent=ComEvReceive then
    begin
    receive:=MsComm1.Input;
    ?//加什么代码,使的memo1中正确显示S010002597416E,?
    memo1.Lines.Add('receive');//目前显示的是‘???’,用listbox显示的是乱吗,
       end;
     end;
      

  14.   

    你的详细操作不明白了。但是就你这个问题很容易解决。
    1、你所用的这个串口中的读取函数没有调用,调用的结果应该有个返回值,返回值就是你所需要的。如:read ,write之类。
    2、在调用函数的时候注意类型的转换。
    我用过各种读卡设备,有IC,有磁卡,不管什么都一样,调用厂家推荐的DLL最方便。
      

  15.   

    但是我用串口测试工具测试后,memo1中接受的数据是S010002597416E,郁闷
      

  16.   

    有可能接受到的是十六进制的数,需要转成ascii码。再或者你的控件参数设置不正确,或者换个控件看看,如:spcomm