YU HUAZHANG (CN)
CN103092802A | 2013-05-08 | |||
CN102722687A | 2012-10-10 | |||
CN102135921A | 2011-07-27 | |||
CN202486793U | 2012-10-10 | |||
US20080307140A1 | 2008-12-11 | |||
JP2008046857A | 2008-02-28 |
北京王景林知识产权代理事务所 (CN)
权利要求书 1、 一种读卡器与上位机通信的方法, 其特征在于, 包括: 步骤 A: 读卡器系统初始化, 打开插卡中断和 /或拔卡中断和 /或插 USB中断和 /或拔 USB中断和 /或蓝牙连接中断和 /或蓝牙断开中 断和 /或 USB通信中断和 /或蓝牙通信中断; 步骤 B: 判断工作电压是否低于预设值, 是, 提示低电压状态, 若所述低电压状态超过第一预设时间, 则关闭所述读卡器; 否, 返 回步骤 B; 在以上过程中还包括, 当所述读卡器收到 USB通信中断信号时, 进入所述 USB通信中断, 通过 USB通道接收指令, 根据收到的所述指令执行相应操作, 并 将操作结果通过所述 USB通道返回给上位机; 和 /或 当所述读卡器收到蓝牙通信中断信号时, 进入所述蓝牙通信中断, 通过蓝牙通道接收指令, 根据收到的所述指令执行相应操作, 并 将操作结果通过所述蓝牙通道返回给所述上位机; 和 /或 当所述读卡器收到插 USB中断信号时, 进入所述插 USB中断, 将 USB通道连接标识置位: 和 /或 当所述读卡器收到拔 USB中断信号时, 进入所述拔 USB中断, 将所述 USB通道连接标识复位; 和 /或 当所述读卡器收到蓝牙连接中断信号时, 进入所述蓝牙连接中断, 将蓝牙通道连接标识置位; 和 /或 当所述读卡器收到蓝牙断开中断信号时, 进入所述蓝牙断开中断, 将所述蓝牙通道连接标识复位; 和 /或 当所述读卡器收到插卡中断信号时, 进入所述插卡中断, 设置卡槽状态标识为有卡标识; 和 /或 当所述读卡器收到拔卡中断信号时, 进入所述拔卡中断, 设置所述卡槽状态标识为无卡标识。 2、 如权利要求 1所述的方法, 其特征在于, 所述步骤 A与步骤 B之间包括: 步骤 B1 : 读取蓝牙模块的参数, 判断是否读取成功, 是, 将所述蓝牙模块切换至连接状态, 执行步骤 B; 否, 将 USB通道标识置位, 执行步骤 B; 或者, 步骤 B2 : 读取蓝牙模块的参数, 判断是否读取成功, 是, 将所述蓝牙模块切换至连接状态, 执行歩骤 B: 否, 返回步骤 B2。 3、 如权利要求 2所述的方法, 其特征在于, 所述进入所述插 USB中断, 将 USB通道连接标识置位, 具体包括: 进入所述插 USB中断, 判断休眠标识是否置位, 是, 将所述休眠标识复位, MCU被唤醒, 打开 USB通道使能, 将所述 USB通道连接 标识置位, 退出所述插 USB中断; 否, 打开所述 USB通道使能, 将所述 USB通道连接标识置位, 退出所述插 USB中断; 所述进入所述拔 USB中断, 将所述 USB通道连接标识复位, 具体包括: 进入拔 USB中断, 判断蓝牙通道连接标识是否置位, 是, 关闭所述 USB通道使能, 将所述 USB通道连接标识复位, 退出所述拔 USB 中断; 否, 关闭所述 USB通道使能, 将所述 USB通道连接标识复位, 将所述休眠标识置位, 所述 MCU休眠, 退出所述拔 USB中断; 所述进入蓝牙连接中断, 将蓝牙通道连接标识置位, 具体包括: 进入所述蓝牙连接中断, 判断所述休眠标识是否置位, 是, 将所述休眠标识复位, 所述 MCU被唤醒, 打开蓝牙通道使能, 将蓝牙通 道连接标识置位, 退出所述蓝牙连接中断; 否, 打开所述蓝牙通道使能, 将所述蓝牙通道连接标识置位, 退出所述蓝牙连接中断; 所述进入所述蓝牙断开中断, 将蓝牙通道连接标识复位, 具体包括: 进入所述蓝牙断开中断, 判断所述 USB通道连接标识是否置位, 是, 关闭所述蓝牙通道使能, 将所述蓝牙通道连接标识复位, 退出 所述蓝牙断开中断; 否, 关闭所述蓝牙通道使能, 将所述蓝牙通道连接标识复位, 将所述休眠标识置位, 所述 MCU休眠, 退出所述蓝牙 断开中断。 4、 如权利要求 2所述的方法, 其特征在于, 所述歩骤 B中判断为否时返回步骤 B之前, 还包括步骤 C, 步骤 C: 检测所述读卡器与所述上位机的连接方式; 如果所述读卡器是通过 USB端口与所述上位机连接, 则所述读卡器将所述 USB通道连接标识置位, 返回歩骤 B; 如果所述读卡器是 通过蓝牙模块与上位机连接, 将所述蓝牙通道连接标识置位, 返回步骤 B; 所述进入所述插 USB中断, 将 USB通道连接标识置位, 具体包括: 进入所述插 USB中断, 判断所述休眠标识是否置位, 若所述休眠标识置位, 将所述休眠标识复位, MCU被唤醒, 打开 USB通道使能, 将所述 USB通道连接标识置位, 关闭蓝牙连接中断使能, 判断所述蓝牙通道连接标识是否置位, 若所述蓝牙通道连接标识置位, 则将所 述蓝牙通道连接标识复位, 退出所述插 USB中断; 若所述蓝牙通道连接标识未置位, 则退出所述插 USB中断; 若所述休眠标识未置位, 则判断所述蓝牙通道连接标识是否置位, 是, 将所述蓝牙通道连接标识复位, 关闭蓝牙连接中断使能, 打 开所述 USB通道使能, 将所述 USB通道连接标识置位, 退出插 USB中断; 否, 关闭所述蓝牙连接中断使能, 所述打开 USB通道使能, 将 所述 USB通道连接标识置位, 退出所述插 USB中断: 所述进入所述拔 USB中断, 将所述 USB通道连接标识复位, 具体包括: 进入所述拔 USB中断,关闭所述 USB通道使能,将所述 USB通道连接标识复位, 打开所述蓝牙连接中断使能,将所述休眠标识置位, 所述 MCU休眠, 退出所述拔 USB中断; 所述进入所述蓝牙连接中断, 将蓝牙通道连接标识置位, 具体包括: 进入所述蓝牙连接中断, 判断所述休眠标识是否置位, 是, 将所述休眠标识复位, 所述 MCU被唤醒, 打开所述蓝牙通道使能, 将所 述蓝牙通道连接标识置位, 退出蓝牙连接中断; 否, 打开所述蓝牙通道使能, 将所述蓝牙通道连接标识置位, 退出所述蓝牙连接中断; 所述进入所述蓝牙断开中断, 将所述蓝牙通道连接标识复位, 具体包括: 进入所述蓝牙断开中断, 关闭所述蓝牙通道使能, 将所述蓝牙通道连接标识复位, 将所述休眠标识置位, 所述 MCU休眠, 退出所述 蓝牙断开中断。 5、 如权利要求 2所述的方法, 其特征在于, 所述歩骤 B中判断为否时返回步骤 B之前, 还包括步骤 C' , 步骤 C' : 检测所述读卡器与所述上位机的连接方式; 如果所述读卡器是通过所述蓝牙模块与所述上位机连接, 则所述读卡器将所述蓝牙通道连接标识置位, 返回步骤 B; 如果所述读卡 器是通过所述 USB端口与所述上位机连接, 将所述 USB通道连接标识置位, 返回步骤 B; 所述进入所述插 USB中断, 将 USB通道连接标识置位, 具体包括: 进入所述插 USB中断, 判断所述休眠标识是否置位, 是, 将所述休眠标识复位, MCU被唤醒, 打开 USB通道使能, 将所述 USB通道 连接标识置位, 退出所述插 USB中断: 否, 打开所述 USB通道使能, 将所述 USB通道连接标识置位, 退出所述插 USB中断; 所述进入所述拔 USB中断, 将所述 USB通道连接标识复位, 具体包括: 进入所述拔 USB中断, 所述关闭 USB通道使能, 将所述 USB通道连接标识复位, 将所述休眠标识置位, 所述 MCU休眠, 退出所述拔 USB中断处理; 所述进入蓝牙连接中断, 将蓝牙通道连接标识置位, 具体包括: 进入所述蓝牙连接中断, 判断所述休眠标识是否置位, 是, 将所述休眠标识复位, MCU被唤醒, 打开蓝牙通道使能, 将所述蓝牙通 道连接标识置位, 关闭插 USB中断使能, 退出所述蓝牙连接中断; 否, 判断所述 USB通道连接标识是否置位, 若所述 USB通道连接标识 置位, 则将所述 USB通道连接标识复位, 打开所述蓝牙通道使能, 将所述蓝牙通道连接标识置位, 关闭所述插 USB中断使能, 退出所述 蓝牙连接中断:若所述 USB通道连接标识未置位,则打开所述蓝牙通道使能,将所述蓝牙通道连接标识置位,关闭所述插 USB中断使能, 退出所述蓝牙连接中断; 所述进入所述蓝牙断开中断, 将所述蓝牙通道连接标识复位, 具体包括: 进入所述蓝牙断开中断,关闭所述蓝牙通道使能,将所述蓝牙通道连接标识复位, 打开所述插 USB中断使能,将所述休眠标识置位, 所述 MCU休眠, 退出所述蓝牙断开中断。 6、 如权利要求 2所述的方法, 其特征在于, 所述进入所述插 USB中断, 将 USB通道连接标识置位, 具体包括: 进入所述插 USB中断, 判断所述休眠标识是否置位, 若所述休眠标识置位, 将所述休眠标识复位, MCU被唤醒, 打开 USB通道使能, 将所述 USB通道连接标识置位, 关闭蓝牙连接中断使能, 退出所述插 USB中断; 若所述休眠标识未置位, 则打开所述 USB通道使能, 将 所述 USB通道连接标识置位, 关闭所述蓝牙连接中断使能, 退出所述插 USB中断; 所述进入所述拔 USB中断, 将所述 USB通道连接标识复位, 具体包括: 进入所述拔 USB中断,关闭所述 USB通道使能,将所述 USB通道连接标识复位, 打开所述蓝牙连接中断使能,将所述休眠标识置位, 所述 MCU休眠, 退出所述拔 USB中断; 所述进入所述蓝牙连接中断, 将蓝牙通道连接标识置位, 具体包括, 进入所述蓝牙连接中断, 判断所述休眠标识是否置位, 是, 将所述休眠标识复位, 所述 MCU被唤醒, 打开所述蓝牙通道使能, 将所 述蓝牙通道连接标识置位, 关闭所述插 USB中断使能, 退出所述蓝牙连接中断; 否, 则打开所述蓝牙通道使能, 将所述蓝牙通道连接标 识置位, 关闭所述插 USB中断使能, 退出所述蓝牙连接中断; 所述进入所述蓝牙断开中断, 将所述蓝牙通道连接标识复位, 具体包括: 进入所述蓝牙断开中断,关闭所述蓝牙通道使能,将所述蓝牙通道连接标识复位, 打开所述插 USB中断使能,将所述休眠标识置位, 所述 MCU休眠, 退出所述蓝牙断开中断。 7、 如权利要求 3至 6任意一项所述的方法, 其特征在于, 所述进入所述插卡中断, 设置卡槽状态标识为有卡标识, 具体包括, 进入所述插卡中断, 判断所述休眠标识是否置位, 若所述休眠标识置位, 则将所述休眠标识复位, 所述 MCU被唤醒, 设置所述卡槽 状态标识为有卡标识, 判断所述 USB通道连接标识是否置位, 是, 向 INT端点写入插卡响应, 退出所述插卡中断; 否, 退出所述插卡中 断; 若所述休眠标识未置位, 设置所述卡槽状态标识为有卡标识, 判断所述 USB通道连接标识是否置位, 是, 向所述 INT端点写入插卡 响应, 退出所述插卡中断; 否, 退出所述插卡中断: 所述进入所述拔卡中断, 设置所述卡槽状态标识为无卡标识, 具体包括, 进入所述拔卡中断, 设置所述卡槽状态标识为无卡标识,判断所述 USB通道连接标识是否置位,是, 向所述 INT端点写入拔卡响应, 将所述休眠标识置位, 所述 MCU休眠, 退出所述拔卡中断; 否, 将所述休眠标识置位, 所述 MCU休眠, 退出所述拔卡中断; 所述步骤 A还包括打开定时器中断, 当所述读卡器收到定时器中断信号时, 进入所述定时器中断, 将计数清零, 将所述休眠标识置位, 所述 MCU休眠, 退出所述定时器 中断。 8、 如权利要求 3至 6任意一项所述的方法, 其特征在于, 所述进入所述 USB通信中断, 通过所述 USB通道接收指令, 根据收到的所述指令执行相应操作, 并将操作结果通过所述 USB通道返 回给上位机, 具体包括: 进入所述 USB通信中断, 通过所述 USB通道接收指令, 解析收到的所述指令, 判断指令类型, 如是査询卡槽状态指令, 则所述读卡 器査询卡槽状态,并设置卡槽状态数据的预设字节,将设置完的所述卡槽状态数据通过所述 USB通道返回给所述上位机;如是上电指令, 则所述读卡器对所述卡槽上电, 读取上电响应, 将所述上电响应通过所述 USB通道返回给所述上位机; 如是下电指令, 则所述读卡器对 所述卡槽下电, 读取下电响应, 将所述下电响应通过所述 USB通道返回给所述上位机; 如是操作卡片指令, 则所述读卡器将所述操作卡 片指令发送给卡片, 接收所述卡片返回的操作卡片响应, 将所述操作卡片响应通过所述 USB通道返回给上位机, 如是其他命令, 则执行 相应操作; 所述进入所述蓝牙通信中断, 通过蓝牙通道接收指令, 根据收到的所述指令执行相应操作, 并将操作结果通过所述蓝牙通道返回给 所述上位机, 具体包括: 进入所述蓝牙通信中断, 通过所述蓝牙通道接收指令, 解析收到的所述指令, 判断指令类型, 如是査询卡槽状态指令, 则所述读卡 器査询卡槽状态,并设置卡槽状态数据的预设字节,将设置完的所述卡槽状态数据通过所述蓝牙通道返回给所述上位机;如是上电指令, 则所述读卡器对所述卡槽上电, 读取上电响应, 将所述上电响应通过所述蓝牙通道返回给所述上位机; 如是下电指令, 则所述读卡器对 所述卡槽下电, 读取下电响应, 将所述下电响应通过所述蓝牙通道返回给上位机; 如是操作卡片指令, 则所述读卡器将所述操作卡片指 令发送给卡片, 接收所述卡片返回的操作卡片响应, 将所述操作卡片响应通过所述蓝牙通道返回给所述上位机; 如是查询蓝牙模块参数 信息指令, 则所述读卡器通过所述蓝牙通道向上位机发送所述蓝牙模块的参数, 等待接收所述上位机下发的所述蓝牙模块的新的参数, 当接收到所述新的参数后, 断开所述蓝牙模块连接, 写入所述新的参数, 然后将所述蓝牙模块切换为连接状态; 如是其他命令, 则执行 相应操作。 9、 如权利要求 6所述的方法, 其特征在于, 所述进入所述 USB通信中断, 通过 USB通道接收指令, 根据收到的所述指令执行相应操作, 并将操作结果通过所述 USB通道返回给 上位机, 具体包括: 进入所述 USB通信中断, 通过所述 USB通道接收指令, 解析收到的所述指令, 判断指令类型, 如是切换通道命令, 打开所述蓝牙连 接中断使能; 所述进入蓝牙通信中断, 进入所述蓝牙通信中断, 通过蓝牙通道接收指令, 根据收到的所述指令执行相应操作, 并将操作结果通过 所述蓝牙通道返回给所述上位机, 具体包括, 进入所述蓝牙通信中断, 通过所述蓝牙通道接收指令, 解析收到的所述指令, 判断指令类型, 如是切换通道命令, 打开所述插 USB 中断使能; 如是其他命令, 则执行相应操作。 10、 如权利要求 2所述的方法, 其特征在于, 所述蓝牙模块的参数, 具体包括, MAC的内容、 PIN码和读卡器设备名称; 所述判断是否读取成功, 具体包括: 所述读卡器根据所述蓝牙模块的参数中的指定字节判断是否读取成功; 如果所述蓝牙模块的参 数中的指定字节的取值等于预设字节, 则表示读取成功; 否则, 表示读取不成功; 当所述读卡器通过 USB端口与上位机建立连接时, 所述读卡器通过所述 USB端口充电。 11、 如权利要求 7所述的方法, 其特征在于, 所述 MCU休眠, 具体包括: 增加分频数值, 降低总线时钟的频率, MCU内核电压等级切换至电压范围为 1的状态, 失能第一串行通信接口、 第二串行通信接口 外设后, MCU休眠。 12、 一种读卡器与上位机通信的方法, 其特征在于, 包括: 步骤 S1 : 读卡器系统初始化, 打开插卡中断和 /或拔卡中断和 /或插 USB中断和 /或拔 USB中断和 /或蓝牙连接中断和 /或蓝牙断开中 断和 /或定时器中断和 /或 USB通信中断和 /或蓝牙通信中断; 步骤 S2 : 判断工作电压是否低于预设值, 是, 提示低电量状态, 当低电量状态超过第一预设时间时关闭所述读卡器; 否, 执行歩 骤 S3 ; 步骤 S3: 判断是否存在置位的中断标识, 如果存在置位的中断标识, 则执行步骤 S4 : 否则, 返回步骤 S2 ; 所述中断标识包括: 插卡中断标识、 拔卡中断标识、 插 USB中断标识、 拔 USB中断标识、 蓝牙连接中断标识、 蓝牙断开中断标识、 蓝牙通信中断标识、 USB通信中断标识、 定时器中断标识; 步骤 S4: 检测所述置位的中断标识的类型; 如置位的中断标识为所述蓝牙通信中断标识或所述 USB通信中断标识, 则执行步骤 S5 ; 如为其他中断标识, 则根据所述置位的中 断标识的类型执行相应操作, 返回歩骤 S2 ; 步骤 S5 : 接收指令并保存所述指令对应的通道标识, 根据所述指令的类型执行相应操作, 向所述上位机发送相应的响应, 清除相 应的中断标识, 返回步骤 S2。 13、 如权利要求 12所述的方法, 其特征在于, 当所述读卡器收到插卡中断信号时, 将所述插卡中断标识置位; 当所述读卡器收到拔卡中断信号时, 将所述拔卡中断标识置位; 当所述读卡器收到插 USB中断信号时, 将所述插 USB中断标识置位; 当所述读卡器收到拔 USB中断信号时, 将所述拔 USB中断标识置位; 当所述读卡器收到蓝牙连接中断信号时, 将所述蓝牙连接中断标识置位; 当所述读卡器收到蓝牙断开中断信号时, 将所述蓝牙断开中断标识置位; 当所述读卡器收到蓝牙通信中断信号时, 将所述蓝牙通信中断标识置位; 当所述读卡器收到 USB通信中断信号时, 将所述 USB通信中断标识置位。 14、 如权利要求 12所述的方法, 其特征在于, 所述歩骤 S2与步骤 S3之间包括, 步骤 S2 ' : 读取蓝牙模块的参数, 判断是否读取成功, 是, 将所述蓝牙模块切换至连接状态, 执行歩骤 S3 ; 否, 将 USB通道标识 置位, 执行步骤 S2 ; 或者, 步骤 S2 ' 读取蓝牙模块的参数,判断是否读取成功,是,将所述蓝牙模块切换至连接状态,执行步骤 S3; 否,返回步骤 S2 ' ' 。 15、 如权利要求 14所述的方法, 其特征在于, 所述如为其他中断标识, 则根据所述置位的中断标识的类型执行相应操作, 返回歩 骤 S2 , 具体包括, 如所述置位的中断标识为插 USB中断标识置位, 则判断休眠标识是否置位, 是, 将所述休眠标识复位, MCU被唤醒, 打开 USB通道 使能, 将所述 USB通道连接标识置位, 将所述插 USB中断标识复位, 返回步骤 S2 ; 否, 打开所述 USB通道使能, 将是 USB通道连接标 识置位, 将所述插 USB中断标识复位, 返回步骤 S2 : 如所述置位的中断标识为拔 USB中断标识置位, 则判断所述蓝牙通道连接标识是否置位, 是, 关闭所述 USB通道使能, 将所述 USB 通道连接标识复位, 将所述拔 USB中断标识复位, 返回步骤 S2 ; 否, 关闭所述 USB通道使能, 将所述 USB通道连接标识复位, 将所述 拔 USB中断标识复位, 将所述休眠标识置位, MCU休眠; 如所述置位的中断标识为蓝牙连接中断标识置位, 则判断所述休眠标识是否置位, 是, 将所述休眠标识复位, 所述 MCU被唤醒, 打 开蓝牙通道使能, 将蓝牙通道连接标识置位, 将所述蓝牙连接中断标识复位, 返回步骤 S2 ; 否, 打开所述蓝牙通道使能, 将所述蓝牙 通道连接标识置位, 将所述蓝牙连接中断标识复位, 返回步骤 S2 ; 如所述置位的中断标识为蓝牙断开中断标识置位, 则判断所述 USB通道连接标识是否置位, 是, 关闭所述蓝牙通道使能, 将所述蓝 牙通道连接标识复位, 将所述蓝牙断开中断标识复位, 返回步骤 S2 ; 否, 关闭所述蓝牙通道使能, 将所述蓝牙通道连接标识复位, 将 蓝牙断开中断标识复位, 将所述休眠标识置位, 所述 MCU休眠。 16、 如权利要求 14所述的方法, 其特征在于, 所述步骤 S2 ' 与步骤 S3之间或步骤 S2 ' ' 与步骤 S3之间包括步骤 S3 ' , 步骤 S3' : 检测所述读卡器与所述上位机的连接方式; 如果所述读卡器是通过所述 USB端口与所述上位机连接, 则所述读卡器将 USB通道连接标识置位, 执行步骤 S3; 如果所述读卡器 是通过所述蓝牙模块与上位机连接, 将所述蓝牙通道连接标识置位, 执行步骤 S3 ; 所述如为其他中断标识, 则根据所述置位的中断标识的类型执行相应操作, 返回步骤 S2 , 包括, 如所述置位的中断标识为插 USB中断标识, 则判断休眠标识是否置位, 若所述休眠标识置位, 将所述休眠标识复位, MCU被唤醒, 打开 USB通道使能, 将 USB通道连接标识置位, 关闭蓝牙连接中断使能, 判断蓝牙通道连接标识是否置位, 若所述蓝牙通道连接标识置 位, 则将所述蓝牙通道连接标识复位, 将所述插 USB中断标识复位, 返回步骤 S2 ; 若所述蓝牙通道连接标识未置位, 则将所述插 USB 中断标识复位, 返回步骤 S2 ; 若所述休眠标识未置位,则判断所述蓝牙通道连接标识是否置位,是,将所述蓝牙通道连接标识复位,关闭所述蓝牙连接中断使能, 打开所述 USB通道使能, 将所述 USB通道连接标识置位, 将所述插 USB中断标识复位, 返回步骤 S2; 否, 关闭所述蓝牙连接中断使能, 打开所述 USB通道使能, 将所述 USB通道连接标识置位, 将所述插 USB中断标识复位, 返回步骤 S2 ; 如所述置位的中断标识为拔 USB中断标识,则关闭所述 USB通道使能,将所述 USB通道连接标识复位,打开所述蓝牙连接中断使能, 将所述拔 USB中断标识复位 , 将所述休眠标识置位 , 所述 MCU休眠; 如所述置位的中断标识为蓝牙连接中断标识, 则判断所述休眠标识是否置位, 是, 将所述休眠标识复位, 所述 MCU被唤醒, 打开所 述蓝牙通道使能, 将所述蓝牙通道连接标识置位, 将所述蓝牙连接中断标识复位, 返回步骤 S2; 否, 打开所述蓝牙通道使能, 将所述 蓝牙通道连接标识置位, 将所述蓝牙连接中断标识复位, 返回步骤 S2 ; 如所述置位的中断标识为蓝牙断开中断标识, 则关闭所述蓝牙通道使能, 将所述蓝牙通道连接标识复位, 将所述蓝牙断开中断标识 复位, 将所述休眠标识置位, 所述 MCU休眠。 17、 如权利要求 14所述的方法, 其特征在于, 所述步骤 S2 ' 与步骤 S3之间或步骤 S2 ' 与步骤 S3之间, 包括步骤 S3 ' ' , 步骤 S3' 检测所述读卡器与所述上位机的连接方式; 如果所述读卡器是通过所述蓝牙模块与所述上位机连接, 则所述读卡器将蓝牙通道连接标识置位, 执行步骤 S3; 如果所述读卡器 是通过所述 USB端口与所述上位机连接, 将所述 USB通道连接标识置位, 执行步骤 S3; 所述如为其他中断标识, 则根据所述置位的中断标识的类型执行相应操作, 返回步骤 S2 , 包括, 如所述置位的中断标识为插 USB中断标识置位, 则判断休眠标识是否置位, 是, 将所述休眠标识复位, MCU被唤醒, 打开 USB通道 使能, 将 USB通道连接标识置位, 将插 USB中断标识复位, 返回步骤 S2 ; 否, 打开所述 USB通道使能, 将所述 USB通道连接标识置位, 将所述插 USB中断标识复位, 返回歩骤 S2 ; 如所述置位的中断标识为拔 USB中断标识, 则将所述 USB通道连接标识复位, 将所述休眠标识置位, 将所述拔 USB中断标识复位, 所述 MCU休眠; 如所述置位的中断标识为蓝牙连接中断标识, 则判断所述休眠标识是否置位, 是, 将所述休眠标识复位, 所述 MCU被唤醒, 打开所 述蓝牙通道使能, 将所述蓝牙通道连接标识置位, 关闭所述插 USB中断使能, 将所述蓝牙连接中断标识复位, 返回步骤 S2 ; 否, 判断 所述 USB通道连接标识是否置位, 若所述 USB通道连接标识置位, 则所述将 USB通道连接标识复位, 打开所述蓝牙通道使能, 将所述蓝 牙通道连接标识置位, 关闭所述插 USB中断使能, 将所述蓝牙连接中断标识复位, 返回步骤 S2 ; 若所述 USB通道连接标识未置位, 则 打开所述蓝牙通道使能, 将所述蓝牙通道连接标识置位, 关闭所述插 USB中断使能, 将所述蓝牙连接中断标识复位, 返回步骤 S2 ; 如所述置位的中断标识为蓝牙断开中断标识,则关闭所述蓝牙通道使能,将所述蓝牙通道连接标识复位,打开所述插 USB中断使能, 将所述蓝牙断开中断标识复位, 将所述休眠标识置位, 所述 MCU休眠。 18、 如权利要求 14所述的方法, 其特征在于, 所述如为其他中断标识, 则根据所述置位的中断标识的类型执行相应操作, 返回歩 骤 S2 , 包括, 如所述置位的中断标识为插 USB中断标识, 则判断休眠标识是否置位, 若所述休眠标识置位, 将所述休眠标识复位, MCU被唤醒, 打开 USB通道使能, 将 USB通道连接标识置位, 关闭蓝牙连接中断使能, 将插 USB中断标识复位, 返回歩骤 S2 ; 若所述休眠标识未置 位, 则打开所述 USB通道使能, 将所述 USB通道连接标识置位, 关闭所述蓝牙连接中断使能, 将所述插 USB中断标识复位, 返回步骤 S2 ; 如所述置位的中断标识为拔 USB中断标识,则关闭所述 USB通道使能,将所述 USB通道连接标识复位,打开所述蓝牙连接中断使能, 将所述拔 USB中断标识复位, 将所述休眠标识置位, 所述 MCU休眠: 如所述置位的中断标识为蓝牙连接中断标识, 则判断所述休眠标识是否置位, 是, 将所述休眠标识复位, 所述 MCU被唤醒, 打开所 述蓝牙通道使能, 将所述蓝牙通道连接标识置位, 关闭所述插 USB中断使能, 将所述蓝牙连接中断标识复位, 返回步骤 S2 : 否则打开 所述蓝牙通道使能, 将所述蓝牙通道连接标识置位, 关闭所述插 USB中断使能, 将所述蓝牙连接中断标识复位, 返回步骤 S2 ; 如所述置位的中断标识为蓝牙断开中断标识,则关闭所述蓝牙通道使能,将所述蓝牙通道连接标识复位,打开所述插 USB中断使能, 将所述蓝牙断开中断标识复位, 将所述休眠标识置位, 所述 MCU休眠。 19、 如权利要求 15至 18任意一项所述的方法, 其特征在于, 所述如为其他中断标识, 则根据所述置位的中断标识的类型执行相应 操作, 返回步骤 S2 , 还包括, 如所述置位的中断标识为插卡中断标识, 则判断所述休眠标识是否置位, 若所述休眠标识置位, 则将所述休眠标识复位, 所述 MCU 被唤醒, 设置卡槽状态标识为有卡标识, 判断所述 USB通道连接标识是否置位, 是, 向 INT端点写入插卡响应, 将所述插卡中断标识复 位, 返回步骤 S2 ; 否, 将所述插卡中断标识复位, 返回步骤 S2 ; 若所述休眠标识未置位, 判断所述 USB通道连接标识是否置位, 是, 向所述 INT端点写入插卡响应, 将所述插卡中断标识复位, 返回步骤 S2 ; 否, 将所述插卡中断标识复位, 返回步骤 S2 ; 如所述置位的中断标识为拔卡中断标识, 则设置所述卡槽状态标识为无卡标识, 判断所述 USB通道连接标识是否置位, 是, 向所述 INT端点写入拔卡响应, 将所述拔卡中断标识复位, 将所述休眠标识置位, 所述 MCU休眠; 否, 将所述拔卡中断标识复位, 将所述休眠 标识置位, 所述 MCU休眠; 如所述置位的中断标识为定时器中断标识, 则将计数清零, 将所述定时器中断标识复位, 将休眠标识置位, MCU休眠。 20、 如权利要求 15至 18任意一项所述的方法, 其特征在于, 所述歩骤 S5 , 具体包括, a: 当通过 USB通道收到指令时, 将 USB通道标识置位; 当通过蓝牙通道收到指令时, 将蓝牙通道标识置位; b= 根据所述指令的类型执行相应操作, 向上位机发送相应的响应, 清除相应的中断标识, 包括: 如接收指令是査询卡槽状态指令, 则査询卡槽状态, 并设置卡槽状态数据的预设字节, 检测当前置位的通道标识的类型, 如是所述 蓝牙通道标识, 则通过所述蓝牙通道向所述上位机发送所述卡槽状态数据, 将所述蓝牙通道标识复位, 将所述蓝牙通信中断标识复位; 如是所述 USB通道标识, 则通过所述 USB通道向所述上位机发送所述卡槽状态数据, 将所述 USB通道标识复位, 将所述 USB通信中断标 识复位; 7 如接收指令是上电指令, 则对卡槽上电, 读取上电响应, 检测当前置位的通道标识的类型, 如是所述蓝牙通道标识, 则通过所述蓝 牙通道向所述上位机发送所述上电响应, 将所述蓝牙通道标识复位, 将所述蓝牙通信中断标识复位; 如是所述 USB通道标识, 则通过所 述 USB通道向所述上位机发送所述上电响应, 将所述 USB通道标识复位, 将所述 USB通信中断标识复位; 如接收指令是下电指令, 则对卡槽下电, 读取下电响应, 检测当前置位的通道标识的类型, 如是所述蓝牙通道标识, 则通过所述蓝 牙通道向所述上位机发送所述下电响应, 将所述蓝牙通道标识复位, 将所述蓝牙通信中断标识复位; 如是所述 USB通道标识, 则通过所 述 USB通道向所述上位机发送所述下电响应, 将所述 USB通道标识复位, 将所述 USB通信中断标识复位; 如接收指令是操作卡片指令, 则将所述操作卡片指令发送给卡片, 接收所述卡片返回的操作卡片响应, 检测当前置位的通道标识的 类型, 如是蓝牙通道标识, 则通过所述蓝牙通道向所述上位机发送所述操作卡片响应, 将所述蓝牙通道标识复位, 将所述蓝牙通信中断 标识复位; 如是所述 USB通道标识, 则通过所述 USB通道向所述上位机发送所述操作卡片响应, 将所述 USB通道标识复位, 将所述 USB 通信中断标识复位: 如接收指令是査询蓝牙模块参数信息指令, 则判断蓝牙通道标识是否置位, 是, 则通过所述蓝牙通道向所述上位机发送蓝牙模块的 参数, 等待接收所述上位机下发的蓝牙模块的新的参数, 然后断开所述蓝牙模块连接, 并写入新的参数, 将所述蓝牙模块切换为连接状 态, 将所述蓝牙通道标识复位, 将所述蓝牙通信中断标识复位; 否, 则报错。 21、 如权利要求 20所述的方法, 其特征在于, 所述步骤 S5还包括, a' : 当通过 USB通道收到指令时, 将 USB通道标识置位; 当通过蓝牙通道收到指令时, 将蓝牙通道标识置位; b' : 根据所述指令的类型执行相应操作, 向得到上位机发送相应的响应, 清除相应的中断标识, 包括: 如接收指令是切换通道指令, 则检测当前置位的通道标识是否为所述蓝牙通道标识, 是, 则关闭所述蓝牙通道使能, 将所述蓝牙通 道标识复位, 打开所述 USB通道使能, 并将所述 USB通道标识置位, 将 U所述 SB通信中断标识复位; 否, 则关闭所述 USB通道使能, 将所述 USB通道标识复位, 打开所述蓝牙通道使能, 并将所述蓝牙通道标识复位。 22、 如权利要求 14所述的方法, 其特征在于, 所述蓝牙模块的参数, 具体包括, MAC的内容、 PIN码和读卡器设备名称; 所述判断是否读取成功, 具体包括: 所述读卡器根据所述蓝牙模块的参数中的指定字节判断是否读取成功; 如果所述蓝牙模块的参 数中的指定字节的取值等于预设字节, 则表示读取成功; 否则, 表示读取不成功; 当所述读卡器通过 USB端口与上位机建立连接时, 所述读卡器通过所述 USB端口充电。 23、 如权利要求 19所述的方法, 其特征在于, 所述 MCU休眠, 具体包括: 增加分频数值, 降低总线时钟的频率, MCU内核电压等级切换至电压范围为 1的状态, 失能第一串行通信接口、 第二串行通信接口 外设后, MCU休眠。 |
技术领域
本发明涉及通信领域, 特别是涉及一种读卡器与上位机通信的方法。
背景技术
随着科技的发展, 移动设备的应用越来越广泛。 由于移动设备的特殊性, 各个厂家移动设备的硬件接口各不相同, 目前不存在统一 的 USB接口, 无法通过 USB端口与不同型号的移动设备进行通信。
发明内容
本发明的目的是提供一种读卡器与上位机通信 的方法, 其可使读卡器通过 USB端口与不同型号的移动设备进行通信。 为此, 本发明提供了一种读卡器与上位机通信的方法 , 包括,
步骤 A: 读卡器系统初始化, 打开插卡中断和 /或拔卡中断和 /或插 USB中断和 /或拔 USB中断和 /或蓝牙连接中断和 /或蓝牙断开中 断和 /或 USB通信中断和 /或蓝牙通信中断;
步骤 B: 判断工作电压是否低于预设值, 是, 提示低电压状态, 若所述低电压状态超过第一预设时间, 则关闭所述读卡器: 否, 返 回步骤 B;
在以上过程中还包括,
当所述读卡器收到 USB通信中断信号时, 进入所述 USB通信中断, 通过 USB通道接收指令, 根据收到的所述指令执行相应操作, 并 将操作结果通过所述 USB通道返回给上位机; 和 /或
当所述读卡器收到蓝牙通信中断信号时, 进入所述蓝牙通信中断, 通过蓝牙通道接收指令, 根据收到的所述指令执行相应操作, 并 将操作结果通过所述蓝牙通道返回给所述上位 机; 和 /或
当所述读卡器收到插 USB中断信号时, 进入所述插 USB中断, 将 USB通道连接标识置位: 和 /或
当所述读卡器收到拔 USB中断信号时, 进入所述拔 USB中断, 将所述 USB通道连接标识复位; 和 /或
当所述读卡器收到蓝牙连接中断信号时, 进入所述蓝牙连接中断, 将蓝牙通道连接标识置位; 和 /或
当所述读卡器收到蓝牙断开中断信号时, 进入所述蓝牙断开中断, 将所述蓝牙通道连接标识复位; 和 /或
当所述读卡器收到插卡中断信号时, 进入所述插卡中断, 设置卡槽状态标识为有卡标识; 和 /或
当所述读卡器收到拔卡中断信号时, 进入所述拔卡中断, 设置所述卡槽状态标识为无卡标识。
优选地, 所述步骤 A与步骤 B之间包括:
步骤 B1 : 读取蓝牙模块的参数, 判断是否读取成功, 是, 将所述蓝牙模块切换至连接状态, 执行步骤 B ; 否, 将 USB通道标识置位, 执行步骤 B; 或者,
步骤 B2 : 读取蓝牙模块的参数, 判断是否读取成功, 是, 将所述蓝牙模块切换至连接状态, 执行歩骤 B: 否, 返回步骤 B2。 优选地, 所述进入所述插 USB中断, 将 USB通道连接标识置位, 具体包括:
进入所述插 USB中断, 判断休眠标识是否置位, 是, 将所述休眠标识复位, MCU被唤醒, 打开 USB通道使能, 将所述 USB通道连接 标识置位, 退出所述插 USB中断; 否, 打开所述 USB通道使能, 将所述 USB通道连接标识置位, 退出所述插 USB中断。
优选地, 所述进入所述拔 USB中断, 将所述 USB通道连接标识复位, 具体包括:
进入拔 USB中断, 判断蓝牙通道连接标识是否置位, 是, 关闭所述 USB通道使能, 将所述 USB通道连接标识复位, 退出所述拔 USB 中断; 否, 关闭所述 USB通道使能, 将所述 USB通道连接标识复位, 将所述休眠标识置位, 所述 MCU休眠, 退出所述拔 USB中断。
优选地, 所述进入蓝牙连接中断, 将蓝牙通道连接标识置位, 具体包括:
进入所述蓝牙连接中断, 判断所述休眠标识是否置位, 是, 将所述休眠标识复位, 所述 MCU被唤醒, 打开蓝牙通道使能, 将蓝牙通 道连接标识置位, 退出所述蓝牙连接中断; 否, 打开所述蓝牙通道使能, 将所述蓝牙通道连接标识置位, 退出所述蓝牙连接中断。
优选地, 所述进入所述蓝牙断开中断, 将蓝牙通道连接标识复位, 具体包括:
进入所述蓝牙断开中断, 判断所述 USB通道连接标识是否置位, 是, 关闭所述蓝牙通道使能, 将所述蓝牙通道连接标识复位, 退出 所述蓝牙断开中断; 否, 关闭所述蓝牙通道使能, 将所述蓝牙通道连接标识复位, 将所述休眠标识置位, 所述 MCU休眠, 退出所述蓝牙 断开中断。
优选地, 所述步骤 B中判断为否时返回步骤 B之前, 还包括步骤 C,
步骤 C: 检测所述读卡器与所述上位机的连接方式;
如果所述读卡器是通过 USB端口与所述上位机连接, 则所述读卡器将所述 USB通道连接标识置位, 返回歩骤 B: 如果所述读卡器是 通过蓝牙模块与上位机连接, 将所述蓝牙通道连接标识置位, 返回步骤 B。
优选地, 所述进入所述插 USB中断, 将 USB通道连接标识置位, 具体包括:
进入所述插 USB中断, 判断所述休眠标识是否置位, 若所述休眠标识置位, 将所述休眠标识复位, MCU被唤醒, 打开 USB通道使能, 将所述 USB通道连接标识置位, 关闭蓝牙连接中断使能, 判断所述蓝牙通道连接标识是否置位, 若所述蓝牙通道连接标识置位, 则将所 述蓝牙通道连接标识复位, 退出所述插 USB中断; 若所述蓝牙通道连接标识未置位, 则退出所述插 USB中断;
若所述休眠标识未置位, 则判断所述蓝牙通道连接标识是否置位, 是, 将所述蓝牙通道连接标识复位, 关闭蓝牙连接中断使能, 打 开所述 USB通道使能, 将所述 USB通道连接标识置位, 退出插 USB中断; 否, 关闭所述蓝牙连接中断使能, 所述打开 USB通道使能, 将 所述 USB通道连接标识置位, 退出所述插 USB中断。
优选地, 所述进入所述拔 USB中断, 将所述 USB通道连接标识复位, 具体包括:
进入所述拔 USB中断,关闭所述 USB通道使能,将所述 USB通道连接标识复位, 打开所述蓝牙连接中断使能,将所述休眠标识 置位, 所述 MCU休眠, 退出所述拔 USB中断。
优选地, 所述进入所述蓝牙连接中断, 将蓝牙通道连接标识置位, 具体包括:
进入所述蓝牙连接中断, 判断所述休眠标识是否置位, 是, 将所述休眠标识复位, 所述 MCU被唤醒, 打开所述蓝牙通道使能, 将所 述蓝牙通道连接标识置位, 退出蓝牙连接中断; 否, 打开所述蓝牙通道使能, 将所述蓝牙通道连接标识置位, 退出所述蓝牙连接中断。
优选地, 所述进入所述蓝牙断开中断, 将所述蓝牙通道连接标识复位, 具体包括:
进入所述蓝牙断开中断, 关闭所述蓝牙通道使能, 将所述蓝牙通道连接标识复位, 将所述休眠标识置位, 所述 MCU休眠, 退出所述 蓝牙断开中断。
优选地, 所述歩骤 B中判断为否时返回步骤 B之前, 还包括步骤 C' ,
步骤 C' : 检测所述读卡器与所述上位机的连接方式;
如果所述读卡器是通过所述蓝牙模块与所述上 位机连接, 则所述读卡器将所述蓝牙通道连接标识置位, 返回步骤 B; 如果所述读卡 器是通过所述 USB端口与所述上位机连接, 将所述 USB通道连接标识置位, 返回步骤^
优选地, 所述进入所述插 USB中断, 将 USB通道连接标识置位, 具体包括:
进入所述插 USB中断, 判断所述休眠标识是否置位, 是, 将所述休眠标识复位, MCU被唤醒, 打开 USB通道使能, 将所述 USB通道 连接标识置位, 退出所述插 USB中断: 否, 打开所述 USB通道使能, 将所述 USB通道连接标识置位, 退出所述插 USB中断。
优选地, 所述进入所述拔 USB中断, 将所述 USB通道连接标识复位, 具体包括:
进入所述拔 USB中断, 所述关闭 USB通道使能, 将所述 USB通道连接标识复位, 将所述休眠标识置位, 所述 MCU休眠, 退出所述拔 USB中断处理。
优选地, 所述进入蓝牙连接中断, 将蓝牙通道连接标识置位, 具体包括:
进入所述蓝牙连接中断, 判断所述休眠标识是否置位, 是, 将所述休眠标识复位, MCU被唤醒, 打开蓝牙通道使能, 将所述蓝牙通 道连接标识置位, 关闭插 USB中断使能, 退出所述蓝牙连接中断; 否, 判断所述 USB通道连接标识是否置位, 若所述 USB通道连接标识 置位, 则将所述 USB通道连接标识复位, 打开所述蓝牙通道使能, 将所述蓝牙通道连接标识置位, 关闭所述插 USB中断使能, 退出所述 蓝牙连接中断;若所述 USB通道连接标识未置位,则打开所述蓝牙通道 使能,将所述蓝牙通道连接标识置位,关闭所 述插 USB中断使能, 退出所述蓝牙连接中断。
优选地, 所述进入所述蓝牙断开中断, 将所述蓝牙通道连接标识复位, 具体包括:
进入所述蓝牙断开中断,关闭所述蓝牙通道使 能,将所述蓝牙通道连接标识复位, 打开所述插 USB中断使能,将所述休眠标识置位, 所述 MCU休眠, 退出所述蓝牙断开中断。
优选地, 所述进入所述插 USB中断, 将 USB通道连接标识置位, 具体包括:
进入所述插 USB中断, 判断所述休眠标识是否置位, 若所述休眠标识置位, 将所述休眠标识复位, MCU被唤醒, 打开 USB通道使能, 将所述 USB通道连接标识置位, 关闭蓝牙连接中断使能, 退出所述插 USB中断; 若所述休眠标识未置位, 则打开所述 USB通道使能, 将 所述 USB通道连接标识置位, 关闭所述蓝牙连接中断使能, 退出所述插 USB中断。
优选地, 所述进入所述拔 USB中断, 将所述 USB通道连接标识复位, 具体包括:
进入所述拔 USB中断,关闭所述 USB通道使能,将所述 USB通道连接标识复位,打开所述蓝牙连接中断 使能,将所述休眠标识置位, 所述 MCU休眠, 退出所述拔 USB中断。
优选地, 所述进入所述蓝牙连接中断, 将蓝牙通道连接标识置位, 具体包括,
进入所述蓝牙连接中断, 判断所述休眠标识是否置位, 是, 将所述休眠标识复位, 所述 MCU被唤醒, 打开所述蓝牙通道使能, 将所 述蓝牙通道连接标识置位, 关闭所述插 USB中断使能, 退出所述蓝牙连接中断; 否, 则打开所述蓝牙通道使能, 将所述蓝牙通道连接标 识置位, 关闭所述插 USB中断使能, 退出所述蓝牙连接中断。
优选地, 所述进入所述蓝牙断开中断, 将所述蓝牙通道连接标识复位, 具体包括:
进入所述蓝牙断开中断,关闭所述蓝牙通道使 能,将所述蓝牙通道连接标识复位, 打开所述插 USB中断使能,将所述休眠标识置位, 所述 MCU休眠, 退出所述蓝牙断开中断。
优选地, 所述进入所述插卡中断, 设置卡槽状态标识为有卡标识, 具体包括,
进入所述插卡中断, 判断所述休眠标识是否置位, 若所述休眠标识置位, 则将所述休眠标识复位, 所述 MCU被唤醒, 设置所述卡槽 状态标识为有卡标识, 判断所述 USB通道连接标识是否置位, 是, 向 INT端点写入插卡响应, 退出所述插卡中断; 否, 退出所述插卡中 断; 若所述休眠标识未置位, 设置所述卡槽状态标识为有卡标识, 判断所述 USB通道连接标识是否置位, 是, 向所述 INT端点写入插卡 响应, 退出所述插卡中断; 否, 退出所述插卡中断。
优选地, 所述进入所述拔卡中断, 设置所述卡槽状态标识为无卡标识, 具体包括,
进入所述拔卡中断, 设置所述卡槽状态标识为无卡标识,判断所述 USB通道连接标识是否置位,是, 向所述 INT端点写入拔卡响应, 将所述休眠标识置位, 所述 MCU休眠, 退出所述拔卡中断: 否, 将所述休眠标识置位, 所述 MCU休眠, 退出所述拔卡中断。
优选地, 所述歩骤 A还包括打开定时器中断,
当所述读卡器收到定时器中断信号时, 进入所述定时器中断, 将计数清零, 将所述休眠标识置位, 所述 MCU休眠, 退出所述定时器 中断。
优选地, 所述进入所述 USB通信中断, 通过所述 USB通道接收指令, 根据收到的所述指令执行相应操作, 并将操作结果通过所述 USB通道返回给上位机, 具体包括:
进入所述 USB通信中断, 通过所述 USB通道接收指令, 解析收到的所述指令, 判断指令类型, 如是査询卡槽状态指令, 则所述读卡 器査询卡槽状态,并设置卡槽状态数据的预设 字节,将设置完的所述卡槽状态数据通过所述 USB通道返回给所述上位机;如是上电指令, 则所述读卡器对所述卡槽上电, 读取上电响应, 将所述上电响应通过所述 USB通道返回给所述上位机; 如是下电指令, 则所述读卡器对 所述卡槽下电, 读取下电响应, 将所述下电响应通过所述 USB通道返回给所述上位机; 如是操作卡片指令, 则所述读卡器将所述操作卡 片指令发送给卡片, 接收所述卡片返回的操作卡片响应, 将所述操作卡片响应通过所述 USB通道返回给上位机, 如是其他命令, 则执行 相应操作。
优选地, 所述进入所述蓝牙通信中断, 通过蓝牙通道接收指令, 根据收到的所述指令执行相应操作, 并将操作结果通过所述蓝牙通 道返回给所述上位机, 具体包括:
进入所述蓝牙通信中断, 通过所述蓝牙通道接收指令, 解析收到的所述指令, 判断指令类型, 如是查询卡槽状态指令, 则所述读卡 器查询卡槽状态,并设置卡槽状态数据的预设 字节,将设置完的所述卡槽状态数据通过所述 蓝牙通道返回给所述上位机;如是上电指令, 则所述读卡器对所述卡槽上电, 读取上电响应, 将所述上电响应通过所述蓝牙通道返回给所述 上位机: 如是下电指令, 则所述读卡器对 所述卡槽下电, 读取下电响应, 将所述下电响应通过所述蓝牙通道返回给上位 机; 如是操作卡片指令, 则所述读卡器将所述操作卡片指 令发送给卡片, 接收所述卡片返回的操作卡片响应, 将所述操作卡片响应通过所述蓝牙通道返回给 所述上位机: 如是査询蓝牙模块参数 信息指令, 则所述读卡器通过所述蓝牙通道向上位机发送 所述蓝牙模块的参数, 等待接收所述上位机下发的所述蓝牙模块的新 的参数, 当接收到所述新的参数后, 断开所述蓝牙模块连接, 写入所述新的参数, 然后将所述蓝牙模块切换为连接状态; 如是其他命令, 则执行 相应操作。
优选地, 所述进入所述 USB通信中断, 通过 USB通道接收指令, 根据收到的所述指令执行相应操作, 并将操作结果通过所述 USB 通道返回给上位机, 具体包括:
进入所述 USB通信中断, 通过所述 USB通道接收指令, 解析收到的所述指令, 判断指令类型, 如是切换通道命令, 打开所述蓝牙连 接中断使能;
所述进入蓝牙通信中断, 进入所述蓝牙通信中断, 通过蓝牙通道接收指令, 根据收到的所述指令执行相应操作, 并将操作结果通过 所述蓝牙通道返回给所述上位机, 具体包括,
进入所述蓝牙通信中断, 通过所述蓝牙通道接收指令, 解析收到的所述指令, 判断指令类型, 如是切换通道命令, 打开所述插 USB 中断使能; 如是其他命令, 则执行相应操作。
优选地, 所述蓝牙模块的参数, 具体包括, MAC的内容、 PIN码和读卡器设备名称:
所述判断是否读取成功, 具体包括: 所述读卡器根据所述蓝牙模块的参数中的指定 字节判断是否读取成功; 如果所述蓝牙模块的参 数中的指定字节的取值等于预设字节, 则表示读取成功; 否则, 表示读取不成功:
当所述读卡器通过 USB端口与上位机建立连接时 , 所述读卡器通过所述 USB端口充电。
优选地, 所述 MCU休眠, 具体包括:
增加分频数值, 降低总线时钟的频率, MCU内核电压等级切换至电压范围为 1的状态, 失能第一串行通信接口、 第二串行通信接口 外设后, MCU休眠。
步骤 S1 : 读卡器系统初始化, 打开插卡中断和 /或拔卡中断和 /或插 USB中断和 /或拔 USB中断和 /或蓝牙连接中断和 /或蓝牙断开中 断和 /或定时器中断和 /或 USB通信中断和 /或蓝牙通信中断;
步骤 S2 : 判断工作电压是否低于预设值, 是, 提示低电量状态, 当低电量状态超过第一预设时间时关闭所述读 卡器: 否, 执行歩 骤 S3 ;
步骤 S3: 判断是否存在置位的中断标识, 如果存在置位的中断标识, 则执行步骤 S4 ; 否则, 返回步骤 S2 ;
所述中断标识包括: 插卡中断标识、 拔卡中断标识、 插 USB中断标识、 拔 USB中断标识、 蓝牙连接中断标识、 蓝牙断开中断标识、 蓝牙通信中断标识、 USB通信中断标识、 定时器中断标识;
步骤 S4: 检测所述置位的中断标识的类型;
如置位的中断标识为所述蓝牙通信中断标识或 所述 USB通信中断标识, 则执行步骤 S5 ; 如为其他中断标识, 则根据所述置位的中 断标识的类型执行相应操作, 返回歩骤 S2 ;
步骤 S5 : 接收指令并保存所述指令对应的通道标识, 根据所述指令的类型执行相应操作, 向所述上位机发送相应的响应, 淸除相 应的中断标识, 返回歩骤 S2。
优选地, 当所述读卡器收到插卡中断信号时, 将所述插卡中断标识置位;
当所述读卡器收到拔卡中断信号时, 将所述拔卡中断标识置位;
当所述读卡器收到插 USB中断信号时, 将所述插 USB中断标识置位;
当所述读卡器收到拔 USB中断信号时, 将所述拔 USB中断标识置位;
当所述读卡器收到蓝牙连接中断信号时, 将所述蓝牙连接中断标识置位;
当所述读卡器收到蓝牙断开中断信号时, 将所述蓝牙断开中断标识置位;
当所述读卡器收到蓝牙通信中断信号时, 将所述蓝牙通信中断标识置位:
当所述读卡器收到 USB通信中断信号时, 将所述 USB通信中断标识置位。
优选地, 所述歩骤 S2与步骤 S3之间包括,
步骤 S2 ' : 读取蓝牙模块的参数, 判断是否读取成功, 是, 将所述蓝牙模块切换至连接状态, 执行歩骤 S3 ; 否, 将 USB通道标识 置位, 执行步骤 S2 ; 或者,
步骤 S2 ' 读取蓝牙模块的参数,判断是否读取成功,是 ,将所述蓝牙模块切换至连接状态,执行步骤 S3; 否,返回歩骤 S2 ' ' 。 优选地, 所述如为其他中断标识, 则根据所述置位的中断标识的类型执行相应操 作, 返回步骤 S2 , 具体包括,
如所述置位的中断标识为插 USB中断标识置位, 则判断休眠标识是否置位, 是, 将所述休眠标识复位, MCU被唤醒, 打开 USB通道 使能, 将所述 USB通道连接标识置位, 将所述插 USB中断标识复位, 返回步骤 S2 ; 否, 打开所述 USB通道使能, 将是 USB通道连接标 识置位, 将所述插 USB中断标识复位, 返回步骤 S2 :
如所述置位的中断标识为拔 USB中断标识置位, 则判断所述蓝牙通道连接标识是否置位, 是, 关闭所述 USB通道使能, 将所述 USB 通道连接标识复位, 将所述拔 USB中断标识复位, 返回步骤 S2 ; 否, 关闭所述 USB通道使能, 将所述 USB通道连接标识复位, 将所述 拔 USB中断标识复位, 将所述休眠标识置位, MCU休眠;
如所述置位的中断标识为蓝牙连接中断标识置 位, 则判断所述休眠标识是否置位, 是, 将所述休眠标识复位, 所述 MCU被唤醒, 打 开蓝牙通道使能, 将蓝牙通道连接标识置位, 将所述蓝牙连接中断标识复位, 返回步骤 S2 ; 否, 打开所述蓝牙通道使能, 将所述蓝牙 通道连接标识置位, 将所述蓝牙连接中断标识复位, 返回步骤 S2 ;
如所述置位的中断标识为蓝牙断开中断标识置 位, 则判断所述 USB通道连接标识是否置位, 是, 关闭所述蓝牙通道使能, 将所述蓝 牙通道连接标识复位, 将所述蓝牙断开中断标识复位, 返回步骤 S2 ; 否, 关闭所述蓝牙通道使能, 将所述蓝牙通道连接标识复位, 将 蓝牙断开中断标识复位, 将所述休眠标识置位, 所述 MCU休眠。
优选地, 所述歩骤 S2 ' 与步骤 S3之间或歩骤 S2 ' ' 与步骤 S3之间包括步骤 S3' ,
步骤 S3' : 检测所述读卡器与所述上位机的连接方式;
如果所述读卡器是通过所述 USB端口与所述上位机连接, 则所述读卡器将 USB通道连接标识置位, 执行步骤 S3; 如果所述读卡器 是通过所述蓝牙模块与上位机连接, 将所述蓝牙通道连接标识置位, 执行步骤 S3。
优选地, 所述如为其他中断标识, 则根据所述置位的中断标识的类型执行相应操 作, 返回步骤 S2 , 包括,
如所述置位的中断标识为插 USB中断标识, 则判断休眠标识是否置位, 若所述休眠标识置位, 将所述休眠标识复位, MCU被唤醒, 打开 USB通道使能, 将 USB通道连接标识置位, 关闭蓝牙连接中断使能, 判断蓝牙通道连接标识是否置位, 若所述蓝牙通道连接标识置 位, 则将所述蓝牙通道连接标识复位, 将所述插 USB中断标识复位, 返回步骤 S2 ; 若所述蓝牙通道连接标识未置位, 则将所述插 USB 中断标识复位, 返回歩骤 S2 ;
若所述休眠标识未置位,则判断所述蓝牙通道 连接标识是否置位,是,将所述蓝牙通道连接 标识复位,关闭所述蓝牙连接中断使能, 打开所述 USB通道使能, 将所述 USB通道连接标识置位, 将所述插 USB中断标识复位, 返回步骤 S2; 否, 关闭所述蓝牙连接中断使能, 打开所述 USB通道使能, 将所述 USB通道连接标识置位, 将所述插 USB中断标识复位, 返回歩骤 S2 ;
如所述置位的中断标识为拔 USB中断标识,则关闭所述 USB通道使能,将所述 USB通道连接标识复位,打开所述蓝牙连接中断 使能, 将所述拔 USB中断标识复位, 将所述休眠标识置位 , 所述 MCU休眠;
如所述置位的中断标识为蓝牙连接中断标识, 则判断所述休眠标识是否置位, 是, 将所述休眠标识复位, 所述 MCU被唤醒, 打开所 述蓝牙通道使能, 将所述蓝牙通道连接标识置位, 将所述蓝牙连接中断标识复位, 返回步骤 S2 ; 否, 打开所述蓝牙通道使能, 将所述 蓝牙通道连接标识置位, 将所述蓝牙连接中断标识复位, 返回步骤 S2 ;
如所述置位的中断标识为蓝牙断开中断标识, 则关闭所述蓝牙通道使能, 将所述蓝牙通道连接标识复位, 将所述蓝牙断开中断标识 复位, 将所述休眠标识置位, 所述 MCU休眠。
优选地, 所述步骤 S2 ' 与步骤 S3之间或歩骤 S2 ' ' 与步骤 S3之间, 包括步骤 S3' ' ,
步骤 S3' ' : 检测所述读卡器与所述上位机的连接方式:
如果所述读卡器是通过所述蓝牙模块与所述上 位机连接, 则所述读卡器将蓝牙通道连接标识置位, 执行步骤 S3; 如果所述读卡器 是通过所述 USB端口与所述上位机连接, 将所述 USB通道连接标识置位, 执行步骤 S3。
优选地, 所述如为其他中断标识, 则根据所述置位的中断标识的类型执行相应操 作, 返回歩骤 S2 , 包括,
如所述置位的中断标识为插 USB中断标识置位, 则判断休眠标识是否置位, 是, 将所述休眠标识复位, MCU被唤醒, 打开 USB通道 使能, 将 USB通道连接标识置位, 将插 USB中断标识复位, 返回步骤 S2 ; 否, 打开所述 USB通道使能, 将所述 USB通道连接标识置位, 将所述插 USB中断标识复位, 返回步骤 S2 ;
如所述置位的中断标识为拔 USB中断标识, 则将所述 USB通道连接标识复位, 将所述休眠标识置位, 将所述拔 USB中断标识复位, 所述 MCU休眠;
如所述置位的中断标识为蓝牙连接中断标识, 则判断所述休眠标识是否置位, 是, 将所述休眠标识复位, 所述 MCU被唤醒, 打开所 述蓝牙通道使能, 将所述蓝牙通道连接标识置位, 关闭所述插 USB中断使能, 将所述蓝牙连接中断标识复位, 返回步骤 S2 ; 否, 判断 所述 USB通道连接标识是否置位, 若所述 USB通道连接标识置位, 则所述将 USB通道连接标识复位, 打开所述蓝牙通道使能, 将所述蓝 牙通道连接标识置位, 关闭所述插 USB中断使能, 将所述蓝牙连接中断标识复位, 返回步骤 S2 ; 若所述 USB通道连接标识未置位, 则 打开所述蓝牙通道使能, 将所述蓝牙通道连接标识置位, 关闭所述插 USB中断使能, 将所述蓝牙连接中断标识复位, 返回步骤 S2 ;
如所述置位的中断标识为蓝牙断开中断标识, 则关闭所述蓝牙通道使能,将所述蓝牙通道连 接标识复位,打开所述插 USB中断使能, 将所述蓝牙断开中断标识复位, 将所述休眠标识置位, 所述 MCU休眠。
优选地, 所述如为其他中断标识, 则根据所述置位的中断标识的类型执行相应操 作, 返回步骤 S2 , 包括,
如所述置位的中断标识为插 USB中断标识, 则判断休眠标识是否置位, 若所述休眠标识置位, 将所述休眠标识复位, MCU被唤醒, 打开 USB通道使能, 将 USB通道连接标识置位, 关闭蓝牙连接中断使能, 将插 USB中断标识复位, 返回歩骤 S2 ; 若所述休眠标识未置 位, 则打开所述 USB通道使能, 将所述 USB通道连接标识置位, 关闭所述蓝牙连接中断使能, 将所述插 USB中断标识复位, 返回步骤 S2 ;
如所述置位的中断标识为拔 USB中断标识,则关闭所述 USB通道使能,将所述 USB通道连接标识复位,打开所述蓝牙连接中断 使能, 将所述拔 USB中断标识复位, 将所述休眠标识置位, 所述 MCU休眠;
如所述置位的中断标识为蓝牙连接中断标识, 则判断所述休眠标识是否置位, 是, 将所述休眠标识复位, 所述 MCU被唤醒, 打开所 述蓝牙通道使能, 将所述蓝牙通道连接标识置位, 关闭所述插 USB中断使能, 将所述蓝牙连接中断标识复位, 返回步骤 S2 ; 否则打开 所述蓝牙通道使能, 将所述蓝牙通道连接标识置位, 关闭所述插 USB中断使能, 将所述蓝牙连接中断标识复位, 返回步骤 S2 :
如所述置位的中断标识为蓝牙断开中断标识, 则关闭所述蓝牙通道使能,将所述蓝牙通道连 接标识复位,打开所述插 USB中断使能, 将所述蓝牙断开中断标识复位, 将所述休眠标识置位, 所述 MCU休眠。
优选地, 所述如为其他中断标识, 则根据所述置位的中断标识的类型执行相应操 作, 返回歩骤 S2 , 还包括,
如所述置位的中断标识为插卡中断标识, 则判断所述休眠标识是否置位, 若所述休眠标识置位, 则将所述休眠标识复位, 所述 MCU 被唤醒, 设置卡槽状态标识为有卡标识, 判断所述 USB通道连接标识是否置位, 是, 向 INT端点写入插卡响应, 将所述插卡中断标识复 位, 返回步骤 S2 ; 否, 将所述插卡中断标识复位, 返回步骤 S2 ; 若所述休眠标识未置位, 判断所述 USB通道连接标识是否置位, 是, 向所述 INT端点写入插卡响应, 将所述插卡中断标识复位, 返回步骤 S2 ; 否, 将所述插卡中断标识复位, 返回步骤 S2 ;
如所述置位的中断标识为拔卡中断标识, 则设置所述卡槽状态标识为无卡标识, 判断所述 USB通道连接标识是否置位, 是, 向所述 INT端点写入拔卡响应, 将所述拔卡中断标识复位, 将所述休眠标识置位, 所述 MCU休眠; 否, 将所述拔卡中断标识复位, 将所述休眠 标识置位, 所述 MCU休眠;
如所述置位的中断标识为定时器中断标识, 则将计数清零, 将所述定时器中断标识复位, 将休眠标识置位, MCU休眠。
优选地, 所述步骤 S5 , 具体包括,
a: 当通过 USB通道收到指令时, 将 USB通道标识置位; 当通过蓝牙通道收到指令时, 将蓝牙通道标识置位;
b: 根据所述指令的类型执行相应操作, 向上位机发送相应的响应, 清除相应的中断标识, 包括:
如接收指令是查询卡槽状态指令, 则査询卡槽状态, 并设置卡槽状态数据的预设字节, 检测当前置位的通道标识的类型, 如是所述 蓝牙通道标识, 则通过所述蓝牙通道向所述上位机发送所述卡 槽状态数据, 将所述蓝牙通道标识复位, 将所述蓝牙通信中断标识复位; 如是所述 USB通道标识, 则通过所述 USB通道向所述上位机发送所述卡槽状态数据, 将所述 USB通道标识复位, 将所述 USB通信中断标 识复位:
如接收指令是上电指令, 则对卡槽上电, 读取上电响应, 检测当前置位的通道标识的类型, 如是所述蓝牙通道标识, 则通过所述蓝 牙通道向所述上位机发送所述上电响应, 将所述蓝牙通道标识复位, 将所述蓝牙通信中断标识复位; 如是所述 USB通道标识, 则通过所 述 USB通道向所述上位机发送所述上电响应, 将所述 USB通道标识复位, 将所述 USB通信中断标识复位;
如接收指令是下电指令, 则对卡槽下电, 读取下电响应, 检测当前置位的通道标识的类型, 如是所述蓝牙通道标识, 则通过所述蓝 牙通道向所述上位机发送所述下电响应, 将所述蓝牙通道标识复位, 将所述蓝牙通信中断标识复位; 如是所述 USB通道标识, 则通过所 述 USB通道向所述上位机发送所述下电响应, 将所述 USB通道标识复位, 将所述 USB通信中断标识复位;
如接收指令是操作卡片指令, 则将所述操作卡片指令发送给卡片, 接收所述卡片返回的操作卡片响应, 检测当前置位的通道标识的 类型, 如是蓝牙通道标识, 则通过所述蓝牙通道向所述上位机发送所述操 作卡片响应, 将所述蓝牙通道标识复位, 将所述蓝牙通信中断 标识复位; 如是所述 USB通道标识, 则通过所述 USB通道向所述上位机发送所述操作卡片响应, 将所述 USB通道标识复位, 将所述 USB 通信中断标识复位;
如接收指令是查询蓝牙模块参数信息指令, 则判断蓝牙通道标识是否置位, 是, 则通过所述蓝牙通道向所述上位机发送蓝牙模 块的 参数, 等待接收所述上位机下发的蓝牙模块的新的参 数, 然后断开所述蓝牙模块连接, 并写入新的参数, 将所述蓝牙模块切换为连接状 态, 将所述蓝牙通道标识复位, 将所述蓝牙通信中断标识复位; 否, 则报错。 优选地, 所述步骤 S5还包括,
a' : 当通过 USB通道收到指令时, 将 USB通道标识置位; 当通过蓝牙通道收到指令时, 将蓝牙通道标识置位;
b' : 根据所述指令的类型执行相应操作, 向得到上位机发送相应的响应, 清除相应的中断标识, 包括:
如接收指令是切换通道指令, 则检测当前置位的通道标识是否为所述蓝牙通 道标识, 是, 则关闭所述蓝牙通道使能, 将所述蓝牙通 道标识复位, 打开所述 USB通道使能, 并将所述 USB通道标识置位, 将 U所述 SB通信中断标识复位; 否, 则关闭所述 USB通道使能, 将所述 USB通道标识复位, 打开所述蓝牙通道使能, 并将所述蓝牙通道标识复位。
优选地, 所述蓝牙模块的参数, 具体包括, MAC的内容、 PIN码和读卡器设备名称;
所述判断是否读取成功, 具体包括: 所述读卡器根据所述蓝牙模块的参数中的指定 字节判断是否读取成功: 如果所述蓝牙模块的参 数中的指定字节的取值等于预设字节, 则表示读取成功; 否则, 表示读取不成功;
当所述读卡器通过 USB端口与上位机建立连接时 , 所述读卡器通过所述 USB端口充电。
优选地, 所述 MCU休眠, 具体包括:
增加分频数值, 降低总线时钟的频率, MCU内核电压等级切换至电压范围为 1的状态, 失能第一串行通信接口、 第二串行通信接口 外设后, MCU休眠。
根据本发明, 一个读卡器可以利用 USB接口或蓝牙模块实现与上位机通信, 并且在蓝牙模块与上位机通信过程中, 可以设置蓝牙模 块的参数。 本发明可使读卡器通过 USB端口与不同型号的移动设备进行通信。
附图说明
图 1-1至图 1-10为本发明实施例一提供的一种读卡器与上 机通信的方法流程图;
图 2-1至图 2-10为本发明实施例二提供的一种读卡器与上 机通信的方法流程图。
具体实施方式
为使本发明的目的、 技术方案和优点更加清楚, 下面将结合附图对本发明实施方式做进一步的 详细描述。
本发明所述的读卡器可以是接触式读卡器也可 以是非接触式读卡器, 本发明实施方式以接触式读卡器为例。
实施例一
如图 1-1所示, 本发明提供了一种读卡器与上位机通信的方法 , 包括:
步骤 101 : 读卡器系统初始化;
本实施例中, 系统配置处理器时钟、 定时器时钟、 10接口、 串口、 USB接口;
步骤 102: 打开中断;
本实施例中, 读卡器打开插卡中断和 /或拔卡中断和 /或插 USB中断和 /或拔 USB中断和 /或蓝牙断开中断和 /或定时器中断和 /或 USB 通信中断和 /或蓝牙通信中断。
步骤 103: 判断工作电压是否低于预设值;
是, 提示低电压状态, 如低电压状态超过第一预设时间则关闭读卡器 : 否, 执行步骤 104。
本实施例中, 可以通过屏幕显示工作电压低和 /或通过变换指示灯颜色提示工作电压低和 /或通过蜂鸣提示工作电压低和 /或通过语 音提示工作电压低。 第一预设时间可以为 30s。
步骤 104: 读取蓝牙模块的参数;
本实施例中, 读取 MAC的内容、 PIN码和读卡器设备名称。
步骤 105: 判断是否读取成功;
是, 执行步骤 106; 否, 返回步骤 104。
本实施例中, 读卡器从蓝牙模块中读取蓝牙模块的参数, 并根据蓝牙模块的参数的最后一个字节判断是 否读取成功。如果蓝牙模块 的参数的最后一个字节是 0X00, 则表示读卡器读取蓝牙模块的参数成功; 否则, 读卡器读取蓝牙模块的参数不成功。
本步骤还可以为, 读取蓝牙模块参数, 判断是否读取成功, 是, 执行步骤 106: 否, 位, 将 USB通道标识置位, 然后执行步骤 107。 步骤 106: 把蓝牙模块切换为连接状态;
本实施例中, 将蓝牙模块状态输出引脚闭合。
步骤 107: 判断工作电压是否低于预设值;
是, 提示低电压状态, 若低电压状态超过第一预设时间, 则关闭读卡器; 否, 等待接收中断信号, 进入中断执行相应操作, 返回步 骤 10了。
本实施例中, 等待接收中断信号, 进入中断执行相应操作, 具体包括:
如图 1-2 所示, 当读卡器的卡到位引脚为高电平时, 则进入插卡中断, 关闭中断, 清除插卡中断标识, 判断休眠标识是 否置位, 若休眠标识置位, 则将休眠标识复位, MCU被唤醒, 设置卡槽状态标识为有卡标识, 判断 USB通道连接标识是否置位, 是, 向 INT端点写入插卡响应, 打开中断, 退出插卡中断; 否, 打开中断, 退出插卡中断;
若休眠标识未置位, 则设置卡槽状态标识为有卡标识, 判断 USB通道连接标识是否置位, 是, 向 INT端点写入插卡响应, 打开 中断, 退出插卡中断; 否, 打开中断, 退出插卡中断;
如图 1-3所示, 当读卡器的卡到位引脚为低电平时, 进入拔卡中断, 关闭中断, 清除拔卡中断标识, 设置卡槽状态标识为无卡标 识, 判断 USB通道连接标识是否置位, 是, 向 INT端点写入拔卡响应, 将休眠标识置位, MCU休眠, 打开中断, 退出拔卡中断; 否, 将 休眠标识置位, MCU休眠, 打开中断, 退出拔卡中断;
本实施例中, 切换至休眠状态操作具体包括: 增加分频数值, 降低总线时钟的频率, MCU (微控制单元)内核电压等级切换至电压范 围为 1的状态, 失能第一串行通信接口、 第二串行通信接口外设后, MCU切换至休眠状态。
对于蓝牙模块, 如果蓝牙模块为已连接状态, 则蓝牙模块切换至定时监听模式; 如果蓝牙模块为未连接状态则待机。
如图 1-4所示, 当读卡器的 USB供电引脚为高电平时, 进入插 USB中断处理, 关闭中断, 清除插 USB中断标识, 判断休眠 标识是否置位, 是, 将休眠标识复位, MCU被唤醒, 打开 USB通道使能, 将 USB通道连接标识置位, 打开中断, 退出插 USB中断; 否, 打开 USB通道使能, 将 USB通道连接标识置位, 打开中断, 退出插 USB中断;
如图 1 -5 所示, 当读卡器的 USB供电引脚为低电平时, 进入拔 USB中断, 关闭中断, 清除拔 USB中断标识, 判断蓝牙通道 连接标识是否置位, 是, 关闭 USB通道使能, 将 USB通道连接标识复位, 打开中断, 退出拔 USB中断; 否, 关闭 USB通道使能, 将 USB 通道连接标识复位, 将休眠标识置位, MCU休眠, 打开中断, 退出拔 USB中断:
如图 1-6所示, 当蓝牙模块状态输出引脚电平变为高电平时, 进入蓝牙连接中断, 关闭中断, 清除蓝牙连接中断标识, 判断休眠标识是否置位, 是, 将休眠标识复位, MCU被唤醒, 打开蓝牙通道使能, 将蓝牙通道连接标识置位, 打开中断, 退出蓝牙连接 中断; 否, 打开蓝牙通道使能, 将蓝牙通道连接标识置位, 打开中断, 退出蓝牙连接中断;
如图 1-7所示, 当蓝牙模块状态输出引脚电平变为低电平时, 进入蓝牙断开中断, 关闭中断, 清除蓝牙断开中断标识, 判断 USB通道连接标识是否置位, 是, 关闭蓝牙通道使能, 将蓝牙通道连接标识复位, 打开中断, 退出蓝牙断开中断; 否, 关闭蓝牙通 道使能, 将蓝牙通道连接标识复位, 将休眠标识置位, MCU休眠, 打开中断, 退出蓝牙断开中断;
如图 1-8所示, 当读卡器收到定时器触发时, 进入定时器中断, 关闭中断, 清除定时器中断标识, 计数清零, 休眠标识 置位, 打开中断, 退出定时器中断;
如图 1-9所示, 当读卡器通过 USB通道接收到指令时, 进入 USB通信中断, 具体操作如下:
步骤 108-1 : 关闭中断;
步骤 109-1 : 清除中断;
本实施例中, 具体的清除 USB通信中断标识;
步骤 110-1 : 解析收到的指令, 判断指令类型;
本实施例中, 根据指令的第一字节的值判断指令类型。
如果指令的第一字节为 0X65, 则该指令为查询卡槽状态指令, 执行步骤 111-1 ;
如果指令的第一字节为 0X62, 则该指令为上电指令, 执行歩骤 113-1 :
如果指令的第一字节为 0X63, 则该指令为下电指令, 执行歩骤 116-1 ;
如果指令的第一字节为 0X6f, 则该指令为操作卡片指令, 执行步骤 119-1 ;
如果接收到其他指令, 则执行相应操作, 然后打开中断, 退出 USB通信中断;
步骤 111-1 : 査询卡槽状态, 并设置卡槽状态数据的预设字节;
本实施例中, 根据 10接口的状态判断卡槽状态。
如果 10接口为高电平, 则表示是无卡状态, 将卡槽状态数据的预设字节设置为 0X02;
如果 10接口为低电平且指定的标识位为 0, 则表示是有卡已激活状态, 将卡槽状态数据的预设字节设置为 0X00;
如果 10接口为低电平且指定的标识位为 1, 则表示是有卡未激活状态, 将卡槽状态数据的预设字节设置为 0X01。
卡槽状态数据的预设字节可以为第八字节。
步骤 112-1 : 通过 USB通道向上位机发送卡槽状态数据, 然后打开中断, 退出 USB通信中断;
步骤 113-1 : 判断是否有卡片, 是, 对卡槽上电, 然后执行步骤 114-1 ; 否, 向上位机发送无卡响应, 然后打开中断, 退出 USB通 信中断;
本实施例中, 査询卡槽状态标识, 如是有卡标识则表示有卡片; 否则表示无卡片。
步骤 114-1 : 读取上电响应;
本实施例中, 读取包含卡片信息的上电响应, 例如:
800c00000000120000003bf095000081blfe9alf0729 :
步骤 115-1 : 通过 USB通道向上位机发送上电响应, 然后打开中断, 退出 USB通信中断;
步骤 116-1 : 对卡槽下电;
步骤 117-1 : 读取下电响应;
本实施例中, 下电响应的第一字节为 0X81, 例如: 81000000000004010帽。
步骤 118-1 : 通过 USB通道向上位机发送下电响应, 然后打开中断, 退出 USB通信中断;
步骤 119-1 : 将操作卡片指令发送给卡片;
本实施例中, 读卡器将接收到的操作卡片指令不做任何处理 直接发送给卡片。
步骤 120-1 : 接收卡片返回的操作卡片响应;
本实施例中, 接收卡片返回第一字节为 0X80的操作卡片响应。 例如: 8005000000001800000000el01f010:
步骤 121-1 : 通过 USB通道向上位机发送操作卡片响应, 然后打开中断, 退出 USB通信中断。
如图 1-10所示, 当读卡器通过蓝牙通道收到指令时, 进入蓝牙通信中断, 具体操作如下:
步骤 108-2: 关闭中断;
步骤 109-2: 清除中断;
本实施例中, 具体清除蓝牙通信中断标识。
步骤 110-2: 解析收到的指令, 判断指令类型;
本实施例中, 具体判断方法与歩骤 110-1相同,
如果该指令为查询卡槽状态指令, 执行步骤 111-2 ;
如果该指令为上电指令, 执行歩骤 113-2;
如果该指令为下电指令, 执行歩骤 116-2;
如果该指令为操作卡片指令, 执行步骤 119 - 2;
如果接收到第一字节为 0X5A、 第四字节为 0X61, 则该指令为查询蓝牙模块的参数信息指令, 执行步骤 122-2 ;
如果该指令为其他指令, 则执行相应操作, 打开中断, 退出蓝牙通信中断。
步骤 111-2: 查询卡槽状态, 并设置卡槽状态数据的预设字节;
本实施例中, 具体操作与步骤 111-1相同。
步骤 112-2: 通过蓝牙通道向上位机发送卡槽状态数据, 然后打开中断, 退出蓝牙通信中断:
步骤 113-2: 判断是否有卡片, 是, 对卡槽上电, 然后执行歩骤 114-2 ; 否, 向上位机发送无卡响应, 然后打开中断, 退出蓝牙通 信中断:
本实施例中, 査询卡槽状态标识, 如是有卡标识则表示有卡片; 否则表示无卡片;
步骤 114-2: 读取上电响应;
本实施例中, 具体操作与步骤 114-1相同。
步骤 115-2: 通过蓝牙通道向上位机发送上电响应, 然后打开中断, 退出蓝牙通信中断; 步骤 116-2: 对卡槽下电:
步骤 117-2: 读取下电响应;
本实施例中, 具体操作与步骤 117-1相同。
步骤 118-2: 通过蓝牙通道向上位机发送下电响应, 然后打开中断, 退出蓝牙通信中断;
步骤 119-2: 将操作卡片指令发送给卡片;
本实施例中, 读卡器将接收到的操作卡片指令不做任何处理 直接发送给卡片。
步骤 120-2: 接收卡片返回的操作卡片响应;
本实施例中, 具体操作与步骤 120-1相同;
步骤 121-2: 通过蓝牙通道向上位机发送操作卡片响应, 然后打开中断, 退出蓝牙通信中断;
步骤 122-2: 通过蓝牙通道向上位机发送蓝牙模块的参数;
本实施例中, 具体的向上位机发送第一字节为 0XA5、 第四字节为 0X62、 包含 MAC内容、 读卡器设备名称以及 PIN码的蓝牙模块的 步骤 123-2: 接收蓝牙模块的新的参数;
步骤 124-2: 断开蓝牙模块连接, 并写入新的参数, 然后将蓝牙模块切换为连接状态, 然后打开中断, 退出蓝牙通信中断 需要说明的是, 在本发明实施方式的步骤 107中, 返回步骤 107之前还包括步骤 107' ,
步骤 107' : 检测读卡器与上位机的连接方式;
如果是通过所述 USB端口与所述上位机连接, 则所述读卡器将 USB通道连接标识置位, 返回步骤 107; 如果是通过所述蓝牙模块与 上位机连接, 将蓝牙通道连接标识置位, 返回步骤 107;
相应的, 将当读卡器的 USB供电引脚为高电平时, 进入插 USB中断, 还包括,
当所述读卡器的 USB供电引脚变为高电平时, 进入插 USB中断, 关闭中断, 清除插 USB中断标识, 判断休眠标识是否置位, 若休眠标识置位, 将休眠标识复位, MCU被唤醒, 打开 USB通道使能, 将 USB通道连接标识置位, 判断蓝牙通道连接标识是否置位, 若 蓝牙通道连接标识置位, 则将蓝牙通道连接标识复位, 退出插 USB中断处理, 打开中断, 关闭蓝牙连接中断使能, 退出插 USB中断处理; 若蓝牙通道连接标识未置位, 则打开中断, 关闭蓝牙连接中断使能, 退出插 USB中断;
若休眠标识未置位, 则判断蓝牙通道连接标识是否置位, 是, 将蓝牙通道连接标识复位, 打开 USB通道使能, 将 USB通道连接标识 置位, 打开中断, 关闭蓝牙连接中断使能, 退出插 USB中断; 否, 将 USB通道连接标识置位, 打开中断, 关闭蓝牙连接中断使能, 退出 插 USB中断;
当读卡器的 USB供电引脚为低电平时, 进入拔 USB中断, 还包括,
进入拔 USB中断, 关闭中断, 清除拔 USB中断标识, 关闭 USB通道使能, 将 USB通道连接标识复位, 将休眠标识置位, MCU休眠, 打开中断, 所述打开中断须确保打开蓝牙连接中断使能, 退出拔 USB中断;
当蓝牙模块状态输出引脚电平变为高电平时, 进入蓝牙连接中断, 还包括, 进入蓝牙连接中断, 关闭中断, 清除蓝牙连 接中断标识, 判断休眠标识是否置位, 是, 将休眠标识复位, MCU被唤醒, 打开蓝牙通道使能, 将蓝牙通道连接标识置位, 打开中断, 退出蓝牙连接中断; 否, 打开蓝牙通道使能, 将蓝牙通道连接标识置位, 打开中断, 退出蓝牙连接中断;
当蓝牙模块状态输出引脚电平变为低电平时, 进入蓝牙断开中断, 还包括,
进入蓝牙断开中断, 关闭中断, 清除蓝牙断开中断标识, 关闭蓝牙通道使能, 将蓝牙通道连接标识复位, 将休眠标识置位, MCU休 眠, 打开中断, 退出蓝牙断开中断。 上述实施方式同样可以实现本发明目的。
需要说明的是, 在本发明实施方式的所述步骤 107中返回步骤 107之前还包括步骤 107' ' ,
步骤 107' ' :检测读卡器与上位机的连接方式, 如果是通过所述蓝牙模块与所述上位机连接, 则所述读卡器将蓝牙通道连接标识 置位, 返回步骤 107; 如果通过是所述 USB端口与上位机连接, 将 USB通道连接标识置位, 返回步骤 107;
相应的, 将当读卡器的 USB供电引脚为低电平时, 进入拔 USB中断处理, 具体包括,
当所述读卡器的 USB供电引脚变为低电平时, 进入拔 USB中断, 关闭中断, 清除拔 USB中断标识, 关闭 USB通道使能, 将 USB通道连接标识复位, 将休眠标识置位, MCU休眠, 打开中断, 退出拔 USB中断;
当蓝牙模块状态输出引脚电平变为高电平时, 进入蓝牙连接中断, 具体包括,
当蓝牙模块状态输出引脚电平变为高电平时, 进入蓝牙连接中断, 关闭中断, 清除蓝牙连接中断标识, 判断休眠标识是否置位, 是, 将休眠标识复位, MCU被唤醒, 打开蓝牙通道使能, 将蓝牙通道连接标识置位, 打开中断, 关闭插 USB中断使能, 退出蓝牙连接中 断; 否, 判断 USB通道连接标识是否置位, 若 USB通道连接标识置位, 则将 USB通道连接标识复位, 打开蓝牙通道使能, 将蓝牙通道连 接标识置位, 打开中断, 关闭插 USB中断使能, 退出蓝牙连接中断; 若 USB通道连接标识未置位, 则打开蓝牙通道使能, 将蓝牙通道连 接标识置位, 打开中断, 关闭插 USB中断使能, 退出蓝牙连接中断;
当蓝牙模块状态输出引脚电平变为低电平时, 进入蓝牙断开中断, 还包括,
当蓝牙模块状态输出引脚变为低电平时, 进入蓝牙断开中断, 关闭中断, 清除蓝牙断开中断标识, 关闭蓝牙通道使 能, 将蓝牙通道连接标识复位, 打开中断, 所述打开中断须确保打开插 USB中断使能, 将休眠标识置位, MCU休眠, 退出蓝牙断开中 断; 上述实施方式同样可以实现本发明目的。
需要说明的是, 在本发明的实施方式中, 步骤 110-1中还包括切换通道指令, 如是切换通道指令, 则关闭 USB通道使能, 打开蓝牙 连接中断使能。
步骤 110-2中还包括切换通道指令, 如是切换通道指令, 则关闭蓝牙通道使能, 打开插 USB中断使能。
当所述读卡器的 USB供电引脚变为高电平时, 进入插 USB中断, 具体包括,
当所述读卡器的 USB供电引脚变为高电平时, 进入插 USB中断, 关闭中断, 清除插 USB中断标识, 判断休眠标识是否置位, 若休眠标识置位, 将休眠标识复位, MCU被唤醒, 打开 USB通道使能, 将 USB通道连接标识置位, 打开中断, 关闭蓝牙连接中断使能, 退出插 USB中断; 若休眠标识未置位, 则打开 USB通道使能, 将 USB通道连接标识置位, 打开中断, 关闭蓝牙连接中断使能, 退出插 USB中断;
当所述读卡器的 USB供电引脚变为低电平时, 进入拔 USB中断, 具体包括,
当所述读卡器的 USB供电引脚变为低电平时, 进入拔 USB中断, 关闭中断, 清除拔 USB中断标识, 关闭 USB通道使能, 将 USB通道连接标识复位, 将休眠标识置位, MCU休眠, 打开中断, 所述打开中断须确保打开蓝牙连接中断使能, 退出拔 USB中断; 当蓝牙模块状态输出引脚变为高电平时, 进入蓝牙连接中断, 具体包括,
当蓝牙模块状态输出引脚变为高电平时, 进入蓝牙连接中断, 关闭中断, 清除蓝牙连接中断标识, 判断休眠标识是否置位, 是, 将休眠标识复位, MCU被唤醒, 打开蓝牙通道使能, 将蓝牙通道连接标识置位, 打开中断, 关闭插 USB中断使能, 退出蓝牙连接中 断; 否, 则打开蓝牙通道使能, 将蓝牙通道连接标识置位, 打开中断, 关闭插 USB中断使能, 退出蓝牙连接中断;
当蓝牙模块状态输出引脚变为低电平时, 进入蓝牙断开中断, 具体包括,
当蓝牙模块状态输出引脚变为低电平时, 进入蓝牙断开中断, 关闭中断, 清除蓝牙断开中断标识, 关闭蓝牙通道使能, 将蓝 牙通道连接标识复位, 将休眠标识置位, MCU休眠, 打开中断, 所述打开中断须确保, 打开插 USB中断使能, 退出蓝牙断开中断。 上述 实施方式同样可以实现本发明目的。
在本发明的实施方式中, 判断工作电压是否低于预设值的操作可以在系 统初始化之后接收指令之前执行, 还可以定时执行。 需要说明的是, 本方案仍适用于非接触式读卡器, 当非接触式读卡器切换至休眠状态, 当有卡片时, 调整非接触控制芯片的输出阻 抗至阈值。 当没有卡片时, 则调整非接触控制芯片的开关场寄存器, 关闭非接触场。
相应的, 当非接触式读卡器芯片确定特定引脚上的电容 值大于芯片中的电感应阈值时, 向 MCU的特定中断引脚输出高电平, 触发外 部中断, MCU被唤醒。
当非接触式读卡器接收到第一字节的值为 0X62的指令时, 执行开场操作;
当非接触式读卡器收到第一字节的值为 0X63的指令时, 执行关场操作。
实施例二
如图 2-1所示, 本发明提供了一种读卡器与上位机通信的方法 , 包括:
步骤 201: 读卡器系统初始化, 打开中断:
本实施例中, 系统配置处理器时钟、 定时器时钟、 10接口、 串口、 USB接口; 读卡器打开插卡中断和 /或拔卡中断和 /或插 USB中断 和 /或拔 USB中断和 /或蓝牙连接中断和 /或蓝牙断开中断和 /或定时器中断和 /或 USB通信中断和 /或蓝牙通信中断;
如图 2-2所示, 当卡到位检测引脚闭合时, 进入插卡中断, 关闭中断, 清除中断, 将插卡中断标识置位, 然后打开中断, 退出; 如图 2-3所示, 当卡到位检测引脚断开时, 进入拔卡中断, 关闭中断, 清除中断, 将拔卡中断标识置位, 然后打开中断, 退出; 如图 2-4所示, 当 USB供电引脚闭合时, 进入插 USB中断, 关闭中断, 清除中断, 将插 USB中断标识置位, 打开中断, 退出; 如图 2-5所示, 当 USB供电引脚断开时, 进入拔 USB中断, 关闭中断, 清除中断, 将拔 USB中断标识置位, 打开中断, 退出; 如图 2-6所示, 当蓝牙模块状态输出引脚闭合时, 进入蓝牙连接中断, 关闭中断, 清除中断, 将蓝牙连接中断标识置位, 打开中断, 退出;
如图 2-7所示, 当蓝牙模块状态输出引脚断开时, 进入蓝牙断开中断, 关闭中断, 清除中断, 将蓝牙断开中断标识置位, 打开中断, 退出;
如图 2-8所示, 当超过预设计数时, 进入定时器中断, 关闭中断, 清除中断, 计数清零, 将定时器中断标识置位, 打开中断, 退出; 如图 2-9所示, 当通过蓝牙接收到指令时, 进入蓝牙通信中断, 关闭中断, 清除中断, 将蓝牙通信中断标识置位, 打开中断, 退出; 如图 2-10所示, 当通过 USB通道接收到指令时, 进入 USB通信中断, 关闭中断, 清除中断, 将 USB通信中断标识置位, 打开中断, 退出。
步骤 202: 判断工作电压是否低于预设值;
是, 提示低电压状态, 若低电压状态超过第一预设时间, 则关闭读卡器: 否, 执行步骤 203。
本实施例中, 可以通过屏幕显示或者通过变换指示灯颜色或 者通过蜂鸣或者语音播报提示低电压状态。 第一预设时间可以为 30s。 步骤 203: 读取蓝牙模块的参数:
本实施例中, 读取 MAC的内容、 PIN码和读卡器设备名称。
步骤 204: 判断是否读取成功;
是, 执行歩骤 205 · 否, 返回歩骤 203。
本实施例中, 读卡器从蓝牙模块中读取蓝牙模块的参数, 并根据蓝牙模块的参数的最后一个字节判断是 否读取成功。 如果蓝牙模块 的参数的最后一个字节是 0X00, 则表示读卡器读取成功; 否则, 表示读卡器读取不成功。
步骤 205: 把蓝牙模块切换为连接状态;
步骤 206: 判断工作电压是否低于预设值:
是, 提示低电压状态, 若低电压状态超过第一预设时间, 则关闭读卡器; 否, 执行步骤 207。
步骤 207: 判断是否存在置位的中断标识;
是, 执行步骤 208; 否, 返回步骤 206。
步骤 208: 判断置位的中断标识类型, 如是蓝牙通信中断标识或 USB通信中断标识, 则执行步骤 209; 如是其他中断标识, 则执行 相应操作, 清除中断标识。
其他中断标识包括, 插卡中断标识, 拔卡中断标识, 定时器中断标识、 插 USB中断标识、 蓝牙连接中断标识、 蓝牙断开中断标识、 拔 USB中断标识;
如是插卡中断标识, 则判断休眠标识是否置位, 若休眠标识置位, 则将休眠标识复位, MCU被唤醒, 设置卡槽状态标识为有卡标识, 判断 USB通道连接标识是否置位, 是, 向 INT端点写入插卡响应, 清除中断标识, 返回歩骤 206; 否, 清除中断标识, 返回歩骤 206; 若休眠标识未置位, 判断 USB通道连接标识是否置位, 是, 向 INT端点写入插卡响应, 清除中断标识, 返回歩骤 206; 否, 清除中断标 识, 返回步骤 206; 其中, 清除中断标识, 具体为将插卡中断标识复位;
如是拔卡中断标识, 则设置卡槽状态标识为无卡标识, 判断 USB通道连接标识是否置位, 是, 向 INT端点写入拔卡响应, 将休眠标 识置位, MCU休眠, 清除中断标识, 等待唤醒; 否, 将休眠标识置位, MCU休眠, 清除中断标识, 等待唤醒; 其中, 清除中断标识具体 为, 将拔卡中断标识复位。
如是定时器中断标识, 则将计数清零, 将休眠标识置位, MCU休眠, 淸除中断标识, 等待唤醒; 其中, 淸除中断标识具体为, 将定 时器中断标识复位。
如是插 USB中断标识, 则执行歩骤 A;
如是蓝牙连接中断标识, 则执行歩骤 B;
如是蓝牙断开中断标识, 则执行歩骤 C;
如是拔 USB中断标识 , 则执行步骤 D;
步骤 A: 判断休眠标识是否置位, 是, 将休眠标识复位, MCU被唤醒, 打开 USB通道使能, 将 USB通道连接标识置位, 清除中断标 识, 返回步骤 206; 否, 打开 USB通道使能, 将 USB通道连接标识置位, 清除中断标识, 返回步骤 206; 其中, 清除中断标识具体为, 将插 USB中断标识复位:
步骤 B: 判断休眠标识是否置位, 是, 将休眠标识复位, MCU被唤醒, 打开蓝牙通道使能, 将蓝牙通道连接标识置位, 清除中断标 识, 返回步骤 206; 否, 打开蓝牙通道使能, 将蓝牙通道连接标识置位, 清除中断标识, 返回步骤 206; 其中, 清除中断标识具体为, 将蓝牙连接中断标识复位;
步骤 C: 判断 USB通道连接标识是否置位, 是, 关闭蓝牙通道使能, 将蓝牙通道连接标识复位, 清除中断标识, 返回步骤 206; 否, 关闭蓝牙通道使能, 将蓝牙通道连接标识复位, 将休眠标识置位, MCU休眠, 清除中断标识, 等待唤醒, 其中, 清除中断标识具体为, 将蓝牙断开中断标识复位。
步骤 D: 判断蓝牙通道连接标识是否置位, 是, 关闭 USB通道使能, 将 USB通道连接标识复位, 清除中断标识, 返回步骤 206: 否, 关闭 USB通道使能, 将 USB通道连接标识复位, 将休眠标识置位, MCU休眠, 淸除中断标识, 等待唤醒, 其中, 淸除中断标识具体为, 将拔 USB中断标识复位;
本实施例中, MCU被唤醒, 具体包括: 降低分频数值, 升高总线时钟的频率, MCU内核电压等级恢复至正常工作的状态, 使能第一 串行通信接口、 第二串行通信接口外设后, MCU被唤醒。
切换至休眠状态操作具体包括: 增加分频数值, 降低总线时钟的频率, MCU内核电压等级切换至电压范围为 1的状态, 失能第一串 行通信接口、 第二串行通信接口外设后, MCU切换至休眠状态。
步骤 209: 接收指令并保存通道标识;
本实施例中, 当读卡器收到指令完成标识符时, 完成接收指令; 如果通过 USB通道接收指令, 则通道标识保存为 1; 如果通过蓝牙 通道接收指令, 则通道标识保存为 0。
步骤 210: 判断指令类型;
根据指令的第一字节的值判断指令类型。
如果指令的第一字节为 0X65, 则该指令为査询卡槽状态指令, 执行步骤 211 ;
如果指令的第一字节为 0X62, 则该指令为上电指令, 执行步骤 215 ;
如果指令的第一字节为 0X63, 则该指令为下电指令, 执行歩骤 220;
如果指令的第一字节为 0X6f, 则该指令为操作卡片指令, 执行步骤 225;
如果接收到第一字节为 0X5A、 第四字节为 0X61, 则该指令为查询蓝牙模块的参数信息指令, 执行步骤 230 ;
步骤 211 : 查询卡槽状态, 并设置卡槽状态数据的预设字节;
本实施例中, 根据 10接口的状态判断卡槽状态。
如果 10接口为高电平, 则表示是无卡状态, 将卡槽状态数据的预设字节设置为 0X02;
如果 10接口为低电平且指定的标识位为 0, 则表示是有卡已激活状态, 将卡槽状态数据的预设字节设置为 0X00;
如果 10接口为低电平且指定的标识位为 1, 则表示是有卡未激活状态, 将卡槽状态数据的预设字节设置为 0X01。
卡槽状态数据的预设字节可以为第八字节。
步骤 212: 判断通道标识是否为 1 ;
是, 执行步骤 214; 否, 执行步骤 213。
步骤 213: 通过蓝牙通道向上位机发送卡槽状态数据, 然后清除中断标识, 然后返回步骤 206:
本实施例中, 清除中断标识具体为, 将蓝牙通信中断标识复位。
步骤 214: 通过 USB通道向上位机发送卡槽状态数据, 然后清除中断标识, 然后返回步骤 206;
本实施例中, 清除中断标识具体为, 将 USB通信中断标识复位。
步骤 215: 判断是否有卡片, 是, 对卡槽上电, 然后执行步骤 216; 否, 向上位机发送无卡响应, 然后清除中断标识, 返回步骤 206; 本实施例中, 查询卡槽状态标识, 如是有卡标识则表示有卡片; 否则表示无卡片;
步骤 216: 读取上电响应;
本实施例中, 读取包含卡片信息的上电响应, 例如:
800c00000000120000003bf095000081blfe9alf0729 ;
步骤 217: 判断通道标识是否为 1 :
是, 执行步骤 219; 否, 执行步骤 218。
步骤 218: 通过蓝牙通道向上位机发送上电响应, 然后清除中断标识, 然后返回步骤 206;
本实施例中, 清除中断标识具体为, 将蓝牙通信中断标识复位。
步骤 219: 通过 USB通道向上位机发送上电响应, 然后清除中断标识, 然后返回步骤 206;
本实施例中, 清除中断标识具体为, 将 USB通信中断标识复位。
步骤 220: 对卡槽下电;
步骤 221 : 读取下电响应;
本实施例中, 下电响应的第一字节为 0X81, 例如: 81000000000004010000。
步骤 222: 判断通道标识是否为 1 ;
是, 执行步骤 224; 否, 执行步骤 223。
步骤 223: 通过蓝牙通道向上位机发送下电响应, 然后清除中断标识, 然后返回步骤 206;
本实施例中, 清除中断标识具体为, 将蓝牙通信中断标识复位。
步骤 224: 通过 USB通道向上位机发送下电响应, 然后清除中断标识, 然后返回步骤 206;
本实施例中, 清除中断标识具体为, 将 USB通信中断标识复位。
步骤 225: 将操作卡片指令发送给卡片;
本实施例中, 读卡器将接收到的操作卡片指令不做任何处理 直接发送给卡片。
步骤 226: 接收卡片返回的操作卡片响应;
本实施例中, 接收卡片返回第一字节为 0X80的操作卡片响应。 例如: 8005000000001800000000el01f010 ;
步骤 227: 判断通道标识是否为 1 ;
是, 执行步骤 228; 否, 执行步骤 225。
步骤 228: 通过蓝牙通道向上位机发送操作卡片响应, 然后清除中断标识, 然后返回步骤 206;
本实施例中, 清除中断标识具体为, 将蓝牙通信中断标识复位。 步骤 229: 通过 USB通道向上位机发送操作卡片响应, 然后清除中断标识, 然后返回步骤 206:
本实施例中, 清除中断标识具体为, 将 USB通信中断标识复位。
步骤 230: 判断通道标识是否为 1 ;
是, 报错, 然后清除中断标识; 否, 执行步骤 234。
本实施例中, 清除中断标识具体为, 将 USB通信中断标识复位。
步骤 231 : 通过蓝牙通道向上位机发送蓝牙模块的参数;
本实施例中, 具体的向上位机发送第一字节为 0XA5、 第四字节为 0X62、 包含 MAC内容、 读卡器设备名称以及 PIN码的蓝牙模块的 参数。
步骤 232: 接收上位机下发的蓝牙模块的新的参数;
步骤 233: 断开蓝牙模块连接, 并写入新的参数, 然后将蓝牙模块切换为连接状态, 然后清除中断标识, 然后返回歩骤 206; 本实施例中, 清除中断标识具体为, 将蓝牙通信中断标识复位。
需要说明的是, 在本发明实施方式中, 步骤 206与步骤 207之间还包括, 检测读卡器与上位机的连接方式;
如果是通过 USB端口与上位机连接, 读卡器将 USB通道连接标识置位, 关闭蓝牙通道使能, 执行步骤 207; 如果是通过所述蓝牙模 块与上位机连接, 将蓝牙通道连接标识置位, 关闭 USB通道使能, 执行步骤 207;
相应的, 在歩骤 208中的步骤 A至 D还可以为步骤 A-1至 D-1,
步骤 A-1 : 如是插 USB中断标识, 则判断休眠标识是否置位, 若休眠标识置位, 将休眠标识复位, MCU被唤醒, 打开 USB通道使能, 将 USB通道连接标识置位, 关闭蓝牙连接中断使能, 判断蓝牙通道连接标识是否置位, 若蓝牙通道连接标识置位, 则将蓝牙通道连接标 识复位, 清除中断标识, 返回步骤 206; 若蓝牙通道连接标识未置位, 则清除中断标识, 返回步骤 206;
若休眠标识未置位, 则判断蓝牙通道连接标识是否置位, 是, 将蓝牙通道连接标识复位, 关闭蓝牙连接中断使能, 打开 USB通道使 能, 将 USB通道连接标识置位, 清除中断标识, 返回步骤 206; 否, 关闭蓝牙连接中断使能, 打开 USB通道使能, 将 USB通道连接标识 置位, 清除中断标识, 返回步骤 206, 其中, 清除中断标识为, 将插 USB中断标识复位;
步骤 B-1 : 判断休眠标识是否置位, 是, 将休眠标识复位, MCU被唤醒, 打开蓝牙通道使能, 将蓝牙通道连接标识置位, 将蓝牙连 接中断标识复位, 返回步骤 206; 否, 打开蓝牙通道使能, 将蓝牙通道连接标识置位, 将蓝牙连接中断标识复位, 返回步骤 206; 步骤 C-1 : 关闭蓝牙通道使能, 将蓝牙通道连接标识复位, 将休眠标识置位, MCU休眠, 清除中断标识, 其中, 清除中断标识具体 为, 将蓝牙断开中断标识复位。
步骤 D-1 : 关闭 USB通道使能, 将 USB通道连接标识复位, 打开蓝牙连接中断使能, 清除中断标识, 将休眠标识置位, MCU休眠。 需要说明的是, 在本发明实施方式中, 步骤 206与歩骤 207之间还包括, 检测读卡器与上位机的连接方式;
如果是通过所述蓝牙模块与所述上位机连接, 则所述读卡器将蓝牙通道连接标识置位, 关闭 USB通道使能, 执行步骤 207; 如果是 通过所述 USB端口与上位机连接, 将 USB通道连接标识置位, 关闭蓝牙通道使能, 执行步骤 207。 相应的, 将步骤 208中步骤 A至 D还 可以为步骤 A-2至 D-2 ,
步骤 A-2: 判断休眠标识是否置位, 是, 将休眠标识复位, MCU被唤醒, 打开 USB通道使能, 将 USB通道连接标识置位, 清除中断 标识, 返回步骤 206; 否, 打开 USB通道使能, 将 USB通道连接标识置位, 清除中断标识, 返回步骤 206; 其中, 清除中断标识具体为, 将插 USB中断标识复位。
步骤 B-2: 判断休眠标识是否置位, 是, 将休眠标识复位, MCU被唤醒, 打开蓝牙通道使能, 将蓝牙通道连接标识置位, 关闭插 USB 中断使能, 清除中断标识, 返回步骤 206; 否, 判断 USB通道连接标识是否置位, 若 USB通道连接标识置位, 则将 USB通道连接标识复 位, 打开蓝牙通道使能, 将蓝牙通道连接标识置位, 关闭插 USB中断使能, 清除中断标识, 返回步骤 206; 若 USB通道连接标识未置位, 则打开蓝牙通道使能, 将蓝牙通道连接标识置位, 关闭插 USB中断使能, 清除中断标识, 返回步骤 206, 其中, 清除中断标识具体为, 将蓝牙连接中断标识复位;
步骤 C-2: 关闭蓝牙通道使能, 将蓝牙通道连接标识复位, 打开插 USB中断使能, 清除中断标识, 将休眠标识置位, MCU休眠, 其 中, 清除中断标识具体为, 将蓝牙断开中断标识复位。
步骤 D-2: 将 USB通道连接标识复位, 将休眠标识置位, 淸除中断标识, MCU休眠, 其中, 清除中断标识具体为, 将拔 USB中断标 识复位。
需要说明的是, 本实施发明方式中, 步骤 208中的歩骤 A至 D还可以为 A-3至 D-3,
步骤 A-3: 判断休眠标识是否置位, 若休眠标识置位, 将休眠标识复位, MCU被唤醒, 打开 USB通道使能, 将 USB通道连接标识置 位, 关闭蓝牙连接中断使能, 清除中断标识, 返回歩骤 206; 若休眠标识未置位, 则打开 USB通道使能, 将 USB通道连接标识置位, 关 闭蓝牙连接中断使能, 清除中断标识, 返回步骤 206, 其中, 清除中断标识具体为, 将插 USB中断标识复位;
步骤 B-3: 判断休眠标识是否置位, 是, 将休眠标识复位, MCU被唤醒, 打开蓝牙通道使能, 将蓝牙通道连接标识置位, 关闭插 USB 中断使能, 淸除中断标识, 返回步骤 206; 否, 则打开蓝牙通道使能, 将蓝牙通道连接标识置位, 关闭插 USB中断使能, 清除中断标识, 返回步骤 206, 其中, 清除中断标识具体为, 将蓝牙连接中断标识复位;
步骤 C-3: 关闭蓝牙通道使能, 将蓝牙通道连接标识复位, 打开插 USB中断使能, 清除中断标识, 将休眠标识置位, MCU休眠, 其 中, 清除中断标识具体为, 将蓝牙断开中断标识复位;
步骤 D-3: 关闭 USB通道使能, 将 USB通道连接标识复位, 打开蓝牙连接中断使能, 清除中断标识, 将休眠标识置位, MCU休眠, 其中, 清除中断标识具体为, 将拔 USB中断标识复位。
以上所述, 仅为本发明的具体实施方式, 但本发明的保护范围并不局限于此, 本领域的技术人员在本发明揭露的技术范围内 , 可轻 易想到变化或替换, 都应涵盖在本发明的保护范围之内。 因此, 本发明的保护范围应所述以权利要求书的保护 范围为准。