选择卡片的串口发送命令代码

时间: 2023-08-06 16:03:31 浏览: 48
选择卡片是读写卡的第一步,选择一张需要进行后续操作的卡片。下面是一个基于ISO/IEC 14443 Type A标准的选择卡片的串口发送命令代码(使用Arduino开发平台): ``` #include <SoftwareSerial.h> SoftwareSerial mySerial(10, 11); // RX, TX void setup() { Serial.begin(9600); mySerial.begin(9600); } void loop() { byte cmd[] = {0x00, 0xA4, 0x04, 0x00, 0x08, 0xA0, 0x00, 0x00, 0x03, 0x97, 0x44, 0x00, 0x00}; byte response[10]; mySerial.write(cmd, sizeof(cmd)); delay(100); if (mySerial.available() >= 10) { mySerial.readBytes(response, 10); // 处理响应数据 } } ``` 以上代码向卡片发送了一个长度为13字节的选择卡片指令,其中0x00和0xA4是指令头,0x04是指令类型,0x00和0x08是选择文件参数,后面的字节是文件标识符。在发送完指令后,程序等待100毫秒以确保卡片已经响应,然后读取响应数据并进行处理。请注意,具体的指令格式和响应数据格式可能因不同的卡片而异,需要根据具体情况进行调整。
相关问题

卡片回应的串口发送命令代码

卡片回应命令(ATQA)是卡片响应请求命令后返回的数据,用于告诉读写器检测到的卡片类型和其它信息。回应命令的协议格式如下: 起始位(1个字节)+数据长度(1个字节)+数据(n个字节)+校验位(1个字节)+结束位(1个字节) 其中,起始位和结束位固定为0xAA,数据长度为2,数据为卡片类型和其它信息,校验位为数据长度和数据的异或值。 以下是回应命令的串口发送命令代码(以Python为例): ```python import serial # 打开串口 ser = serial.Serial('/dev/ttyS0', 9600, timeout=0.5) # 读取回应命令 response = ser.read(5) # 解析回应命令 if len(response) == 5 and response[0] == 0xAA and response[-1] == 0xAA: data_len = response[1] data = response[2:4] checksum = response[-2] if data_len == 2 and checksum == (data_len ^ data[0] ^ data[1]): atqa = int.from_bytes(data, byteorder='big') print('ATQA:', hex(atqa)) # 关闭串口 ser.close() ``` 其中,`/dev/ttyS0`为串口设备号,`9600`为波特率,`timeout=0.5`为超时时间,`ser.read(5)`为读取5个字节的串口数据,`response[0] == 0xAA and response[-1] == 0xAA`用于判断起始位和结束位是否正确,`data_len == 2 and checksum == (data_len ^ data[0] ^ data[1])`用于判断数据长度和校验位是否正确,`int.from_bytes(data, byteorder='big')`用于将数据转换为整数类型,表示卡片类型和其它信息。

卡片进入场景的串口发送命令代码

卡片进入场景时,读写器可以通过串口发送请求命令(REQA)来检测卡片是否在读写器的范围内。请求命令的协议格式如下: 起始位(1个字节)+命令字(1个字节)+数据长度(1个字节)+数据(n个字节)+校验位(1个字节)+结束位(1个字节) 其中,起始位和结束位固定为0xAA,命令字为0x26,数据长度为1,数据为0x07,校验位为命令字和数据长度的异或值。 以下是请求命令的串口发送命令代码(以Python为例): ```python import serial # 打开串口 ser = serial.Serial('/dev/ttyS0', 9600, timeout=0.5) # 发送请求命令 command = bytes.fromhex('AA 26 01 07 2D AA') ser.write(command) # 关闭串口 ser.close() ``` 其中,`/dev/ttyS0`为串口设备号,`9600`为波特率,`timeout=0.5`为超时时间,`AA 26 01 07 2D AA`为请求命令的十六进制表示。

相关推荐

最新推荐

recommend-type

STM32单片机串口通讯代码

在STM32开发中,串口是我们最常用的接口。通过串口,我们很方便地把数据输出到电脑,方便我们进行程序调试。下面我们来看看STM32的串口通讯代码。
recommend-type

STM32串口发送注意问题

本文介绍了使用STM32串口发送数据时由TC状态位引起的错误以及解决方法。
recommend-type

串口发送和接收字符串实例

在上一篇文章中,我们利用proteus中自带的虚拟终端实现了单片机通过串口向主机发送字符串的功能。这次实例我们加入串口接收字符的功能。
recommend-type

51单片机串口通信的发送与接收

51单片机的串口,是个全双工的串口,发送数据的同时,还可以接收数据。当串行发送完毕后,将在标志位 TI 置 1,同样,当收到了数据后,也会在 RI置 1。无论 RI 或 TI 出现了 1,只要串口中断处于开放状态,单片机...
recommend-type

基于SerialPort类的串口参考代码

针对博客https://blog.csdn.net/qq_27184595/article/details/89435246,提供代码资源段作为编程参考
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

用 Python 画一个可以动的爱心

好的,我可以帮助您使用Python来绘制一个动态的爱心。您可以使用turtle库来实现。以下是实现代码: ```python import turtle import math # 设置画布和画笔 canvas = turtle.Screen() canvas.bgcolor("black") pencil = turtle.Turtle() pencil.speed(0) pencil.color("red", "pink") pencil.pensize(3) # 定义爱心函数 def draw_love(heart_size, x_offset=0, y_offset=0):
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。