如何处理来自RFID读卡器的不稳定数据?

4 投票
1 回答
1038 浏览
提问于 2025-04-16 18:39

我的应用程序需要每两秒连接一次RFID读卡器并接收数据,所以我是在django框架上开发的。以下是views.py中的相关代码:

HOST = '192.168.0.1'
PORT = 50007
soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
soc.settimeout(2)
soc.connect((HOST, PORT))
soc.send('tag.db.scan_tags(100)\r\n')
datum = soc.recv(128)

if datum.find("ok") > -1:
    soc.send('tag.read_id()\r\n')
    data = soc.recv(8192)

当RFID读卡器在其范围内找到任何RFID标签时,应用程序会将接收到的数据显示在模板中,格式为{{ data }}。但是,当没有标签在范围内或者标签无法读取时,{{ data }}这个变量在页面上就什么都不显示了。

我希望我的应用程序能够显示最后一次读取到的数据。如果没有新数据进来,就显示最新的数据。只有在有新数据进来的时候,数据才会更新。这样可以让我的应用程序更加稳定。

请问有什么建议吗?非常感谢。

1 个回答

1

比较简单的方法是使用Django的缓存框架,把数据存储在本地内存、memcached或者数据库等地方。你可以缓存任何接收到的数据,如果没有收到数据,或者数据有问题,就可以使用缓存的数据:

from django.core.cache import cache

# set cached data
cache.set('data', data)
# get cached data
cache.get('data')

你也可以用其他方式存储数据,比如存到一个模型里。你可能需要把读取RFID的部分从视图中分离出来,使用celery(或者其他工具)将其作为一个任务来运行,保存结果,然后在你的视图中只使用最新保存的数据。

撰写回答