EC ロボットは通常、次のコマンドを介して 485 と通信します。rs485_recv の戻り値は文字列型のため、必要に応じて配列に変換する必要があります。
たとえば、ロボットが受信したデータは 0A0B0C0D01020304 で、このrecv_buffのデータ型は文字列です、つまり“0A0B0C0D01020304”。
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 進数形式です。
これらの 8 つの 16 進数 (各データ長は 8 ビット) を対応する 10 進数に変換してテーブルに格納するには、次の Str2arr 関数を使用します。文字列、対応する配列に自動的に割り当てられます。
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])