zoukankan      html  css  js  c++  java
  • 磁卡YD606的读写

    {*******************************************************}
    {                                                       }
    {       陈新光                                          }
    {                                                       }
    {       版权所有 (C) 2007 咏南工作室                    }
    {                                                       }
    {*******************************************************}
    unit Unit1;
    interface
    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls, SPComm;
    type
    TForm1 = class(TForm)
    btnRead: TButton;
    btnWrite: TButton;
    edt1: TEdit;
    btnClear: TButton;
    lbl1: TLabel;
    procedure btnClearClick(Sender: TObject);
    procedure btnWriteClick(Sender: TObject);
    procedure btnReadClick(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;
    var
    Form1: TForm1;
    function RTr2card(comn,inTr2str:pchar):Integer;stdcall;external'rwcommnew.dll';
    function WTr2card(comn,inTr2str:string):Integer;stdcall;external'rwcommnew.dll';
    implementation
    {$R *.dfm}
    procedure TForm1.btnClearClick(Sender: TObject);
    begin
    edt1.Clear;
    end;
    procedure TForm1.btnWriteClick(Sender: TObject);
    begin
    if WTr2card('com1',edt1.Text)<>1 then
    ShowMessage('error');
    end;
    procedure TForm1.btnReadClick(Sender: TObject);
    var
    comm,s:string;
    begin
    comm := 'com1';
    SetLength(s, 1024);
    if RTr2card(pchar(comm),pchar(s))<>1 then
    ShowMessage('error')
    else
    edt1.text := s;
    end;
    end.
    可单读、写二或三磁道,也可同时读、写二、三磁。
    此例程使用厂家提供的DLL,只对二磁道进行读、写。
    2007-10-6 8:26:42
    发表评语&raquo;&raquo;&raquo;
    2007-10-6 8:29:36    磁卡知识 磁卡知识
    磁  卡
     
    1、磁卡分类
       磁条型:一般抗磁力卡(300oe)
           高抗磁力卡 (3500oe)
       直接涂印型:低抗磁力卡(300oe) (如:公园门票)
             高抗磁力卡(2700oe)(如:地铁卡、电话卡)
     
    2.磁条和磁道
      磁条上有3个磁道。磁道1与磁道2是只读磁道,在使用时磁道上记录的信息只能读出而不允许写或修改。磁道3为读写磁道,在使用时可以读出,也可以写入。
      磁道1可记录数字(0-9)、字母(A-Z)和其他一些符号(如括号、分隔符等),最大可记录79个数字或字母。
      磁道2和3所记录的字符只能是数字(0-9)。磁道2最大可记录40个字符,磁道3最大可记录107个字符。
     
    3.磁卡读写器
      一般非金融领域用磁卡,只将信息记录在第2磁道,单2轨的只读阅读器售价400元/台,单2轨的可读可写的读写器售价1800元/台。
      金融领域用磁卡,磁道1、2、3都可能用,如工行用1、3磁道,建行用2、3磁道。1、2、3磁道均可读写的读写器售价4800元/台。
      以上可看出,磁卡的阅读器很便宜,但读写器较贵,由于一般的应用中,磁卡只记录个人帐号等只读信息,使用时并不往卡中写信息,所以很多客户会让我公司出厂时,将信息代写入磁卡中,即“写磁”加工。卡本身在我厂生产的,“写磁”费0.05元/张,卡不在我厂生产的,“写磁”费0.2--0.3元/张。
     
    4.磁卡的安全及存在问题
    A.卡的保密性和安全性较差
      磁条上的信息比较容易读出,非法修改磁条上的内容也较容易,所以大多情况下磁卡都是作为静态数据输入使用。虽然第3磁道可读写,并且有金额字段,也只是用于小金额的应用领域,例如电话卡。
    B.使用磁卡的应用系统需要有可靠的计算机系统和中央数据库的支持
      在金融行业,作为金融交易卡的磁卡,一般配合强大、可靠的计算机网络系统使用,金额、交易记录等信息,均保存在金融机构计算机的数据库中,用户所持的卡片只是提供用户的主帐号等索引信息,便于在数据库中迅速找到用户数据。
     
     
    磁卡国际标准
     
    1.ISO 7810:1985 识别卡 物理特性
      规定了卡的物理特性,包括卡的材料、构造、尺寸。
      卡的尺寸为:宽度 85.72mm----85.47mm
      高度 54.03mm----53.92mm
      厚度 0.76±0.08mm
      卡片四角圆角半径 3.18mm
      一般讲卡的尺寸为:85.5 X 54 X 0.76
    2.ISO 7811-1:1985 识别卡 记录技术 第1部分:凸印
      规定了卡上凸印字符的要求(字符集、字体、字符间距和字符高度)。
    3.ISO 7811―2:1985 识别卡 记录技术 第2部分:磁条
      规定了卡上磁条的特性、编码技术和编码字符集。 4.ISO 7811―3:1985 识别卡 记录技术 第3部分:ID-1型卡上凸印字符的位置
    5.ISO 7811―4:1985 识别卡 记录技术 第4部分:只读磁道的第1、2磁道位置
    6.ISO 7811―5:1985 识别卡 记录技术 第5部分:读写磁道的第3磁道位置
    2007-10-6 10:08:10    {*******************************************************}
    {                                                       }
    {       陈新光                                          }
    {                                                       }
    {       版权所有 (C) 2007 咏南工作室                    }
    {                                                       }
    {*******************************************************}
    unit Unit1;
    interface
    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls, SPComm;
    type
    TForm1 = class(TForm)
    btnRead: TButton;
    btnWrite: TButton;
    edt1: TEdit;
    btnClear: TButton;
    lbl1: TLabel;
    lbl2: TLabel;
    edtCardId: TEdit;
    lbl3: TLabel;
    edtNum: TEdit;
    procedure btnWriteClick(Sender: TObject);
    procedure btnReadClick(Sender: TObject);
    procedure btnClearClick(Sender: TObject);
    private
    { Private declarations }
    function FindStr(ShortStr: String; LongStrIng: String): Integer;  //返回子串在字符串中的位置
    public
    { Public declarations }
    end;
    var
    Form1: TForm1;
    function RTr2card(comn,inTr2str:pchar):Integer;stdcall;external'rwcommnew.dll';
    function WTr2card(comn,inTr2str:string):Integer;stdcall;external'rwcommnew.dll';
    implementation
    {$R *.dfm}
    procedure TForm1.btnWriteClick(Sender: TObject);
    begin
    if WTr2card('com1',edt1.Text)<>1 then
    ShowMessage('error');
    end;
    procedure TForm1.btnReadClick(Sender: TObject);
    var
    comm,s:string;
    i:Integer;
    begin
    comm := 'com1';
    SetLength(s, 1024);                  //必须预先分配内存
    if RTr2card(pchar(comm),pchar(s))<>1 then
    ShowMessage('error')               //取磁卡存储内容
    else
    edt1.text := s;
    s:=Copy(edt1.Text,1,8);              //取会员卡号(固定为8位,不足8位的前面补0)
    edtCardId.Text:=IntToStr(StrToInt(s));
    i:=FindStr('42',edt1.Text)-2;        //取会员积分(从第12位始,至'42'子串前两位)
    edtNum.Text:=Copy(edt1.Text,12,i-12);
    end;
    function TForm1.FindStr(ShortStr, LongStrIng: String): Integer;
    var
    locality: integer;
    begin
    locality := Pos(ShortStr, LongStrIng);
    if locality = 0 then
    Result := 0
    else
    Result := locality;
    end;
    procedure TForm1.btnClearClick(Sender: TObject);
    var
    i:Integer;
    begin
    for i:=0 to ComponentCount-1 do
    if Components[i] is TEdit then
    (Components[i] as TEdit).Clear;
    end;
    end. 
  • 相关阅读:
    Windows Server 2003中不能安装MSN的解决方法
    招新人的一个标准
    SVN源代码服务器 证书通不过时的解决办法
    项目风险控制
    项目与团队管理体会
    季羡林老先生百年为人处世哲学
    李一男2003年在港湾给开发人员培训时的语录
    项目管理中的一些想法
    poj 1236 Network of Schools
    poj 2528 Mayor's posters
  • 原文地址:https://www.cnblogs.com/ghd2004/p/1340716.html
Copyright © 2011-2022 走看看