APP下载

智能生物离子IC卡治疗仪中读写模块WM—11T6的软件设计

2017-09-04李玮丁莹亮

科技视界 2017年9期
关键词:软件设计治疗仪

李玮+丁莹亮

【摘 要】本款智能IC卡治疗仪采用的读写模块WM-11T6。读写模块WM-11T6的软件设计是智能IC卡治疗仪设计中非常重要的一部分。本文章主要论述IC卡读写模块WM-11T6的软件编程及IC卡读写程序清单。

【关键词】治疗仪;软件设计;软件清单

【Abstract】This intelligent IC card therapeutic device adopts the read-write module WM-11T6.The software design of the read-write module WM-11T6 is a very important part in the design of the intelligent IC card therapeutic apparatus. This article mainly discusses the IC card read and write module WM-11T6 software programming and IC card reading and writing program list.

【Key words】Therapeutic apparatus;Software design;Software list

本款智能生物离子IC卡治疗仪是为海南一家医疗设备生产厂商设计的,产品已经投入市场。本款治疗仪使用的是非接触式IC卡充值计费方式。本款治疗仪在经营模式上进行了创新,改变传统用户(医院或个人)购买整个产品的经营模式,变为用户只购买产品的使用权的经营模式,也就是说用户不再是医疗设备的拥有者只是使用者。本款治疗仪采用一机一卡管理模式:每台设备都只有一个唯一的ID号,治疗仪的ID号与IC卡的ID号相统一,本机的IC卡对其他治疗仪无效。使用治疗仪时,用户将购买的IC卡的全部金额一次性充入到设备中,IC卡被清空, 随之失效。此款智能生物离子IC卡治疗仪采用的读写模块WM-11T6,读写模块WM-11T6的软件设计是智能IC卡治疗仪设计中非常重要的一部分。

1 WM-11T6射频读写模块简介

WM-11T6射频读写模块采用的是最新Mifare技术的微型嵌入式非接触式IC卡读写模块。内部嵌有ISO14443 Type A协议解释器,并且具有接收和射频驱动功能,还可实现简单的对MifareOne等卡片的读写操作,最大读写距离可达100mm(具体距离与卡片及天线的设计有关)。

该模块提供标准异步串行通讯接口和输出TTL电平。用户只需通过串行通讯发送相关指令,即可实现对卡片的所有操作,不必详细了解非接触IC卡读写模块的协议标准和底层驱动。实物照片如图1所示。

1.1 WM-11T6射频读写模块基本参数

工作电压:DC5V

工作电流:<100mA

通讯接口:RS232接口,TTL电平,波特率为9600 BPS无校验位,8位数据位,1位停止位)

适用卡型:Mifare One

数据通讯:106KBPS

射频频率:13.56MHz

操作距离:<100mm

工作温度:-20℃ --- +65℃

存储温度:-40℃ --- +85℃

1.2 WM-11T6射频读写模块管脚定义

该模块尺寸为标准DIP32封装 (41mm×18mm) ,其管脚定义为:

VCC:+5V RX:天线接收

GND:地 TX1:天线发送1

TXD:模块发送(接单片机) TX2:天线发送2

RXD:模块接收(接单片机) GND:天线地

1.3 天线的接口定义

天线接口定义与WM-11T6射频读写模块一致:

RX:天线接收 TX1:天线发送1

TX2:天线发送2 GND:天线地

2 IC卡读写模块WM-11T6的软件设计

2.1 IC卡操作流程

IC卡的操作流程必须按以下顺序执行:寻卡、密码校验、读或写卡、关闭卡片,如果执行过程中任何一个操作出现错误,应立即关闭对IC卡的操作。

2.2 寻卡模式

寻卡模式位有两种: 00或01。如果采用“00”模式寻卡,执行完关闭指令后,卡片必须离开感应区后,从新再进入感应区才能寻卡成功;如果采用“01”模式寻卡,执行完关闭指令后,卡片不需要离开感应区也能寻卡成功。

2.3 通讯命令

电脑给WM-11T6模块下传命令需要通过RS232口,WM-11T6模块收到命令后回传结果给电脑。

通讯命令协议的内容(以下所有数据都為十六进制表示,其中BCC为命令字符串本字节之前的所有字节的异或校验和):

通讯测试:

下传命令:3C 04 00 60 00 00? BCC 0D

成功返回:3C 01 01 BCC 0D

错误返回:3C 01 00 BCC 0D

寻卡:

下传命令:3C 04 01 70 00(寻卡模式00(IDLE)或01(ALL)) 00 BCC 0D

成功返回:3C 05 四字节卡号 00 BCC 0D

错误返回: 3C 01 FF(错误返回代码) BCC 0D

其中:00寻卡模式要求操作的卡在读写完成后要离开感应区才能再读写。

01寻卡模式要求操作的卡在读写完成后卡片只需关闭后又可读写。

密码验证:endprint

下传命令:3C 0E 01 6C 六字节密码 认证模式(00-A/01-B) 绝对块号 四字节卡号 校验位 0D

成功返回:3C 02 00 00 BCC 0D

错误返回:3C 01 FF(错误代码) BCC 0D

其中:0为A密码,1为B密码

读卡:3C 04 01 66 00(绝对块号) 00 BCC 0D

成功返回:3C 12 00 DATA0~DATA15 BCC 0D

错误返回:3C 01 FF(错误返回代码) BCC 0D

写卡:3C 13 01 67 00(绝对块号) DATA0~DATA15 BCC 0D

成功返回:3C 02 00 00 BCC 0D

错误返回:3C 01 FF(错误返回代码) BCC 0D

关闭卡片:3C 04 01 68 00 00 51 0D

正确返回:3C 02 00 00 3E 0D

错误返回:3C 01 FF(错误返回代码)BCC 0D

2.4 操作注意事项

2.4.1 对IC卡控制区的读写与数据的读写相同,但是控制方式不同,需要注意在编程过程中不能写错,否则可能会出现无法再对该区进行操作的现象。

2.4.2 在每一个命令执行后,下一个命令执行前应该增加不少于15ms的延时。

3 IC卡读写程序清单

Read_Cd:

MOV CardStatus,#00H

MOV SendCdData + 0, #3CH

MOV SendCdData + 1, #04H

MOV SendCdData + 2, #01H

MOV SendCdData + 3, #66H

MOV SendCdData + 4, BLOCKNUMBER ;

MOV SendCdData + 5, #00H

MOV DataLength,#06H

LCALL XORCheck

MOV SendCdData + 6, A

MOV SendCdData + 7, #0DH

MOV CadDataCount,#8

MOV R1,#SendCdData

ReadCdLoop1:

MOV UARTData,@R1

INC R1

LCALL SoftUART_PutByte

DJNZ CdDataCount,ReadCdLoop1

MOV CdDataCount,#21

MOV R1,#ReciCdData

ReadCdLoop2:

LCALL SoftUART_GetByte

MOV @R1,UARTData

INC R1

DJNZ CdDataCount,ReadCdLoop2

MOV A,5AH

CJNE A,#12H,ReadCd_Err

MOV CdStatus,#01H

AJMP ReadCd_End

ReadCd_Err: MOV CdStatus,#00H

ReadCd_End: RET

Write_Cd:

MOV CdStatus,#00H

MOV SendCdData + 0, #3CH

MOV SendCdData + 1, #13H

MOV SendCdData + 2, #01H

MOV SendCdData + 3, #67H

MOV SendCdData + 4, BLOCKNUMBER

MOV SendCdData + 5, #00H

MOV SendCdData + 6, #00H

MOV SendCdData + 7, #00H

MOV SendCdData + 8, #00H

MOV SendCdData + 9, #00H

MOV SendCdData + 10, #00H

MOV SendCdData + 11, #0FFH

MOV SendCdData + 12, #00H

MOV SendCdData + 13, #00H

MOV SendCdData + 14, #00H

MOV SendCdData + 15, #00H

MOV SendCdData + 16, #00H

MOV SendCdData + 17, #00H

MOV SendCdData + 18, #00H

MOV SendCdData + 19, #00H

MOV SendCdData + 20, #00H

MOV DataLength,#21

LCALL XORCheck

MOV SendCdData + 21, A

MOV SendCdData + 22, #0DH

MOV CardDataCount,#23

MOV R1,#SendCdData

WriteCdLoop1:

MOV UARTData,@R1

INC R1

LCALL SoftUART_PutByte

DJNZ CdDataCount,WriteCdLoop1

MOV CadDataCount,#6

MOV R1,#ReciCdData

WriteCdLoop2:

LCALL SoftUART_GetByte

MOV @R1,UARTData

CJNE @R1,#0DH,WriteCdLoop3

AJMP WriteCdLoop4

WriteCdLoop3:

INC R1

DJNZ CdDataCount,WriteCdLoop2

WriteCdLoop4:

XCH A,CdDataCount

CJNE A,#01H,WriteCd_Err

MOV CdStatus,#01H

AJMP WriteCd_End

WriteCd_Err:

MOV CdStatus,#00H

WriteCd_End:

RET

[責任编辑:田吉捷]endprint

猜你喜欢

软件设计治疗仪
呼吸湿化治疗仪在慢性阻塞性肺疾病致呼吸衰竭序贯通气中的应用
选择困难症治疗仪
基于单片机SPCE061A的字幕机点阵式字母电子显示屏的设计制作
粉刺治疗仪治疗寻常痤疮的临床研究
一种基于MSP430的半导体激光治疗仪