Linkit Smart 7688 *1
Breakout for Linkit Smart 7688 *1
Grove NFC *1
首先
將Linkit Smart 7688接上Breakout,並將Grove NFC接到Breakout的UART 1
在openwrt環境下安裝nfcpy
pip install nfcpy
安裝完畢後進入python shell
>>> import nfc
>>> clf = nfc.ContactlessFrontend('ttyS1')
此時應該會出現errno.ENODEV, os.strerror(errno.ENODEV)之類的錯誤,這類的錯誤發生在於改變Grove NFC上的PN532 baudrate時出現問題,這時可以利用
vim /usr/lib/python2.7/site-packages/nfc/clf/pn532.py
進入編輯模式,拿掉下面的程式碼
if sys.platform.startswith("linux"):
stty = 'stty -F %s %%d 2> /dev/null' % transport.port
for baudrate in (921600, 460800, 230400, 115200):
log.debug("trying to set %d baud", baudrate)
if os.system(stty % baudrate) == 0:
os.system(stty % 115200)
break
if baudrate > 115200:
set_baudrate_cmd = bytearray.fromhex("0000ff03fdd410000000")
set_baudrate_rsp = bytearray.fromhex("0000ff02fed5111a00")
set_baudrate_cmd[7] = 5+(230400,460800,921600).index(baudrate)
set_baudrate_cmd[8] = 256 - sum(set_baudrate_cmd[5:8])
transport.write(long_preamble + set_baudrate_cmd)
if not transport.read(timeout=100) == Chipset.ACK:
raise IOError(errno.ENODEV, os.strerror(errno.ENODEV))
if not transport.read(timeout=100) == set_baudrate_rsp:
raise IOError(errno.ENODEV, os.strerror(errno.ENODEV))
transport.write(Chipset.ACK)
transport.open(transport.port, baudrate)
log.debug("changed uart speed to %d baud", baudrate)
time.sleep(0.001)這樣就不會有errno.ENODEV之類的錯誤出現。
沒有留言:
張貼留言