|
|
@@ -79,6 +79,7 @@ function gpio4IntFnc(msg)
|
|
|
--上升沿中断
|
|
|
if msg==cpu.INT_GPIO_POSEDGE then
|
|
|
sys.publish("LORA_CALL_BACK")
|
|
|
+ -- log.info("我是中断")
|
|
|
--下降沿中断
|
|
|
else
|
|
|
end
|
|
|
@@ -120,7 +121,7 @@ end
|
|
|
|
|
|
function SX126xWakeup()
|
|
|
local command = sx126x_reg.RadioCommands.RADIO_GET_STATUS .. "00"
|
|
|
- local ret = Drv_spi.drv_spi_read_write_byte(command)
|
|
|
+ local ret = Drv_spi.drv_spi_read_write_byte(command,1)
|
|
|
log.info("SX126xWakeup",ret)
|
|
|
end
|
|
|
|
|
|
@@ -523,50 +524,60 @@ end
|
|
|
|
|
|
-- end
|
|
|
|
|
|
+-- 十六进制字符串转原始字符串的函数
|
|
|
+local function hex_to_string(hex_str)
|
|
|
+ local str = ""
|
|
|
+ -- 每两个字符一组处理
|
|
|
+ for i = 1, #hex_str, 2 do
|
|
|
+ -- 截取两位十六进制字符
|
|
|
+ local hex_byte = hex_str:sub(i, i+1)
|
|
|
+ -- 转换为数值(十六进制),再转换为字符
|
|
|
+ local char = string.char(tonumber(hex_byte, 16))
|
|
|
+ str = str .. char
|
|
|
+ end
|
|
|
+ return str
|
|
|
+end
|
|
|
+
|
|
|
+
|
|
|
function SX126xReadBuffer(offset,size)
|
|
|
local command = sx126x_reg.RadioCommands.RADIO_READ_BUFFER .. offset .. "00"
|
|
|
- -- Drv_spi.drv_spi_read_write_byte(sx126x_reg.RadioCommands.RADIO_READ_BUFFER)
|
|
|
|
|
|
for i = 1, size do
|
|
|
command = command .. "00"
|
|
|
end
|
|
|
- -- log.info("offset",offset)
|
|
|
- -- log.info("SX126xReadBuffer",ret)
|
|
|
- -- log.info("SX126xReadBuffer",command)
|
|
|
- local ret = Drv_spi.drv_spi_read_write_byte(command,8)
|
|
|
+ local ret = Drv_spi.drv_spi_read_write_byte(command,size)
|
|
|
log.info("SX126xReadBuffer",ret)
|
|
|
+ -- 测试示例
|
|
|
+ -- local hex_str = "617368696E696E67" -- "ashining"的十六进制表示
|
|
|
+ local original_str = hex_to_string(ret)
|
|
|
+
|
|
|
+ -- print("转换后的字符串: " .. original_str) -- 输出: ashining
|
|
|
+ log.info("原始字符串: " .. original_str)
|
|
|
end
|
|
|
|
|
|
|
|
|
sys.subscribe("LORA_CALL_BACK", function()
|
|
|
+ -- log.info("我是携程")
|
|
|
RadioClearIrqStatus()
|
|
|
- RadioRx()
|
|
|
log.info("清除中断")
|
|
|
+ SX126xSetStandby(sx126x_reg.RadioStandbyModes_t.STDBY_RC)
|
|
|
+ RadioRx()
|
|
|
local ret = SX126xReadCommand( sx126x_reg.RadioCommands.RADIO_GET_RXBUFFERSTATUS, 3 )
|
|
|
log.info("LORA_CALL_BACK",ret)
|
|
|
-- 从第1个字符截取到第2个字符,得到"A4"
|
|
|
- local rxStartBufferPointer = ret:sub(1, 2)
|
|
|
+ -- local rxStartBufferPointer = ret:sub(1, 2)
|
|
|
|
|
|
-- 从第3个字符截取到第4个字符,得到"08"
|
|
|
local payloadLength = ret:sub(3, 4)
|
|
|
|
|
|
local num1 = tonumber(payloadLength, 16) -- 第二个参数 16 表示按十六进制解析
|
|
|
- local nmu2 = tonumber("FF", 16)
|
|
|
-
|
|
|
- -- print(string.format("0x%02X", nmu2)) -- 输出 0x08(十六进制格式化显示)
|
|
|
-
|
|
|
- if num1 >= nmu2 then
|
|
|
- -- print(string.format("0x%02X", nmu1)) -- 输出 0x08(十六进制格式化显示)
|
|
|
- return 1
|
|
|
- end
|
|
|
-
|
|
|
- log.info("payloadLength: "..payloadLength)
|
|
|
- log.info("payloadLength: "..rxStartBufferPointer)
|
|
|
- SX126xReadBuffer("00",8)
|
|
|
+ -- local nmu2 = tonumber("FF", 16)
|
|
|
|
|
|
- -- print(part1) -- 输出 "A4"
|
|
|
- -- print(part2) -- 输出 "08"
|
|
|
- -- SX126xReadRegister("0702")
|
|
|
+ -- if num1 >= nmu2 then
|
|
|
+ -- return 1
|
|
|
+ -- end
|
|
|
+ -- log.info("payloadLength",num1)
|
|
|
+ SX126xReadBuffer("00",num1)
|
|
|
end)
|
|
|
|
|
|
-- sys.taskInit(function ()
|