|
@@ -539,49 +539,72 @@ local function hex_to_string(hex_str)
|
|
|
end
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
-function SX126xReadBuffer(offset,size)
|
|
|
|
|
- local command = sx126x_reg.RadioCommands.RADIO_READ_BUFFER .. offset .. "00"
|
|
|
|
|
|
|
+-- function SX126xReadBuffer(offset,size)
|
|
|
|
|
+-- local command = sx126x_reg.RadioCommands.RADIO_READ_BUFFER .. offset .. "00"
|
|
|
|
|
|
|
|
- for i = 1, size do
|
|
|
|
|
- command = command .. "00"
|
|
|
|
|
- end
|
|
|
|
|
- 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)
|
|
|
|
|
|
|
+-- for i = 1, size do
|
|
|
|
|
+-- command = command .. "00"
|
|
|
|
|
+-- end
|
|
|
|
|
+-- 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)
|
|
|
|
|
|
|
+-- -- print("转换后的字符串: " .. original_str) -- 输出: ashining
|
|
|
|
|
+-- log.info("原始字符串: " .. original_str)
|
|
|
|
|
+-- return original_str
|
|
|
|
|
+-- end
|
|
|
|
|
+local CHUNK_SIZE = 12
|
|
|
|
|
+
|
|
|
|
|
+function SX126xReadBuffer(offset, size)
|
|
|
|
|
+ local all_data = ""
|
|
|
|
|
+
|
|
|
|
|
+ local remain = size
|
|
|
|
|
+ local cur_offset = offset
|
|
|
|
|
+
|
|
|
|
|
+ while remain > 0 do
|
|
|
|
|
+ local this_size = math.min(remain, CHUNK_SIZE)
|
|
|
|
|
+
|
|
|
|
|
+ -- offset 转成 2位 hex
|
|
|
|
|
+ local offset_hex = string.format("%02X", cur_offset)
|
|
|
|
|
+ local command = sx126x_reg.RadioCommands.RADIO_READ_BUFFER .. offset_hex .. "00"
|
|
|
|
|
+
|
|
|
|
|
+ for i = 1, this_size do
|
|
|
|
|
+ command = command .. "00"
|
|
|
|
|
+ end
|
|
|
|
|
+
|
|
|
|
|
+ local ret = Drv_spi.drv_spi_read_write_byte(command, this_size)
|
|
|
|
|
+ all_data = all_data .. ret
|
|
|
|
|
+
|
|
|
|
|
+ cur_offset = cur_offset + this_size
|
|
|
|
|
+ remain = remain - this_size
|
|
|
|
|
+ end
|
|
|
|
|
+
|
|
|
|
|
+ return all_data
|
|
|
end
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
sys.subscribe("LORA_CALL_BACK", function()
|
|
sys.subscribe("LORA_CALL_BACK", function()
|
|
|
- -- log.info("我是携程")
|
|
|
|
|
RadioClearIrqStatus()
|
|
RadioClearIrqStatus()
|
|
|
log.info("清除中断")
|
|
log.info("清除中断")
|
|
|
SX126xSetStandby(sx126x_reg.RadioStandbyModes_t.STDBY_RC)
|
|
SX126xSetStandby(sx126x_reg.RadioStandbyModes_t.STDBY_RC)
|
|
|
RadioRx()
|
|
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)
|
|
|
|
|
|
|
|
|
|
- -- 从第3个字符截取到第4个字符,得到"08"
|
|
|
|
|
- local payloadLength = ret:sub(3, 4)
|
|
|
|
|
|
|
+ local ret = SX126xReadCommand(sx126x_reg.RadioCommands.RADIO_GET_RXBUFFERSTATUS, 3)
|
|
|
|
|
+ log.info("LORA_CALL_BACK", ret)
|
|
|
|
|
|
|
|
- local num1 = tonumber(payloadLength, 16) -- 第二个参数 16 表示按十六进制解析
|
|
|
|
|
- -- local nmu2 = tonumber("FF", 16)
|
|
|
|
|
|
|
+ local payloadLength = ret:sub(3, 4)
|
|
|
|
|
+ local num1 = tonumber(payloadLength, 16)
|
|
|
|
|
+ log.info("payloadLength", num1)
|
|
|
|
|
|
|
|
- -- if num1 >= nmu2 then
|
|
|
|
|
- -- return 1
|
|
|
|
|
- -- end
|
|
|
|
|
- log.info("payloadLength",num1)
|
|
|
|
|
- --测试读取数据。
|
|
|
|
|
- SX126xReadBuffer("00",8)
|
|
|
|
|
- SX126xReadBuffer("09",8)
|
|
|
|
|
|
|
+ -- 自动读取完整数据
|
|
|
|
|
+ local data = SX126xReadBuffer(0, num1)
|
|
|
|
|
+ log.info("data HEX", data)
|
|
|
|
|
+ log.info("data ASCII", hex_to_string(data))
|
|
|
end)
|
|
end)
|
|
|
|
|
|
|
|
|
|
+
|
|
|
-- sys.taskInit(function ()
|
|
-- sys.taskInit(function ()
|
|
|
-- sys.wait(5000)
|
|
-- sys.wait(5000)
|
|
|
-- SX126xInit()
|
|
-- SX126xInit()
|