编写了字符串转16进制表函数
-- 将字符串转换为十六进制表
local function stringToHexTable(str)
local hexTable = {}
local maxLength = 16 -- 最大长度为16个元素
-- 将字符串转换为十六进制
for i = 1, #str do
if i > maxLength then
break
end
local hex = string.format("0x%02X", string.byte(str, i))
table.insert(hexTable, hex)
end
-- 补充缺少的元素
while #hexTable < maxLength do
table.insert(hexTable, "0x00")
end
return hexTable
end
请使用最新版的RC522.lua文件
用最新版文件替换
项目文件
运行结果
完整源码
-- LuaTools需要PROJECT和VERSION这两个信息
PROJECT = "helloworld"
VERSION = "1.0.0"
-- 引入必要的库文件(lua编写), 内部库不需要require
sys = require("sys")
local rc522 = require "rc522"
log.info("main", "hello world")
print(_VERSION)
-- 将字符串转换为十六进制表
local function stringToHexTable(str)
local hexTable = {}
local maxLength = 16 -- 最大长度为16个元素
-- 将字符串转换为十六进制
for i = 1, #str do
if i > maxLength then
break
end
local hex = string.format("0x%02X", string.byte(str, i))
table.insert(hexTable, hex)
end
-- 补充缺少的元素
while #hexTable < maxLength do
table.insert(hexTable, "0x00")
end
return hexTable
end
sys.taskInit(function()
spi_rc522 = spi.setup(2,nil,0,0,8,100000,spi.MSB,1,1)
rc522.init(2,6,7)
wdata=stringToHexTable("helloworld!")--字符串转换成16进制表
rc522.write_datablock(8,wdata)
while 1 do
local status,array_id = rc522.request(rc522.reqall)
if status then
print("\n有卡!\n")
local a,b = rc522.read_datablock(8)
if a then
print(b.."\n")--输出字符串
end
sys.wait(100)
end
end
end)
-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!