完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我在为朋友的俱乐部编写 POS 系统时遇到了问题。
我用 Wemos D1 Mini 构建了 3 个 RFID 扫描器,每个扫描器都带有一个 RC522 读取器模块。他们读取卡的 NUID,将其转换为字符串并通过串行发送。这 3 台扫描仪连接到一台旧的 Windows XP 计算机。驱动程序已安装,我可以成功监控正在发送的串行数据。但是,只有在重置之后。 如果我连接 1 个扫描仪然后运行我的 (AutoIt) 脚本来获取数据,它会给我一个连接错误。(无法连接到端口 COM(X) 上的设备。当我按下 wemos d1 mini 上的重置按钮时,它就可以工作了。我不知道该怎么做这很烦人 这是扫描仪设备的代码,它在所有 3 个 wemos d1 minis 上都是相同的,除了设置循环中的 Serial.println(\"B\") 在第一个扫描仪上打印 A,在第二个扫描仪上打印 B,依此类推,以识别我的脚本中的扫描仪。D1 只是一个用于识别设备正在运行的 LED。 代码:全选#include #include #define SS_PIN D8 #define RST_PIN D3 MFRC522 rfid(SS_PIN, RST_PIN); MFRC522::MIFARE_Key key; void setup() { pinMode(D1, OUTPUT); digitalWrite(D1, LOW); Serial.begin(9600); SPI.begin(); rfid.PCD_Init(); rfid.PCD_SetAntennaGain(rfid.RxGain_max); Serial.println(\"B\"); digitalWrite(D1, HIGH); } void loop() { if ( ! rfid.PICC_IsNewCardPresent()) return; if ( ! rfid.PICC_ReadCardSerial()) return; char str[32] = \"\"; array_to_string(rfid.uid.uidByte, 4, str); Serial.println(str); rfid.PICC_HaltA(); rfid.PCD_StopCrypto1(); } void array_to_string(byte array[], unsigned int len, char buffer[]) { for (unsigned int i = 0; i < len; i++) { byte nib1 = (array >> 4) & 0x0F; byte nib2 = (array >> 0) & 0x0F; buffer[i*2+0] = nib1 < 0xA ? \'0\' + nib1 : \'A\' + nib1 - 0xA; buffer[i*2+1] = nib2 < 0xA ? \'0\' + nib2 : \'A\' + nib2 - 0xA; } buffer[len*2] = \'\\0\'; } |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
733 浏览 1 评论
552浏览 6评论
461浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
445浏览 5评论
446浏览 4评论
417浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 16:13 , Processed in 0.768575 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号