EC机器人,可以通过以下指令进行485通讯。其中rs485_recv接收到的数据将整体转为字符串类型,例如机器人收到的是0A0B0C0D01020304,则recv_buff收到的是"0A0B0C0D01020304"的字符串。希望把这8个16进制数(每个是8bit)转为对应10进制数存储到table,可以使用如下Str2arr函数,Str2arr会根据传入字符串长度,自动赋值到对应数组内
ret1 =rs485_open ()
rs485_setopt(9600,8,"N",1)
rs485_send("010660020011F606",1)
sleep(0.01)
ret,recv_buff=rs485_recv(100,1) -- 超时时间100ms,接受数据为16进制形式function Str2arr(str1)
--将形如''0A0B0C0D01020304''共8个16进制数据(每个数据8bit)的字符串形式数据转为对应10进制并存储到out_arr
local str_arr={}
local out_arr={}
for i=1,#str1/2,1 do
str_arr[i] = string.sub(str1,2*i-1,2*i)
out_arr[i] = tonumber(str_arr[i], 16)
end
return out_arr
end
local data1={}
ret1 =rs485_open ()
rs485_setopt(9600,8,"N",1)
rs485_send("010660020011F606",1)
sleep(0.01)
ret,recv_buff=rs485_recv(100,1)
--假设接收到的数据为'0A0B0C0D01020304' ,数据内容16进制数的字符串形式
data1 = Str2arr(recv_buff)
--data1数据为[10,11,12,13,1,2,3,4]
elite_print(data1[2])