樹莓派+rfid模塊+條碼掃描頭實現自助寫碼


首先這個自助寫碼是寫超高頻標簽的,所以rfid模塊是基於超高頻的r2000模塊。樹莓派與rfid模塊采用串口通信,樹莓派接條碼掃描頭采用usb通信,流程就是條碼掃描頭識別到條碼或二維碼之后觸發寫碼動作,實現自助寫碼。

 一、樹莓派接usb條碼掃描頭掃碼識別

可以參考這篇資料:https://blog.csdn.net/afeiqiang/article/details/105033316

 二、樹莓派接rfid模塊進行寫碼 這個需要看rfid模塊引腳圖以及引腳定義,比如:

串口需要接5個引腳,對應關系如下:

1).rfid的5v -> 樹莓派的5v

2).rfid的gnd -> 樹莓派的gnd

3).rfid的tx -> 樹莓派的rx

4).rfid的rx -> 樹莓派的tx

5).rfid的en(enable,使能引腳,開關) -> 樹莓派的無特殊功能的gpio引腳(比如BCM編碼模式下的12號引腳)

接線接好之后就可以在樹莓派中寫串口代碼控制rfid了,這個需要去看對應的rfid模塊的串行接口通訊協議文檔。 比如:

上位機指令數據包格式如上,那么在樹莓派中就可以用串口發命令了。

import serial
ser = serial.Serial('/dev/ttyAMA0',115200,timeout=0.5)
ser.isOpen()
ser.write(bytearray.fromhex('A0030172EA'))
ser.inWaiting()
version = ser.read(7)
ser.close()
print(version)

A0030172EA,其中EA是校驗位,需要根據A0030172通過某種算法計算得到。那么看文檔校驗和算法如下:

C語言:

unsigned char  CheckSum(unsigned char *uBuff, unsigned char uBuffLen)
{
    unsigned char i,uSum=0;
    for(i=0;i<uBuffLen;i++)
    {
        uSum = uSum + uBuff[i];
    }
    uSum = (~uSum) + 1;
    return uSum;
}

翻譯成Python代碼:

def uchar_checksum(data, byteorder='little'):
    length = len(data)
    checksum = 0
    for i in range(0, length):
        checksum += int.from_bytes(data[i:i+1], byteorder, signed=True)
    checksum = ((~checksum) + 1 ) & 0xFF
    return hex(checksum)

 最后附上截圖:

 

 

參考資料:

1.https://www.cnblogs.com/YaoYing/p/12673221.html

2.https://blog.csdn.net/naruhina/article/details/105300566


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM