系统还使用了Put_command线程,通过1个I/O端口引脚,向门禁考勤系统串口发送数据。在执行此线程时,根据串口通信协议插入了起始位、停止位以及相应的延时。
从门禁考勤系统接收数据的过程是利用端点1完成的。端点1配置为1个中断输入端点,当有1个起始位到达引脚时,GPIO中断必须打开,并关闭所有其它类型中断。设计中通过使用1个Get_Serial线程来收集I/O引脚发出的串行数据,并把它存入数据缓冲区。同时该线程负责检验接收到的起始位和停止位的正确性。当收到8个字节时,将接收缓冲区中的数据复制到终端1的缓冲区,并且允许微处理器响应中断输入请求。
考虑到一般串行口的有效波特率的范围在300~19200bps,我们按处于最大波特率19200bps的情况来考虑,传输1个字符需要时间接近0.75ms;而1个输入中断大约每10ms送1个8字节的数据包,因此,设计1个128字节的快速数据缓冲区便可以保证不会丢失数据。
RS-232-USB接口转换模块用于改进我们的IC卡门禁考勤系统,使用效果良好。