⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 新建 文本文档 (2).txt

📁 串口通讯关于磁卡读写相关文章 资料串口控件的介绍和使用
💻 TXT
字号:

Win98/2000 下32位动态链接库函数说明

================================================================================
一、JINCARD7.dll函数说明(SJE313B、SJE323B、SJE333B、SJE343B、SJE353B写卡机)

1) Init_com(sett:pchar):integer

 功能:初始化串口.

 返回:整型
     =    1:正确。
          0:通信失败。
         -1:串口打开错误。
         -3:串口设置错误。


 参数:
    sett: 字符串,用来设置串口.
       格式:"1,9600,N,8,1" ------ (1=com1或2=com2),
					(9600=baud9600或4800=baud4800
					 或2400=baud2400或1200=baud1200),
					(N=无校验或O=奇校验或N=偶校验),
					(8=8个数据位或7=7个数据位),
					(1=1个停止位或2=2个停止位).
       如:"2,9600,O,7,1" 表示串口2,波特率9600.奇校验,7个数据位,1个停止位.

--------------------------------------------------------------------------------
2)  close_com
  功能:关闭Init_com函数打开的串口.
  返回:无返回
  参数:无参数

--------------------------------------------------------------------------------
3) Wcard(wdata:pchar;track:integer):integer;
  功能:控制SJE353B磁卡读写机进行写磁卡操作.
  返回: 整型
   =  1: 写卡正确
     -1: 所选串行口打不开
     -2: 与磁卡读写机通信失败(磁卡机没有与主机连接或连接不正确)
     -3: 串口设置错误
     -4: 写卡错误
     -5: 用户 ESC 退出当前操作
     -6: 写卡操作超时,现退出当前操作
     -8: 通信失败
  参数:
  track: 需要进行写卡操作的磁道选择号(具体定义如下:)
            --------  1:选择第1磁轨
 	              2:选择第2磁轨
 		      3:选择第3磁轨
 		      4:选择第2和第1磁轨
 		      5:选择第2和第3磁轨

  当track为6时,此时的功能为硬复位。

  wdata: 字符串,所要向卡上写的数据.
       格式:"磁道1数据"	           ------  写第1轨数据(此时 track 为1)
  	    "磁道2数据"            ------  写第2轨数据(此时 track 为2)
  	    "磁道3数据"            ------  写第3轨数据(此时 track 为3)
  	    "磁道2数据a磁道1数据"  ------  写第2轨数据和第1轨数据(此时track 为4,
  	                                       小写字符a作为磁道2和磁道1的数据的间隔符)
  	    "磁道2数据a磁道3数据"  ------  写第2轨数据和第3轨数据(此时track 为5,
  	     				       小写字符a作为磁道2和磁道3的数据的间隔符)

       其中: 小写字符a为磁道2与磁道1(或磁道2与磁道3)的数据的分隔符
             1轨数据可为字母或数字,最多76个
             2轨数据只可为数字,最多37个
             3轨数据只可为数字,最多104个

       如:   Wcard("1111111111",1)
                        -------- 表示向第1磁轨中写入数据:1111111111
             Wcard("2222222222",2)
                        -------- 表示向第2磁轨中写入数据:2222222222
             Wcard("3333333333",3)
                        -------- 表示向第3磁轨中写入数据:3333333333
             Wcard("2222222222a1111111111",4)
                        -------- 表示向第2磁轨中写入数据:2222222222 并且
                                     向第1磁轨中写入数据:1111111111
             Wcard("2222222222a3333333333",5)
                        -------- 表示向第2磁轨中写入数据:2222222222 并且
                                     向第3磁轨中写入数据:3333333333

--------------------------------------------------------------------------------
4) Rcard(rdata:pchar;track:integer):integer;
  功能:控制sje353b进行读磁卡操作,按ESC键可退出.
  返回: 整型
   =  1:    读卡正确,
     -1:    所选串行口打不开
     -2:    与磁卡读写机通信失败(磁卡机没有与主机连接或连接不正确)
     -3:    串口设置错误
     -4:    读卡错误
    -41:    第一磁道读卡失败
    -42:    第二磁道读卡失败
    -43:    第三磁道读卡失败
     -5:    用户 ESC 退出当前操作
     -6:    读卡操作超时,现退出当前操作
     -8:    通信失败
  参数:
  track: 需要进行读卡操作的磁道选择号(具体定义如下:)
            --------  1:选择第1磁轨
 	              2:选择第2磁轨
 		      3:选择第3磁轨
 		      4:选择第2和第1磁轨
 		      5:选择第2和第3磁轨

  rdata: 读卡数据输出缓冲区(用于存放读卡成功后的返回数据)字符串,长度不少于300字节.
	读卡成功返回格式:
	     rdata = "磁道1数据" 	     ------- 返回磁道1数据(此时track为1)
	     rdata = "磁道2数据"             ------- 返回磁道2数据(此时track为2)
	     rdata = "磁道3数据"             ------- 返回磁道3数据(此时track为3)
	     rdata = "磁道2数据a磁道1数据"   ------- 返回磁道2数据和磁道1数据(此时track为4)
	     rdata = "磁道2数据a磁道3数据"   ------- 返回磁道2数据和磁道3数据(此时track为5)

   	读卡错误: Rcard函数返回值为-4

        其中: 小写字符a为磁道2与磁道1(或磁道2与磁道3)的数据的分隔符
             1道数据可为字母或数字,最多76个
             2道数据只可为数字,最多37个
             3数据只可为数字,最多104个

        如:
             Rcard(rdata,1)
                       -------- 表示从第1磁轨中读取数据(存放在rdata中)
             Rcard(rdata,2)
                       -------- 表示从第2磁轨中读取数据(存放在rdata中)
             Rcard(rdata,3)
                       -------- 表示从第3磁轨中读取数据(存放在rdata中)
             Rcard(rdata,4)
                       -------- 表示从第2磁轨和第1磁轨中读取数据
                                     (存放在rdata中,中间以小写字符a作间隔)
             Rcard(rdata,5)
                       -------- 表示从第2磁轨和第3磁轨中读取数据
                                     (存放在rdata中,中间以小写字符a作间隔)

5) Den_Set(cmd:integer):integer
 功能:设置记录密度
 参数:整型
       1:为低密
       2:为高密

 返回:整型
    =  1:正确
       0: 失败
      -1: 所选串行口打不开
      -2: 与磁卡读写机通信失败(磁卡机没有与主机连接或连接不正确)
      -3: 串口设置错误
      -8: 通信失败
 当记录密度设置成低密时,磁道2最大字符数为37个。
 当记录密度设置成高密时,磁道2最大字符数为104个。

6) Rec_Set(cmd:integer):integer
 功能:设置记录格式
 参数:整型
       1:为ISO记录格式
       2:为IBM记录格式
 返回:整型
    =  1:正确
       0: 失败
      -1: 所选串行口打不开
      -2: 与磁卡读写机通信失败(磁卡机没有与主机连接或连接不正确)
      -3: 串口设置错误
      -8: 通信失败

================================================================================
二、card.dll函数说明(SJE363B写卡机)

1) Init_comm(sett:pchar):integer
 功能:初始化串口.
 返回:整型
     =    1:正确。
          0:通信失败。
         -1:串口被占用。
         -3:串口设置错误。
 参数:
    sett: 字符串数组,用来设置串口.
       格式:"1,9600,N,8,1" ------ (1=com1或2=com2),
					(9600=baud9600或4800=baud4800
					 或2400=baud2400或1200=baud1200),
					(N=无校验或O=奇校验或E=偶校验),
					(8=8个数据位或7=7个数据位),
					(1=1个停止位或2=2个停止位).	
       如:"2,9600,O,7,1" 表示串口2,波特率9600.奇校验,7个数据位,1个停止位.

--------------------------------------------------------------------------------
2)  close_comm
  功能:关闭Init_com函数打开的串口.
  返回:无返回 
  参数:无参数

--------------------------------------------------------------------------------
3) Link:integer;
  功能:控制磁卡读写机进行联络操作.
  返回: 整型
   =  1: 联络正确
     -1: 所选串行口打不开
     -2: 与磁卡读写机通信失败(磁卡机没有与主机连接或连接不正确)
     -3: 串口设置错误
  参数:无

--------------------------------------------------------------------------------
4) _reset:integer;
  功能:控制磁卡读写机进行复位操作.
  返回: 整型
   = -1: 所选串行口打不开
     -2: 与磁卡读写机通信失败(磁卡机没有与主机连接或连接不正确)
     -3: 串口设置错误
  参数:无

--------------------------------------------------------------------------------
5) W_card(wdata:pchar):integer;
  功能:控制磁卡读写机进行写磁卡操作.
  返回: 整型
   =  1: 写卡正确
     -1: 所选串行口打不开
     -2: 与磁卡读写机通信失败(磁卡机没有与主机连接或连接不正确)
     -3: 串口设置错误
     -4: 写卡错误
     -5: 按"ESC"键退出写卡
  参数:
  wdata : 字符串数组,所要向卡上写的数据.
       格式:"%xxxxxxxxxxxxxx?"	   ------  写第1轨数据(其中:x	为数据)
  	    ";xxxxxxxxxxxxxx?"     ------  写第2轨数据(其中:x	为数据)  
	    
  	    "+xxxxxxxxxxxxxx?"     ------  写第3轨数据(其中:x	为数据)
  	    "%xxxxx?;xxxxxxx?"     ------  写第1,2轨数据(其中:x为数据)
  	    ";xxxxx?+xxxxxxx?"     ------  写第2,3轨数据(其中:x为数据)
	    "%xxxxx?;xxxxxxx?+xxxxxx?"     ------  写第1,2,3轨数据(其中:x为数据)

             1轨数据可为字母或数字,最多76个
             2轨数据只可为数字,最多37个 	
             3轨数据只可为数字,最多104个
             
       如:   W_card("%1111111111?")
                        -------- 表示向第1磁轨中写入数据:1111111111
             W_card(";2222222222?")
                        -------- 表示向第2磁轨中写入数据:2222222222
             W_card("+3333333333?")
                        -------- 表示向第3磁轨中写入数据:3333333333
             W_card("%2222222222?;1111111111?")
                        -------- 表示向第2磁轨中写入数据:2222222222 并且
                                     向第1磁轨中写入数据:1111111111
             W_card(";2222222222?+3333333333?")
                        -------- 表示向第2磁轨中写入数据:2222222222 并且                       
                                     向第3磁轨中写入数据:3333333333
             W_card("%1111111111?;2222222222?+3333333333?")
                        -------- 表示向第1磁轨中写入数据:1111111111 并且
                        	     向第2磁轨中写入数据:2222222222 并且                       
                                     向第3磁轨中写入数据:3333333333

--------------------------------------------------------------------------------
6) R_card(rdata1:pchar;rdata2:pchar;rdata3:pchar;track:integer):integer;
   功能:控制读磁卡操作.
   返回: 整型
   =  1:    读卡正确,
     -1:    所选串行口打不开
     -2:    与磁卡读写机通信失败(磁卡机没有与主机连接或连接不正确)     
     -3:    串口设置错误
     -4:    读卡错误
    -41:    第一磁道读卡失败
    -42:    第二磁道读卡失败
    -43:    第三磁道读卡失败
   -412:    第一,二磁道读卡失败
   -413:    第一,三磁道读卡失败
   -423:    第二,三磁道读卡失败

     -5:    按"ESC"键退出写卡
   参数:
   track: 需要进行读卡操作的磁道选择号(具体定义如下:)
            --------  1:选择第1磁轨
 	              2:选择第2磁轨
 		      3:选择第3磁轨
 		      4:选择第2和第1磁轨
 		      5:选择第2和第3磁轨
 		      6:选择第1和2及第3磁轨

   rdata1: 存放磁道1中的数据。
   rdata2: 存放磁道2中的数据。
   rdata3: 存放磁道3中的数据。

   字符串数组,长度不少于300字节.
   1道数据可为字母或数字,最多76个
   2道数据只可为数字,最多37个
   3数据只可为数字,最多104个

================================================================================
例程(以JINCARD7.DLL函数为例,其它动态库函数用法可参照以下例程):

  在演示程序中把dll文件声明于implementation中下面
  function Rcard(rdata:pchar;track:integer):integer;stdcall;external'JINCARD7.dll';
  function Wcard(wdata:pchar;track:integer):integer;stdcall;external'JINCARD7.dll';

  //主程序 :

  if 1 = Init_com('1,9600,n,8,1') then  //初始化端口成功
  begin
    if 1 = Rcard(rdata,5) then          //调用库中的读函数,读二,三磁道,若成功则
    begin
      i:=pos ('a',rdata);
      strlcopy(str2,rdata,i-1);         //拷贝磁道二中的内容于str2中
      strcopy(str3,rdata+i);            //拷贝磁道三中的内容于str3中
      ShowMessage('读卡成功!');        //显示读卡成功对话框
    end;
    wdata:= '2222222222a333333333';
    if 1 = Wcard(wdata,5) then          //调用库中的写函数进行写二,三磁道,若成功则
    begin
      ShowMessage('写卡成功!');        //显示写卡成功对话框
    end;
  end;                                  //根据Wcard函数所返回值判断写卡的状态

注意:
    1. 将DLL文件拷贝到\windows\system\目录下。
    2. 仅系统启动时初始化串口,系统退出时关闭串口。
    3. 字符串变量定义时,一定要分配字符空间。
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -