1 changed files with 0 additions and 159 deletions
@ -1,159 +0,0 @@ |
|||
--分窗标志定义 |
|||
WIN_0 = 0x0001 |
|||
WIN_1 = 0x0002 |
|||
WIN_2 = 0x0004 |
|||
WIN_3 = 0x0008 |
|||
WIN_4 = 0x0010 |
|||
WIN_5 = 0x0020 |
|||
WIN_6 = 0x0040 |
|||
WIN_7 = 0x0080 |
|||
WIN_8 = 0x0100 |
|||
WIN_9 = 0x0200 |
|||
WIN_10 = 0x0400 |
|||
WIN_11 = 0x0800 |
|||
WIN_12 = 0x1000 |
|||
WIN_13 = 0x2000 |
|||
WIN_14 = 0x4000 |
|||
WIN_15 = 0x8000 |
|||
|
|||
|
|||
--GV索引字符串 |
|||
local GVstr = { |
|||
"State_Index_U", |
|||
"State_Index_U_Elapse", |
|||
"State_Index_N", |
|||
"State_Index_N_Elapse", |
|||
"NC_ARRAY_u8_0", |
|||
"NC_ARRAY_u8_01", |
|||
"NC_ARRAY_u8_1", |
|||
"NC_ARRAY_u8_11", |
|||
"NC_ARRAY_u8_2", |
|||
"MK32_Key.RxIndex", |
|||
"MK32_Key.CH0_RY_H", |
|||
"MK32_Key.CH1_RY_V", |
|||
"MK32_Key.CH2_LY_V", |
|||
"MK32_Key.CH3_LY_H", |
|||
"MK32_Key.CH4_SA", |
|||
"MK32_Key.CH5_SB", |
|||
"MK32_Key.CH6_SC", |
|||
"MK32_Key.CH7_SD", |
|||
"MK32_Key.CH8_SE", |
|||
"MK32_Key.CH9_SF", |
|||
"MK32_Key.CH10_LD1", |
|||
"MK32_Key.CH11_RD1", |
|||
"MK32_Key.CH12_S1", |
|||
"MK32_Key.CH13_S2", |
|||
"MK32_Key.CH14_LT", |
|||
"MK32_Key.CH15_RT", |
|||
"MK32_Key.IsOnline", |
|||
"Motor_P[0]MotorID", |
|||
"Motor_P[0]RxIndex", |
|||
"Motor_P[0]Run_Mode", |
|||
"Motor_P[0]Current", |
|||
"Motor_P[0]Target_Current", |
|||
"Motor_P[0]Velcity", |
|||
"Motor_P[0]Target_Velcity", |
|||
"Motor_P[0]Position", |
|||
"Motor_P[0]Target_Position", |
|||
"Motor_P[0]ERROR_Flag", |
|||
"Motor_P[0]Temperature_Motor", |
|||
"Motor_P[0]Temperature_PCB", |
|||
"Motor_P[1]MotorID", |
|||
"Motor_P[1]RxIndex", |
|||
"Motor_P[1]Run_Mode", |
|||
"Motor_P[1]Current", |
|||
"Motor_P[1]Target_Current", |
|||
"Motor_P[1]Velcity", |
|||
"Motor_P[1]Target_Velcity", |
|||
"Motor_P[1]Position", |
|||
"Motor_P[1]Target_Position", |
|||
"Motor_P[1]ERROR_Flag", |
|||
"Motor_P[1]Temperature_Motor", |
|||
"Motor_P[1]Temperature_PCB", |
|||
"Motor_P[2]MotorID", |
|||
"Motor_P[2]RxIndex", |
|||
"Motor_P[2]Run_Mode", |
|||
"Motor_P[2]Current", |
|||
"Motor_P[2]Target_Current", |
|||
"Motor_P[2]Velcity", |
|||
"Motor_P[2]Target_Velcity", |
|||
"Motor_P[2]Position", |
|||
"Motor_P[2]Target_Position", |
|||
"Motor_P[2]ERROR_Flag", |
|||
"Motor_P[2]Temperature_Motor", |
|||
"Motor_P[2]Temperature_PCB" |
|||
} |
|||
|
|||
--CAN 解码函数,返回的字符串将展示到数据窗口 |
|||
--id 帧ID |
|||
--std_ext 0表示标准帧, 1表示扩展帧 |
|||
--data_remote 0表示数据帧, 1表示远程帧 |
|||
--datalen 数据长度,字节 |
|||
--data_bin 二进制数据 |
|||
--函数返回: ret1解码字符串 , ret2分窗控制字, 波形数据字符串 |
|||
function can_decoder(id, std_ext, data_remote, datalen, data_bin) |
|||
local ret1 = "" --返回值1 解码显示结果 |
|||
local ret2 = 0 --返回值2 分窗标志 |
|||
local bin = {} |
|||
local i |
|||
local str_wave = "" |
|||
|
|||
local _index = 0 |
|||
local _value = 0 |
|||
--local a_string = string.pack(">i2", your_integer) |
|||
--local an_integer = string.unpack(">i2", a_string, start) 将二进制字符串转换为数字类型,从第start个字符开始,<小端 >大端,类型i2,长度2 |
|||
|
|||
--#将字符串转换到整数数组存放 |
|||
for i = 1,#data_bin,1 do |
|||
bin[i] = tonumber(string.byte(data_bin, i,i)) |
|||
end |
|||
|
|||
--计算解码结果,将显示在数据包后面 |
|||
if (id == 0x120) then |
|||
_index = string.unpack("<i2", data_bin, 1) |
|||
_value = string.unpack("<i4", data_bin, 3) |
|||
ret1 = string.format("设置CV:Index %d = %d", _index, _value) |
|||
elseif (id == 0x121) then |
|||
_index = string.unpack("<i2", data_bin, 1) |
|||
ret1 = string.format("请求CV:Index %d", _index, _value) |
|||
elseif (id == 0x122) then |
|||
_index = string.unpack("<i2", data_bin, 1) |
|||
_value = string.unpack("<i4", data_bin, 3) |
|||
ret1 = string.format("读取CV:Index %d = %d", _index, _value) |
|||
elseif (id == 0x1FF) then |
|||
if(datalen == 1) then |
|||
ret1 = string.format("## Boot程序启动") |
|||
elseif (datalen == 3) then |
|||
ret1 = string.format("## Boot启动APP") |
|||
elseif (datalen == 2) then |
|||
ret1 = string.format("## 进入刷写模式") |
|||
elseif (datalen == 4) then |
|||
ret1 = string.format("## 刷写错误") |
|||
elseif (datalen == 5) then |
|||
ret1 = string.format("## APP程序启动") |
|||
end |
|||
elseif (id == 0x110) then |
|||
if(data_bin[1]==0x55) then |
|||
ret1 = string.format("## 请求重启系统") |
|||
end |
|||
elseif (id == 0x130) then |
|||
_index = string.unpack("<i2", data_bin, 1) |
|||
_value = string.unpack("<i2", data_bin, 3) |
|||
ret1 = string.format("请求GV.%d,%s, Length = %d", _index, GVstr[_index+1],_value) |
|||
elseif (id == 0x132) then |
|||
_index = string.unpack("<i2", data_bin, 1) |
|||
_value = string.unpack("<i4", data_bin, 3) |
|||
ret1 = string.format("______读取GV.%d,%s = %d", _index, GVstr[_index+1],_value) |
|||
end |
|||
|
|||
--计算分窗标志, 决定数据包同步显示到哪些子窗口 |
|||
if (id == 0x120 or id == 0x121 or id == 0x122) then |
|||
ret2 = ret2 | WIN_0 |
|||
elseif (id == 0x1FF or id == 0x110) then |
|||
ret2 = ret2 | WIN_1 |
|||
elseif (id == 0x130 or id == 0x132) then |
|||
ret2 = ret2 | WIN_2 |
|||
end |
|||
|
|||
return ret1, ret2, str_wave |
|||
end |
|||
Loading…
Reference in new issue