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,",")