Parcourir la source

完成发射。但是数量多了就会发生错误数据

xuxinyi il y a 3 mois
Parent
commit
9a1e024c34
1 fichiers modifiés avec 42 ajouts et 30 suppressions
  1. 42 30
      drv_periph/sx126x_driver.lua

+ 42 - 30
drv_periph/sx126x_driver.lua

@@ -33,6 +33,16 @@ RadioPublicNetwork = RadioPublicNetwork_t
 SX126xResetGPIO = pins.setup(pio.P0_13,0)
 OperatingMode = sx126x_reg.RadioStandbyModes_t.STDBY_RC
 
+
+function stringToHex(str)
+    local hex = {}
+    for i = 1, #str do
+        local byte = string.byte(str, i)
+        hex[#hex + 1] = string.format("%02x", byte)
+    end
+    return table.concat(hex)
+end
+
 function gsonLoginfo(data)
     local jsondata = json.encode(data)
     log.info("SX126xSetModulationParams.encode",jsondata)
@@ -238,8 +248,8 @@ function SX126xSetPacketParams(packetParams)
             packetParams.Params.LoRa.PayloadLength, 
             packetParams.Params.LoRa.CrcMode, 
             packetParams.Params.LoRa.InvertIQ}
-    local jsondata = json.encode(buf)
-    log.info("SX126xSetPacketParams.encode",jsondata)
+    -- local jsondata = json.encode(buf)
+    -- log.info("SX126xSetPacketParams.encode",jsondata)
     SX126xWriteCommand(sx126x_reg.RadioCommands.RADIO_SET_PACKETPARAMS,buf);
 end
 
@@ -338,7 +348,7 @@ function RadioSetChannel(frequency)
 end
 
 function SX126xWriteBuffer(offset, buffer,size) 
-    log.info("SX126xWriteBuffer",offset,buffer,size)
+    -- log.info("SX126xWriteBuffer",offset,buffer,size)
     local sentdata = offset .. buffer
     Drv_spi.drv_spi_read_write_byte(sx126x_reg.RadioCommands.RADIO_WRITE_BUFFER,0)
     Drv_spi.drv_spi_read_write_byte(sentdata,10)
@@ -346,7 +356,7 @@ function SX126xWriteBuffer(offset, buffer,size)
 end
 
 function SX126xSetPayload (payload,size)
-    log.info("SX126xSetPayload",payload,size)
+    -- log.info("SX126xSetPayload",payload,size)
     SX126xWriteBuffer( "00", payload, size );
 end
 
@@ -356,7 +366,7 @@ end
 
 
 function SX126xSendPayload(payload,size,timeout) 
-    log.info("SX126xSendPayload",payload,size,timeout)
+    -- log.info("SX126xSendPayload",payload,size,timeout)
     SX126xSetPayload( payload, size );
     SX126xSetTx( timeout );
 end
@@ -392,40 +402,42 @@ function SX126xInit()
     RadioSetChannel(433000000) 
 end
 
+function sentString(strData)
+    --这里需要判断传入的是否为字符串。
+    local hexStr = stringToHex(strData)
+    RadioSend(hexStr,string.format("%02X", #hexStr/2),"00") 
+        --     local original = "Hello, Lua!\n"
+        -- local hexStr = stringToHex(original)
+        log.info("test:",hexStr)  -- 输出: 48656c6c6f2c204c756121
+        log.info("testlen:",#hexStr)
+        log.info("testlen2:",string.format("%02X", #hexStr/2))
+        -- RadioSend(hexStr,string.format("%02X", #hexStr/2),"00") 
+end
+
+
+
 sys.taskInit(function ()
     sys.wait(5000)
     SX126xInit()
     sys.wait(2000)
     while true do
-        -- log.info("testSpiFlash.readFlashID",spi.send_recv(spi.SPI_1,s):toHex())--收发读写
-
-        --下面方法和上面的等价
-        -- spi.send(spi.SPI_1,string.char(0x1d,0x07,0x40,0x00,0x00,0x00))
-        -- sys.wait(5)
-        -- log.info("testSpiFlash.readFlashID",spi.recv(spi.SPI_1,8):toHex())--收数据
-
-        -- local ret = Drv_spi.drv_spi_read_write_byte("1D",1)
-        -- log.info("testSpiFlash.readFlashID",ret)
-        -- sys.wait(20)
-        -- local ret = Drv_spi.drv_spi_read_write_byte("07400000",1)
-        -- log.info("testSpiFlash.readFlashID",ret)
-
-        -- SX126xWriteCommand("1d",{"0740"})
-        -- SX126xWriteRegister("0740",{string.format("%02X", i),string.format("%02X", i+1)})
-        -- log.info("计算结果0740寄存器", SX126xReadRegister("0740"))
-        -- log.info("计算结果0741寄存器", SX126xReadRegister("0741"))
-        -- SX126xWriteCommand("1d",{"07400000"})
-    
-        -- sys.wait(20)
         log.info("计算结果")
-        -- SX126xSetStandby(sx126x_reg.RadioStandbyModes_t.STDBY_RC)
-        -- SX126xReadCommand(sx126x_reg.RadioCommands.RADIO_GET_STATUS,1)
-        -- sys.wait(20)
-        RadioSend("A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5","1e","00")
+        --[[
+            1.将普通字符串用函数转换成16进制字符串,并获取表长度。例如:"Hello, Lua!" -> "48656c6c6f2c204c756121"
+            2.返回的16进制表,是以两位为一个16进制数据,实际发生长需要减半。例如:"48656c6c6f2c204c756121" -> 0x48 0x65 ... 0x21 
+            3.RadioSend的第二位参数是要发生的数据长度,需要16进制字符串形式,意味着"48656c6c6f2c204c756121"是11位数据
+                但是是需要转成 "08"。
+        ]]
+        sentString("hello,My_name_is_XuXinyi\n")
+        -- local original = "Hello, Lua!\n"
+        -- local hexStr = stringToHex(original)
+        -- log.info("test:",hexStr)  -- 输出: 48656c6c6f2c204c756121
+        -- log.info("testlen:",#hexStr)
+        -- RadioSend(hexStr,string.format("%02X", #hexStr/2),"00") 
         -- sys.wait(20)
         -- SX126xReadCommand(sx126x_reg.RadioCommands.RADIO_GET_STATUS,1)
         -- SX126xWakeup()
-        sys.wait(1000)
+        sys.wait(4000)
     end
     spi.close(spi.SPI_1)
 end)