编写了字符串转16进制表函数
-- 将字符串转换为十六进制表
local function stringToHexTable(str)local hexTable = {}local maxLength = 16 -- 最大长度为16个元素-- 将字符串转换为十六进制for i = 1, #str doif i > maxLength thenbreakendlocal hex = string.format("0x%02X", string.byte(str, i))table.insert(hexTable, hex)end-- 补充缺少的元素while #hexTable < maxLength dotable.insert(hexTable, "0x00")endreturn 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 doif i > maxLength thenbreakendlocal hex = string.format("0x%02X", string.byte(str, i))table.insert(hexTable, hex)end-- 补充缺少的元素while #hexTable < maxLength dotable.insert(hexTable, "0x00")endreturn hexTable
endsys.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 dolocal status,array_id = rc522.request(rc522.reqall)if status thenprint("\n有卡!\n")local a,b = rc522.read_datablock(8)if a then print(b.."\n")--输出字符串endsys.wait(100)endend
end)-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!