TCP/IP 控制外部设备
插件的新建过程请参考 IO 控制案例,新建插件后请遵循
userAPI.lua
,httpAPI.lua
,daemon.lua
,ui/Main.tsx
的顺序去完成插件业务逻辑的开发。
示例流程
control.lua 模块
local control = {}
---@param position string
---@param socket number
function control.moveTo(position, socket)
TCPWrite(socket, "moveTo_absolutePosition"..","..position.."\n")
TCPRead(socket, 3 , 'string')
end
return control
httpAPI.lua 模块
local httpModule = {}
local control = require('control')
local socket = nil
---移动升降柱
httpModule.moveTo = function(params)
if socket then
control.moveTo(params.position, socket)
end
return {
status = true
}
end
---初始化 TCP 连接
httpModule.init = function(params)
local result = CreateTCPConnection(params.ip, params.port, 10000)
if result.socket then
socket = result.socket
end
return {
status = true
}
end
return httpModule
ui/Main.tsx 模块
import { Button } from '@dobot-plus/components'
import { useEffect, useState } from 'react'
import { http, DobotPlusApp } from '@dobot/index'
function App() {
const [position, setPosition] = useState(0)
function handleButton1Click() { http.moveTo({ position: position + 50 }) }
function handleButton2Click() { http.moveTo({ position: position - 50 }) }
useEffect(() => {
http.init({
ip: '192.168.5.1', // 默认ip,实际ip变动时这里需要更新
port: '123' // 这里需要写入实际正确的端口号
})
}, [])
return (
<div className="app">
<DobotPlusApp>
<Button type="primary" onClick={handleButton1Click}>Move up</Button>
<Button type="primary" onClick={handleButton2Click}>Move down</Button>
</DobotPlusApp>
</div>
)
}
export default App
运行调试
调试插件指令可进行以下两种情形的开发工作:
- 仅调试页面
- 连接真机进行调试
dpt dev
在执行上述命令时,命令行会提示开发者是否连接真机进行测试
$ dpt dev
? Debug lua on real device? Yes
? Please check the device IP: 192.168.5.1 (y/n)
开发者需要确定:
- 控制器的真实IP是否正确,默认是
192.168.5.1
- SFTP 服务相关配置是否正确
上述配置的详细信息请查看 dpt.json
配置文件
{
"ip": "192.168.5.1", // 控制器 IP
"pluginPort": 22100
}
构建插件
在完成插件的开发、调试、优化后,可执行最终的构建工作,执行
dpt build
在程序顺利执行完毕后,当前文件夹下会出现 dist
文件夹和 output
文件夹。
dist
文件夹中存放着本次构建后的插件代码,用于开发者检查构建结果output
文件夹存放着压缩后的zip
文件,文件名格式为<插件名>-<版本号>.zip
,该文件为实际在客户端导入使用的的插件。