57 lines
1.8 KiB
Lua
57 lines
1.8 KiB
Lua
function getBattInfo(str)
|
||
local a1,a2,a3,a4,a5,a6,a7,a8,a9,b1,b2,b3,b4,b5,b6,b7,b8= string.unpack(">hhhhhhhhhhhhhhhhh",str)
|
||
local rst = ""
|
||
.."实际电压 "..(a1/100).."V\r\n"
|
||
.."电芯数量 "..a2.."\r\n"
|
||
.."电量 "..a3.."%\r\n"
|
||
.."容量 "..(a4/100).."AH\r\n"
|
||
.."输出电流 "..(a5/100).."A\r\n"
|
||
.."充电电流 "..(a6/100).."A\r\n"
|
||
.."温度1 "..a7.."℃\r\n"
|
||
.."温度2 "..a8.."℃\r\n"
|
||
.."温度3 "..a9.."℃\r\n"
|
||
.."电芯1电压 "..(b1/1000).."V\r\n"
|
||
.."电芯2电压 "..(b2/1000).."V\r\n"
|
||
.."电芯3电压 "..(b3/1000).."V\r\n"
|
||
.."电芯4电压 "..(b4/1000).."V\r\n"
|
||
.."电芯5电压 "..(b5/1000).."V\r\n"
|
||
.."电芯6电压 "..(b6/1000).."V\r\n"
|
||
.."电芯7电压 "..(b7/1000).."V\r\n"
|
||
.."电芯8电压 "..(b8/1000).."V\r\n"
|
||
|
||
apiAddPoint((a1/100),8)
|
||
apiAddPoint(a3,9)
|
||
return rst
|
||
end
|
||
|
||
|
||
function getinfo(data)
|
||
local info = "\r\n长度:["..string.len(data).."]字节\r\n原始数据:\r\n"..data:toHex()
|
||
print(info)
|
||
|
||
--按换行符切开,防止粘包
|
||
local udata = data:split(string.char(0x01)..string.char(0x03)..string.char(0x3a))
|
||
|
||
--每包都处理一遍
|
||
for i=1,#udata do
|
||
if #udata[i]>10 then
|
||
local rst = "\r\n------电池信息------\r\n"..getBattInfo(udata[i]).."\r\n"
|
||
print(rst)
|
||
end
|
||
end
|
||
end
|
||
|
||
--注册串口接收函数
|
||
apiSetCb("uart",getinfo)
|
||
|
||
|
||
--发送数据中间间隔时间(单位ms)
|
||
local sendDelay = 1000*60
|
||
local cmd="01030000001D85C3"
|
||
|
||
sys.taskInit(function ()
|
||
while true do
|
||
log.info("发送指令",apiSendUartData(cmd:fromHex()),cmd)
|
||
sys.wait(sendDelay)
|
||
end
|
||
end) |