Electron与Labview通信流程

58 阅读1分钟

需要和Labview服务人员确认:

  1. Labview是否一键提供通信接口?用什么协议?
  2. 是否有接口文档(包括数据格式、端口号、指令规范)?
  3. 实时数据返回是push(主动推)还是polling(定时拉)?
  4. 是否已经部署在本地及其或局域网中?IP/端口是多少?

正确流程图(点击按钮 → 发送指令 → 接收数据 → 页面更新)

[1] 前端页面点击“开始反应”按钮
      ↓
[2] 前端通过 preload.js 向 Electron 主进程发起 ipcRenderer.send('labview-send', msg)
      ↓
[3] Electron 主进程(main.js)监听 ipcMain.on('labview-send') 接收该消息
      ↓
[4] Electron 主进程将该消息通过 TCP socket 发送到 LabVIEW(127.0.0.1:50000)
      ↓
[5] mock-labview-server.js 的命令接收服务监听 50000,接收到指令
      ↓
[6] mock 服务开始向本地 50001 端口的客户端(Electron)每 50ms 推送一次数据
      ↓
[7] Electron 主进程监听 50001(通过 net.createServer),接收到数据后通过 win.webContents.send('labview-data', data)
      ↓
[8] preload.js 监听 ipcRenderer.on('labview-data'),将数据转发给前端页面
      ↓
[9] 前端 Vue 页面监听 `onMounted(() => { ipcRenderer.on(...) })` 接收到数据,更新 ECharts 图表等 UI 展示

正在进一步整理中~