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])