标题:读卡器如何和delphi相连
只看楼主
aaron52088
Rank: 1
等 级:新手上路
帖 子:130
专家分:0
注 册:2007-1-24
 问题点数:0 回复次数:9 
读卡器如何和delphi相连
想问下大家,我读卡器是接打印机接口的,
怎么可以和我写的delphi程序相连接啊,
帮忙了,3Q先
搜索更多相关主题的帖子: delphi 读卡器 
2007-03-13 15:49
stars_chen
Rank: 1
等 级:新手上路
威 望:1
帖 子:45
专家分:0
注 册:2006-11-15
得分:0 
首先你要知道讀卡器輸出的數據格式是什麽.
然後你可以用一種數據線把打印機接口轉換成COM口,就是一邊接頭接讀卡器的接口,另一邊接電腦的COM口.
DELPHI再通過對COM連接來獲取數據進行處理.

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


2007-03-14 17:17
sgliuxiu
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:291
专家分:0
注 册:2007-2-2
得分:0 
你说的读卡器是不是车道读卡器?建议去那些工控站点看看.

小猫说:给我10元钱
2007-03-14 18:06
aaron52088
Rank: 1
等 级:新手上路
帖 子:130
专家分:0
注 册:2007-1-24
得分:0 
以下是引用stars_chen在2007-3-14 17:17:53的发言:
首先你要知道讀卡器輸出的數據格式是什麽.
然後你可以用一種數據線把打印機接口轉換成COM口,就是一邊接頭接讀卡器的接口,另一邊接電腦的COM口.
DELPHI再通過對COM連接來獲取數據進行處理.

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


2007-03-18 10:16
stars_chen
Rank: 1
等 级:新手上路
威 望:1
帖 子:45
专家分:0
注 册:2006-11-15
得分:0 
我用過的是TCOMPORT控件,不過我想原理都是差不多的了.
你讀取數據寫在控件的一個事件裏面,當COM口有數據傳輸過來時就會處發這個事件,
你再讀取他的數據,這個事件就是你在你的MCSCOMM控件裏去找一下.
卡的數據格式應該是找廠商提供他輸出的格式,並不是自己定義的.

2007-03-20 09:12
aaron52088
Rank: 1
等 级:新手上路
帖 子:130
专家分:0
注 册:2007-1-24
得分:0 
我是这样写的,不过连接读卡器后并没有在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;

2007-03-20 09:31
stars_chen
Rank: 1
等 级:新手上路
威 望:1
帖 子:45
专家分:0
注 册:2006-11-15
得分:0 
這個控件我沒有用過.我覺得form1.MSComm1.Input 這個有問題吧,
你可以單步來調試程式,看一下每執行一步他都是什麽值了.

2007-03-20 11:00
aaron52088
Rank: 1
等 级:新手上路
帖 子:130
专家分:0
注 册:2007-1-24
得分:0 

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;
这样可以吗?谢谢大家乐


2007-03-22 11:18
jfjy_0
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-3-20
得分:0 
这个要知道通讯协议啦
双方以什么方式发送或者接收数据的
以字符方式还是数值方式,数据的格式是什么样的,等等
2007-03-22 11:33
aaron52088
Rank: 1
等 级:新手上路
帖 子:130
专家分:0
注 册:2007-1-24
得分:0 
只知道那个读卡器的频率是19200,其他数据位和校验位都不知道,
但是就那几位可以自己试试看的。
主要是先看看程序有没有问题的,
我暂时把MCSComm的控件设置成19200,N,8,1的。
如果程序没有问题的话,我再改改数据位和校验位的。
大家再帮帮忙得,谢谢啦。

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

2007-03-23 10:37



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-124014-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.254689 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved