注册 登录
编程论坛 Delphi论坛

读卡器如何和delphi相连

aaron52088 发布于 2007-03-13 15:49, 2036 次点击
想问下大家,我读卡器是接打印机接口的,
怎么可以和我写的delphi程序相连接啊,
帮忙了,3Q先
9 回复
#2
stars_chen2007-03-14 17:17
首先你要知道讀卡器輸出的數據格式是什麽.
然後你可以用一種數據線把打印機接口轉換成COM口,就是一邊接頭接讀卡器的接口,另一邊接電腦的COM口.
DELPHI再通過對COM連接來獲取數據進行處理.

[此贴子已经被作者于2007-3-14 17:18:55编辑过]

#3
sgliuxiu2007-03-14 18:06
你说的读卡器是不是车道读卡器?建议去那些工控站点看看.
#4
aaron520882007-03-18 10:16
以下是引用stars_chen在2007-3-14 17:17:53的发言:
首先你要知道讀卡器輸出的數據格式是什麽.
然後你可以用一種數據線把打印機接口轉換成COM口,就是一邊接頭接讀卡器的接口,另一邊接電腦的COM口.
DELPHI再通過對COM連接來獲取數據進行處理.

谢谢大家先.
已经有数据线和COM相连了,
读卡器是用科密IT-2200A的,
想问的是怎么通过对COM连接来读取数据的,
我用的是MCSCOMM控件,想读在EDIT1.TEXT中.
但是卡的存储区字段分布我不知道啊,
是自己定义的吗?

#5
stars_chen2007-03-20 09:12
我用過的是TCOMPORT控件,不過我想原理都是差不多的了.
你讀取數據寫在控件的一個事件裏面,當COM口有數據傳輸過來時就會處發這個事件,
你再讀取他的數據,這個事件就是你在你的MCSCOMM控件裏去找一下.
卡的數據格式應該是找廠商提供他輸出的格式,並不是自己定義的.
#6
aaron520882007-03-20 09:31
我是这样写的,不过连接读卡器后并没有在memo1里面显示出卡的内容,
请问下是什么地方错了,谢谢啦~
procedure TForm1.MSComm1Comm(Sender: TObject);
var
SerialInput:variant;
serialdatalength,i,tmpint:integer;
begin
if mscomm1.CommEvent=2 then
begin
serialinput:=form1.MSComm1.Input ; //读取串口数据
serialdatalength:=form1.MSComm1.InBufferCount;//读取数据的长度
for i:=0 to serialdatalength-1 do
begin
tmpInt:=serialinput[i];
memo1.Text:=memo1.Text+serialinput[i];
end;
end
else showmessage('读卡器没有连接好');
end;
#7
stars_chen2007-03-20 11:00
這個控件我沒有用過.我覺得form1.MSComm1.Input 這個有問題吧,
你可以單步來調試程式,看一下每執行一步他都是什麽值了.
#8
aaron520882007-03-22 11:18

procedure TForm1.FormCreate(Sender: TObject);
begin
str:='';
mscomm1.PortOpen:=true;

end;

procedure TForm1.MSComm1Comm(Sender: TObject);
begin
if MSComm1.CommEvent=ComEvReceive then
begin
str:=str+MSComm1.Input;
if copy(str,length(str),1)=chr(3) then
begin
memo1.Text:=copy(str,1,length(str)-1);
str:='';
end;
end;
end;
这样可以吗?谢谢大家乐

#9
jfjy_02007-03-22 11:33
这个要知道通讯协议啦
双方以什么方式发送或者接收数据的
以字符方式还是数值方式,数据的格式是什么样的,等等
#10
aaron520882007-03-23 10:37
只知道那个读卡器的频率是19200,其他数据位和校验位都不知道,
但是就那几位可以自己试试看的。
主要是先看看程序有没有问题的,
我暂时把MCSComm的控件设置成19200,N,8,1的。
如果程序没有问题的话,我再改改数据位和校验位的。
大家再帮帮忙得,谢谢啦。

再问问以ASCII码的方式,就应该是以字符的方式吧?
1