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

2、然后電腦與EC機器人通過網線相連接,設置為同一網段
電腦IPV4設置:

機器人IP設置


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

選擇寫好的lua腳本保存并運行,當后面狀態為綠色時就是腳本已運行

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

機器人做客戶端lua腳本
3.1.1、連接服務器,接收和發送數據
lua腳本示例:
sleep(0.2)
ip="192.168.1.169" --服務器的IP
port=6666 --服務器的端口
mode="D2" --獲取機器人D2變量的值
--連接服務器--
function Connection()
repeat ---repeat循環,until條件滿足跳出循環
conn = connect_tcp_server(ip,port) --連接TCP語句
if conn ~=1 then ---判斷是否連接上去,連接上去返回1,失敗返回-1
elite_print("TCP連接失敗,重連中",conn)---失敗后先斷開連接一次
disconnect_tcp_server(ip,port)
sleep(0.1)
end
until conn==1
elite_print("TCP連接成功")
end
Connection()--連接服務器
---接收數據---
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) --打印出來接收到的內容
sleep (1)
until (ret~=-1)
sleep(0.01)
set_global_variable(mode,0) --復位機器人D2的值為0
end
---發送數據---
if mode1==3 then
ret = client_send_data(ip,"OK",0,port) --發送數據給服務器
if ret ==-1 then
elite_print("發送數據錯誤")
end
sleep(0.02)
set_global_variable(mode,0) --復位機器人D2的值為0
end
end
連接服務器時,當機器人未連接會在日志上一直打印內容

連接上去后也會打印一次

機器人觸發接收數據后,服務器發送數據,會在日志上顯示接收到的數據,之后就可按需求來使用。


機器人觸發發送數據后,會給服務器發送設定的字符串,服務器會顯示接收到的數據

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

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

連接上后,機器人會發送字符串“1”給客戶端,通訊助手上接收到數據
客戶端發送字符串“2”給機器人,機器人接收到數據把數據和接收到的數量打印出來


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

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