| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 572 人关注过本帖
标题:读卡器如何和delphi相连
收藏  订阅  推荐  打印 
aaron52088
Rank: 2
等级:注册会员
帖子:130
积分:1400
注册:2007-1-24
读卡器如何和delphi相连

想问下大家,我读卡器是接打印机接口的,
怎么可以和我写的delphi程序相连接啊,
帮忙了,3Q先
搜索更多相关主题的帖子: delphi  读卡器  
2007-3-13 15:49
stars_chen
Rank: 2
等级:注册会员
威望:1
帖子:45
积分:550
注册:2006-11-15

首先你要知道讀卡器輸出的數據格式是什麽.
然後你可以用一種數據線把打印機接口轉換成COM口,就是一邊接頭接讀卡器的接口,另一邊接電腦的COM口.
DELPHI再通過對COM連接來獲取數據進行處理.

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


2007-3-14 17:17
sgliuxiu
Rank: 12Rank: 12Rank: 12
等级:贵宾
威望:12
帖子:231
积分:2424
注册:2007-2-2

你说的读卡器是不是车道读卡器?建议去那些工控站点看看.

小猫说:给我10元钱
2007-3-14 18:06
aaron52088
Rank: 2
等级:注册会员
帖子:130
积分:1400
注册:2007-1-24

以下是引用stars_chen在2007-3-14 17:17:53的发言:
首先你要知道讀卡器輸出的數據格式是什麽.
然後你可以用一種數據線把打印機接口轉換成COM口,就是一邊接頭接讀卡器的接口,另一邊接電腦的COM口.
DELPHI再通過對COM連接來獲取數據進行處理.

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


2007-3-18 10:16
stars_chen
Rank: 2
等级:注册会员
威望:1
帖子:45
积分:550
注册:2006-11-15

我用過的是TCOMPORT控件,不過我想原理都是差不多的了.
你讀取數據寫在控件的一個事件裏面,當COM口有數據傳輸過來時就會處發這個事件,
你再讀取他的數據,這個事件就是你在你的MCSCOMM控件裏去找一下.
卡的數據格式應該是找廠商提供他輸出的格式,並不是自己定義的.

2007-3-20 09:12
aaron52088
Rank: 2
等级:注册会员
帖子:130
积分:1400
注册:2007-1-24

我是这样写的,不过连接读卡器后并没有在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-3-20 09:31
stars_chen
Rank: 2
等级:注册会员
威望:1
帖子:45
积分:550
注册:2006-11-15

這個控件我沒有用過.我覺得form1.MSComm1.Input 這個有問題吧,
你可以單步來調試程式,看一下每執行一步他都是什麽值了.

2007-3-20 11:00
aaron52088
Rank: 2
等级:注册会员
帖子:130
积分:1400
注册:2007-1-24

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-3-22 11:18
jfjy_0
Rank: 1
等级:新手上路
帖子:4
积分:140
注册:2007-3-20

这个要知道通讯协议啦
双方以什么方式发送或者接收数据的
以字符方式还是数值方式,数据的格式是什么样的,等等
2007-3-22 11:33
aaron52088
Rank: 2
等级:注册会员
帖子:130
积分:1400
注册:2007-1-24

只知道那个读卡器的频率是19200,其他数据位和校验位都不知道,
但是就那几位可以自己试试看的。
主要是先看看程序有没有问题的,
我暂时把MCSComm的控件设置成19200,N,8,1的。
如果程序没有问题的话,我再改改数据位和校验位的。
大家再帮帮忙得,谢谢啦。

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

2007-3-23 10:37
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.059285 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved