M1读卡器及串口数据透传外包开发V.docx

上传人:b****4 文档编号:12158728 上传时间:2023-04-17 格式:DOCX 页数:14 大小:73.13KB
下载 相关 举报
M1读卡器及串口数据透传外包开发V.docx_第1页
第1页 / 共14页
M1读卡器及串口数据透传外包开发V.docx_第2页
第2页 / 共14页
M1读卡器及串口数据透传外包开发V.docx_第3页
第3页 / 共14页
M1读卡器及串口数据透传外包开发V.docx_第4页
第4页 / 共14页
M1读卡器及串口数据透传外包开发V.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

M1读卡器及串口数据透传外包开发V.docx

《M1读卡器及串口数据透传外包开发V.docx》由会员分享,可在线阅读,更多相关《M1读卡器及串口数据透传外包开发V.docx(14页珍藏版)》请在冰豆网上搜索。

M1读卡器及串口数据透传外包开发V.docx

M1读卡器及串口数据透传外包开发V

读卡器功能需求

1:

可控制阀门(继电器)用2个2P的3.96端子完成一路,一路有两条线(继电器双刀?

),总共要控制4路?

2:

可检测油枪开关状态(检查电平?

)用2个2P的3.96端子完成一路4路

3:

可透传其它串口的命令,透传3个串口或更多串口,如嵌入式打印机之类的设备

透传的串口要分两类:

一个接嵌入式打印机,本设备最多只接一个打印机(打印机除了RXD,TXD,GND外还有一条BUSY端口,BUSY端口高电平说明打印机忙,不接收指令,低电平时可接收指令,单片机程序要注意这一点)

打印机串口上电默认通信参数为:

9600,无校验,8位数据位,1起始位,1停止位,要不两个串口都这样默认吧

另一类为加油机主板,至少要能有两个串口或更多串口(相同波特率)是否考虑用CD4051或4067进行分时扩展?

转8个串口还是转16个?

可以做两种不同的么?

CD4051出来直接就是TTL么?

还是转恒山电流环?

4:

LCD显示,汉字可以在程序中事先定义好,显示汉字的位置和其它数字可任意组合

5:

取键盘输入数据(输入回显的地方和(明文、星号)由上位机指定)4X4键盘,键盘需要有功能复用组合

6:

读卡数据(整行16个字节)

7:

写卡数据(整行16个字节)

8:

读卡器1分钟后主串口没有收到电脑发过来的命令,就用蜂鸣器报警,LCD显示通信中断,主串口使用TTL/RS232标准接口,可随时切换

9:

所有的串口发送与接收以及I/O处都要有LED灯,在外壳处可观察到(电源,主串口收发,加油机串口收发,打印机串口收发,4路继电器输出)

油枪开关状态的LED灯只设计在I/O板上,串口收发指示灯采用双色灯

10:

PCB做分体设计:

1:

核心板

2:

I/O板(控制阀门的继电器,检测油枪开关)用灰排线和核心板连接(每两路一块板)用10PIN的排线够么?

对于继电器的吸合来说,需要另外搞个电源么?

3:

加油机串口扩展板(打印机串口直接由主板引出,不在此板上)CD4051、4067在这里?

加油机串口扩展板由扩展主板和接口小板组成?

扩展主板与接口小板使用TTL标准连接,而各种接口小板则根据不同的加油机接口电路设计,串口扩展板也需要通信指示灯,通信指示灯是否另外做小板用排线引出信号?

(参照CS30000结构)

I/O板和扩展板等外部接口都加光耦防止搞坏主板?

4:

RFID板

除LCD外,其它的安装孔均以安装3MM的螺丝为标准

电源接口入加二极管防止电源接反

与加油机的外部接口是否加上磁珠防雷?

主串口(与PC机连接)的通信速率由4位拨码开关设定?

其它的通信参数固定为:

无校验,8位数据位,1位停止位。

 

通信协议

前导码(1字节)+数据长度(1字节)+命令类型(1字节)+命令实体数据(0-N字节)+校验(1字节)

前导码:

FB

数据长度:

计算的范围包括{命令类型+命令实体数据+校验}

校验:

所有数据,每个字节进行XOR得出的结果

以下写出的示例命令只含命令类型和命令实体数据,没有前导码,数据长度和校验

示例中,

SENDPC》单片机

RECV单片机》PC

 

01:

读IC卡物理卡号(没有命令实体数据)

命令实体:

读卡器返回:

01+卡号(16进制,4字节)

如没有卡片返回:

01

示例:

SEND:

01

RECV:

01AABBCCDD(物理卡号AABBCCDD)

RECV:

01(没有卡)

02:

读IC卡指定扇区的内容(读卡密钥由0D命令事先设定)

命令实体:

绝对数据块(1字节)绝对数据块从0..63

读卡器返回:

02+绝对数据块(1字节)+数据内容(16进制,16字节)

如读数据出错返回:

02+绝对数据块(1字节)

示例:

读第1数据块的数据

SEND:

0201

RECV:

02010102030405090708090A0B0C0D0E0F(读数据成功)

RECV:

0201XX(读数据失败)XX为单片机返回的出错代码:

如密码不对,卡已离开之类的错误代码

 

03:

写IC卡指定扇区的内容(写卡密钥由0D命令事先设定)

命令实体:

绝对数据块(1字节)+数据内容(16字节)

读卡器返回:

03+绝对数据块(1字节)+AA(写数据成功)

读卡器返回:

03+绝对数据块(1字节)+55(写数据失败)

示例:

向第一数据块写入:

11223344556677889900AABBCCDDEEFF

SEND:

030111223344556677889900AABBCCDDEEFF

RECV:

0301AA(写数据成功)

RECV:

0301XX(写数据失败)XX为单片机返回的出错代码:

如密码不对,卡已离开之类的错误代码

04:

显示命令,在LCD上显示指定的内容

命令实体:

行号(1字节)+显示控制符(不定长)

读卡器返回:

04+行号(1字节)+AA(写数据成功)

读卡器返回:

04+行号(1字节)+55(写数据失败)

行号的取值范围为:

01-04

显示方案可由汉字和ASCII字符混编

液晶屏由于没有字库,需要显示的汉字由单片机程序事先定义好,可以定义的标识范围:

00-1F,7F-FF

如单片机里字符串有以下定义:

01:

余额:

02:

03:

储值卡

04:

定额卡

05:

车号

06:

07:

08:

正常

09:

请输入密码:

20-7E直接显示对应的ASCII字符

示例:

在第二行显示:

余额:

12345.67元

SEND:

04020131323334352E363702

RECV:

040255(显示成功)

分解(从第三字节开始)

01汉字定义:

余额:

31-35:

ASCII字符:

1-5

2E:

ASCII字符.

3637:

ASCII字符:

67

02:

汉字定义:

在第一行显示:

车号:

粤-12345

SEND:

040105062D3132333435

RECV:

040155(显示成功)

在第三行显示:

正常请输入密码:

SEND:

0403082009

RECV:

0403AA(显示失败)

05:

取当前显示的状态

命令实体:

行号

读卡器返回:

最近一次PC发送给单片机并显示成功的数据

 示例

如当前LCD第一行显示:

车号:

粤-12345

SEND:

0501

RECV:

050105062D3132333435

 

06:

检测油枪状态(I/O输入)

命令实体:

通道(1字节)从01到04

读卡器返回:

通道(1字节)+电平

示例:

检查2号通道的油枪状态

SEND:

0602

RECV:

060201(高电平)

RECV:

060200(低电平)

07:

控制阀门(I/O输出)

命令实体:

通道(1字节)+状态(1字节)

读卡器返回:

返回接收到完全一致的消息

示例:

设置3号阀门接通

SEND:

070301

RECV:

070301

示例:

设置2号阀门断开

SEND:

070200

RECV:

070200

08:

查询阀门状态:

命令实体:

通道(1字节)

读卡器返回:

通道(1字节)+阀门状态

示例:

查询3号阀门状态

SEND:

0803

RECV:

080301(接通)

RECV:

080300(断开)

 

09:

设置透传串口参数

命令实体:

串口号+波特率+奇偶校验位+数据位+停止位需要设置5787这样的波特率

读卡器返回:

串口号+执行状态

串口号:

00加油机扩展用

01小票打印机专用

波特率:

用完整的16进制表示(3字节)9600用十六进制:

002580表示

奇偶校验位:

00NONE

01ODD

02EVEN

03MARK

04SPACE

数据位:

005位

016位

027位

038位

停止位:

001位

011.5位

022位

示例:

设置打印机端口为:

9600bps,无校验位,8位数据,1位停止

SEND:

0901002580000300

RECV:

0901AA设置成功

RECV:

090155设置失败

示例:

设置加油机端口为:

5787bps,无校验位,8位数据,1位停止

SEND:

090200169B000300

RECV:

0902AA设置成功

RECV:

090255设置失败

19:

查询透传串口参数

命令实体:

串口号

读卡器返回:

串口号+波特率+奇偶校验位+数据位+停止位

 

示例:

小票打印机端口为:

9600bps,无校验位,8位数据,1位停止

SEND:

1901

RECV:

1901002580000300

 

0A:

设置按键回显,用户有按键时在哪个地方显示用户按的内容

命令实体:

回显行号+回显横向坐标+回显类型

读卡器返回:

返回接收到完全一致的消息

行号:

01-04

横向坐标:

01-80代表1-128点

回显类型:

01明文

02密码(*)

03关闭(不接受键盘的任何输入)

设置显示输入的第二行的第64点阵,明文显示

SEND:

0A024001

RECV:

0A024001(回复和接收到一样的数据)

0B:

取用户的按键内容

命令实体:

读卡器返回:

用户当前按键的ASCII码组合,如按了确认就加13

示例:

没有任何按键

SEND:

0B

RECV:

0B

按了1234

SEND:

0B

RECV:

0B31323334

按了123456并按了【确定】

SEND:

0B

RECV:

0B31323334353613

 

1B:

清控按键内容(单片机在收到命令后,返回当前用户输入缓冲,并清空缓冲和LCD上显示的内容)

命令实体:

读卡器返回:

当前用户按键数据

示例:

没有任何按键

SEND:

1B

RECV:

1B

按了1234

SEND:

1B

RECV:

1B31323334

按了123456并按了【确定】

SEND:

1B

RECV:

1B31323334353613

 

0C:

蜂鸣

命令实体:

0C+蜂鸣次数(1字节)+蜂鸣时长(1字节*100ms)+每次间隔时长(1字节*100ms)+校验

读卡器返回:

回复和接收到一样的数据

示例:

SEND:

0C030203

RECV:

0C030203

单片机收到后,蜂鸣3次,每次持续200ms间隔300ms

 

0D:

设置IC卡读写密码。

命令实体:

IC卡读写密码(6字节)

读卡器返回:

回复和接收到一样的数据

示例:

读写密码:

F1F2F3F4F5F6

SEND:

0DF1F2F3F4F5F6

RECV:

0DF1F2F3F4F5F6

0E:

清空LCD显示,单行清空

命令实体:

行号

读卡器返回:

回复和接收到一样的数据

0F:

清空LCD显示,全部清空

命令实体:

行号

读卡器返回:

回复和接收到一样的数据

10:

加油机串口扩展锁存(怕D1命令中切换通道的速度不够快,可提前使用此命令进行锁存)

命令实体:

通道号(从01到08,8个通道)

返回:

与收到的命令一样

示例:

锁存第三通道

SEND:

1003

RECV:

1003

 

11:

向加油机串口发送数据

命令实体:

通道号+等待时长(1字节*10ms)+需要透传的数据

返回:

通道号+加油机返回的数据

示例:

向3号扩展的串口通道的加油机发送:

33445566命令,并等120毫秒将加油机返回的数据转发给PC,

SEND:

030C33445566

等待:

0C(12*10)120ms

RECV:

031A1B1C1D假如加油机返回1A1B1C1D

RECV:

03加油机没有返回任何数据

 

12:

向打印机串口发送命令,单片机转发时留意打印机的BUSY状态

命令实体:

等待时长(1字节*10ms)+需要透传的数据

返回:

BUSY状态+打印机返回的数据

示例:

SEND:

1205313233343536(向打印机发送313233343536)并等50毫秒返回数据

等待50MS…

RECV:

12000A0B0C(BUSY=FALSE,打印机返回0A0B0C)

RECV:

1201(BUSY=TRUE,打印机无数据返回)

 

PCB板初步探讨

(注:

素材和资料部分来自网络,供参考。

请预览后才下载,期待你的好评与关注!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1