ソースを参照

fix: 增强adxl34x数据接收的健壮性,确保接收到的数据长度正确

zenchrer 3 ヶ月 前
コミット
12102c49ed

+ 4 - 2
module/Air780E/demolib/adxl34x.lua

@@ -135,8 +135,10 @@ log.info("adxl34x_data", "adxl34x_data.x"..(adxl34x_data.x),"adxl34x_data.y"..(a
 function adxl34x.get_data()
     local accel={x=nil,y=nil,z=nil}
     i2c.send(i2cid, ADXL34X_ADDRESS_ADR,ADXL34X_DATAX0)
-    rcvData = i2c.recv(i2cid, ADXL34X_ADDRESS_ADR, 6)
-    accel.x ,accel.y, accel.z = string.unpack("<hhh", rcvData)
+    local rcvData = i2c.recv(i2cid, ADXL34X_ADDRESS_ADR, 6)
+    if rcvData ~= nil and #rcvData == 6 then
+        accel.x, accel.y, accel.z = string.unpack("<hhh", rcvData)
+    end
     return accel
 end
 

+ 4 - 2
module/Air780EHM_Air780EHV_Air780EGH/demolib/adxl34x.lua

@@ -135,8 +135,10 @@ log.info("adxl34x_data", "adxl34x_data.x"..(adxl34x_data.x),"adxl34x_data.y"..(a
 function adxl34x.get_data()
     local accel={x=nil,y=nil,z=nil}
     i2c.send(i2cid, ADXL34X_ADDRESS_ADR,ADXL34X_DATAX0)
-    rcvData = i2c.recv(i2cid, ADXL34X_ADDRESS_ADR, 6)
-    accel.x ,accel.y, accel.z = string.unpack("<hhh", rcvData)
+    local rcvData = i2c.recv(i2cid, ADXL34X_ADDRESS_ADR, 6)
+    if rcvData ~= nil and #rcvData == 6 then
+        accel.x, accel.y, accel.z = string.unpack("<hhh", rcvData)
+    end
     return accel
 end
 

+ 4 - 2
module/Air780EPM/demolib/adxl34x.lua

@@ -135,8 +135,10 @@ log.info("adxl34x_data", "adxl34x_data.x"..(adxl34x_data.x),"adxl34x_data.y"..(a
 function adxl34x.get_data()
     local accel={x=nil,y=nil,z=nil}
     i2c.send(i2cid, ADXL34X_ADDRESS_ADR,ADXL34X_DATAX0)
-    rcvData = i2c.recv(i2cid, ADXL34X_ADDRESS_ADR, 6)
-    accel.x ,accel.y, accel.z = string.unpack("<hhh", rcvData)
+    local rcvData = i2c.recv(i2cid, ADXL34X_ADDRESS_ADR, 6)
+    if rcvData ~= nil and #rcvData == 6 then
+        accel.x, accel.y, accel.z = string.unpack("<hhh", rcvData)
+    end
     return accel
 end
 

+ 4 - 2
module/Air8000/demolib/adxl34x.lua

@@ -135,8 +135,10 @@ log.info("adxl34x_data", "adxl34x_data.x"..(adxl34x_data.x),"adxl34x_data.y"..(a
 function adxl34x.get_data()
     local accel={x=nil,y=nil,z=nil}
     i2c.send(i2cid, ADXL34X_ADDRESS_ADR,ADXL34X_DATAX0)
-    rcvData = i2c.recv(i2cid, ADXL34X_ADDRESS_ADR, 6)
-    accel.x ,accel.y, accel.z = string.unpack("<hhh", rcvData)
+    local rcvData = i2c.recv(i2cid, ADXL34X_ADDRESS_ADR, 6)
+    if rcvData ~= nil and #rcvData == 6 then
+        accel.x, accel.y, accel.z = string.unpack("<hhh", rcvData)
+    end
     return accel
 end
 

+ 4 - 2
module/Air8101/demolib/adxl34x.lua

@@ -135,8 +135,10 @@ log.info("adxl34x_data", "adxl34x_data.x"..(adxl34x_data.x),"adxl34x_data.y"..(a
 function adxl34x.get_data()
     local accel={x=nil,y=nil,z=nil}
     i2c.send(i2cid, ADXL34X_ADDRESS_ADR,ADXL34X_DATAX0)
-    rcvData = i2c.recv(i2cid, ADXL34X_ADDRESS_ADR, 6)
-    accel.x ,accel.y, accel.z = string.unpack("<hhh", rcvData)
+    local rcvData = i2c.recv(i2cid, ADXL34X_ADDRESS_ADR, 6)
+    if rcvData ~= nil and #rcvData == 6 then
+        accel.x, accel.y, accel.z = string.unpack("<hhh", rcvData)
+    end
     return accel
 end