TCP/IP Control
Please refer to the IO Control Case for the process of creating a plugin. After creating the plugin, please follow the order of
userAPI.lua,httpAPI.lua,daemon.lua, andui/Main.tsxto complete the development of the plugin's business logic.
Example Workflow
control.lua Module
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 Module
local httpModule = {}
local control = require('control')
local socket = nil
---Move the lift column
httpModule.moveTo = function(params)
  if socket then
    control.moveTo(params.position, socket)
  end
  return {
    status = true
  }
end
---Initialize TCP connection
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
.dobot/http/http.ts Module
import { request } from './axios'
export const init = (data: any) => {
  return request({
    url: 'init',
    data
  })
}
export const moveTo = (data: any) => {
  return request({
    url: 'moveTo',
    data
  })
}
ui/Main.tsx Module
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', // Default IP, update here when actual IP changes
      port: '123' // Enter the actual correct port number here
    })
  }, [])
  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
Running and Debugging
The debugging command for the plugin can perform the following two types of development work:
- Debug only the page
 - Connect to a real device for debugging
 
dpt dev
When executing the above command, the command line will prompt developers whether to connect a real device for testing.
$ dpt dev
? Debug lua on real device? Yes
? Please check the device IP: 192.168.5.1 (y/n)
Developers need to confirm:
- Whether the actual IP of the controller is correct; the default is 
192.168.5.1 - Whether the SFTP service-related configuration is correct
 
For detailed information on the above configurations, please refer to the dpt.json configuration file.
{
  "ip": "192.168.5.1", // Controller IP
  "pluginPort": 22100
}
Building the Plugin
After completing the development, debugging, and optimization of the plugin, you can execute the final build work by running:
dpt build
After the program executes successfully, there will be a dist folder and an output folder in the current directory.
- The 
distfolder contains the plugin code after this build, allowing developers to check the build results. - The 
outputfolder contains a compressedzipfile named in the format<plugin_name>-<version_number>.zip, which is the plugin to be imported for actual use on the client.