EC機器人TCPIP通訊(通訊助手)
1. 簡(jiǎn)介
本文簡(jiǎn)單介紹EC機器人通過(guò)Socket通訊與通訊助手連接進(jìn)行測試。
2. 操作流程
1、首先在電腦上準備(SocketTool)通訊助手工具

2、然后電腦與EC機器人通過(guò)網(wǎng)線(xiàn)相連接,設置為同一網(wǎng)段
電腦IPV4設置:

機器人IP設置


3、 機器人運行加載Socket通訊lua腳本

選擇寫(xiě)好的lua腳本保存并運行,當后面狀態(tài)為綠色時(shí)就是腳本已運行

3. 示例
3.1. EC機器人做客戶(hù)端連接服務(wù)器
Socket Tool 工具做服務(wù)器設置,端口為6666

機器人做客戶(hù)端lua腳本
3.1.1、連接服務(wù)器,接收和發(fā)送數據
lua腳本示例:
sleep(0.2)
ip="192.168.1.169" --服務(wù)器的IP
port=6666 --服務(wù)器的端口
mode="D2" --獲取機器人D2變量的值
--連接服務(wù)器--
function Connection()
repeat ---repeat循環(huán),until條件滿(mǎn)足跳出循環(huán)
conn = connect_tcp_server(ip,port) --連接TCP語(yǔ)句
if conn ~=1 then ---判斷是否連接上去,連接上去返回1,失敗返回-1
elite_print("TCP連接失敗,重連中",conn)---失敗后先斷開(kāi)連接一次
disconnect_tcp_server(ip,port)
sleep(0.1)
end
until conn==1
elite_print("TCP連接成功")
end
Connection()--連接服務(wù)器
---接收數據---
while true do
mode1=get_global_variable(mode) ---獲取機器人mode(D2)里面的值
sleep(0.1)
if mode1==2 then
repeat
---接收數據,ret判斷得到的是返回的結果-1還是其他,recv里保存的是獲取的值
ret,recv =client_recv_data(ip,0.1,0,port)
elite_print(recv) --打印出來(lái)接收到的內容
sleep (1)
until (ret~=-1)
sleep(0.01)
set_global_variable(mode,0) --復位機器人D2的值為0
end
---發(fā)送數據---
if mode1==3 then
ret = client_send_data(ip,"OK",0,port) --發(fā)送數據給服務(wù)器
if ret ==-1 then
elite_print("發(fā)送數據錯誤")
end
sleep(0.02)
set_global_variable(mode,0) --復位機器人D2的值為0
end
end
連接服務(wù)器時(shí),當機器人未連接會(huì )在日志上一直打印內容

連接上去后也會(huì )打印一次

機器人觸發(fā)接收數據后,服務(wù)器發(fā)送數據,會(huì )在日志上顯示接收到的數據,之后就可按需求來(lái)使用。


機器人觸發(fā)發(fā)送數據后,會(huì )給服務(wù)器發(fā)送設定的字符串,服務(wù)器會(huì )顯示接收到的數據

3.2. EC機器人做服務(wù)器連接客戶(hù)端
通訊助手做客戶(hù)端設置

機器人做服務(wù)器lua腳本
3.2.1、初始化TCP服務(wù)器,向客戶(hù)端發(fā)送和接收客戶(hù)端的數據
lua腳本示例:
sleep(1) -- 等待1秒
port = 6666 -- 設置服務(wù)器端口
ip ="192.168.1.169" -- 設置客戶(hù)端IP地址
init_tcp_server(port) -- 初始化TCP服務(wù)器
while(1)do -- 無(wú)限循環(huán)
ret=is_client_connected(ip) -- 檢查客戶(hù)端是否連接
if(ret==1)then -- 如果客戶(hù)端已連接
elite_print("客戶(hù)端已連接")
server_send_data(ip,"1") -- 向客戶(hù)端發(fā)送數據"1"
recv="1"
while(recv ~= "2") do
sleep(1) -- 等待1秒
Ret,recv=server_recv_data(ip,0,port,0.5) -- 接收客戶(hù)端數據
elite_print(recv,Ret) -- 打印接收到的數據和狀態(tài)
end
else
elite_print("客戶(hù)端未連接")
end
end
客戶(hù)端未連接和連接上都是在日志上打印信息

連接上后,機器人會(huì )發(fā)送字符串“1”給客戶(hù)端,通訊助手上接收到數據
客戶(hù)端發(fā)送字符串“2”給機器人,機器人接收到數據把數據和接收到的數量打印出來(lái)


3.3.數據處理
在做服務(wù)器與客戶(hù)端時(shí)都會(huì )碰到接收的數據是字符串,在腳本中無(wú)法直接使用,這時(shí)就需用到字符串分割的功能。

字符串分割可以把接收到的字符串根據定義的字符來(lái)分割,返回一個(gè)數組供我們使用。
下面就是一個(gè)示例把接收到的字符串通過(guò)","進(jìn)行分割。
recv1=string.split(recv,",")