如何获得串口的数据!(100分)

  • 主题发起人 jiangpengxmaya
  • 开始时间
J

jiangpengxmaya

Unregistered / Unconfirmed
GUEST, unregistred user!
请问如何在delphi中获得串口的数据!例如:一个读卡机是连在串口上的,
如何编程获得读卡机传来的数据!需要详细代码!!谢谢!
 
找一个SPCOMM有例子,还有一般IC卡都提供驱动程序,有接口函数
 
您能不能提供一个例子阿!如果读卡器没有驱动程序!就是一个标准的R232接口!您说怎么办啊!
 
用超级终端试不同的波特率,数据位等,只到能读出为止。记好设置,在程序中用相同设置,我想
应该能行。
 
对,应该先试验出读卡机的硬件串口设置信息,然后才好在程序中设置对应上就可以了。
具体用何控件或API随你喜欢了。
我喜欢用MOXA的PCOMM不用担心将来的MOXA扩展了,注好运[:D]
 
也可用mscomm控件
例子:
  procedure TForm1.FormCreate(Sender: TObject);
  begin
  Mscomm1.InBufferCount :=0; // 清空接收缓冲区
  Mscomm1.InputLen :=0; // Input读取整个缓冲区内容
  Mscomm1.RThreshold :=1; // 每次接收到字符即产生OnComm事件
  end;
  procedure TForm1.Button1Click(Sender: TObject);
  begin
  Mscomm1.Settings :=ComboBox1.Text;
  if ComboBox2.Text ='com1' then // 假设只考虑com1和com2两种情况
    Mscomm1.CommPort :=1
  else
    Mscomm1.CommPort :=2;
  Mscomm1.PortOpen :=true; // 打开串口
  Mscomm1.DTREnable :=true; // 数据终端准备好
  Mscomm1.RTSEnable :=true; // 请求发送
  end;
  procedure TForm1.Button2Click(Sender: TObject);
  begin
  Mscomm1.PortOpen :=false; // 关闭串口
   Mscomm1.DTREnable :=false;
  Mscomm1.RTSEnable :=false;
  end;
  procedure TForm1.MSComm1Comm(Sender: TObject);
  var
  recstr:Olevariant;
  begin
   if Mscomm1.CommEvent = 2 then
    begin
  recstr := Mscomm1.Input ;
  Memo1.text := Memo1.Text + recstr;
  end;
  end;
  
 
用spcomm吧,时尚流行!!
设好控件的属性如波特率,校验位后,在spcomm控件的onreceivedata事件里加上如下代码:
var rcvstr:string;
begin
move(buffer^,rcvstr,bufferlength);
memo.lines.add(rcvstr);
end;
 
to lotusleaf:
有spcomm的详细使用说明和例子吗?
提供一个下载地址或发给我(E_mail:tang_717@163.com),谢谢!
 
procedure TMainForm.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
i:Integer;
AgreeMent : PChar;
ReadBuffer : Array[0..6] of Byte;//这里的长度有你自己定义
aa:String;
begin
AgreeMent:=PChar(Buffer);
System_OK:=False;
for i:=0 to 6 do
ReadBuffer:=Byte(AgreeMent);//这里是转型以后的十进制数。
end;

如果你传送的是windows识别码,就不用进行PCHar,直接就可进行数据处理。

有问题可以和我联系。
 
用MCS-51做个单片机,编段小程序去侦听串行口!
 
顶部