You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
167 lines
5.3 KiB
167 lines
5.3 KiB
import { control, debugControl } from 'apis/system'
|
|
import { FtMessage } from 'libs/message'
|
|
import { socket } from 'libs/socket'
|
|
import { useSystemStore } from 'stores/useSystemStore'
|
|
|
|
export const sendControl = async (params: any, type?: string) => {
|
|
if (!params.cmdId) {
|
|
params.cmdId = Date.now()
|
|
}
|
|
const systemStore = useSystemStore()
|
|
const systemStatus = systemStore.systemStatus
|
|
const sprayingDisableCmd = [
|
|
'slide_tray_in',
|
|
'slide_tray_out',
|
|
'matrix_prefill',
|
|
'nozzle_pipeline_wash',
|
|
'syringe_pipeline_wash',
|
|
'matrix_spray_start',
|
|
'syringe_pipeline_wash_stop',
|
|
'matrix_prefill_stop',
|
|
]
|
|
if (systemStatus.spraying && (type === 'debug' || sprayingDisableCmd.includes(params.cmdCode))) {
|
|
FtMessage.error('设备正在喷涂中,请等待喷涂完成')
|
|
return
|
|
}
|
|
|
|
if (systemStatus.spraying && (type === 'debug' || sprayingDisableCmd.includes(params.cmdCode))) {
|
|
FtMessage.error('设备正在喷涂中,请等待喷涂完成')
|
|
return
|
|
}
|
|
|
|
systemStore.systemList = []
|
|
const cmdName = cmdNameMap[params.cmdCode as keyof typeof cmdNameMap] || params.cmdCode
|
|
|
|
socket.init((data: any) => {
|
|
systemStore.pushSystemList(data)
|
|
}, 'cmd_debug')
|
|
socket.init((data: any) => {
|
|
systemStore.pushSystemList(data)
|
|
}, 'cmd_response')
|
|
await (type === 'debug' ? debugControl(params) : control(params))
|
|
systemStore.updateStreamVisible(true)
|
|
FtMessage.success(`[${cmdName}]已发送`)
|
|
// if (!res.ok) {
|
|
// FtMessage.error(`[${cmdName}]发送失败`)
|
|
// return
|
|
// }
|
|
// FtMessage.success(`[${cmdName}]已发送`)
|
|
// const reader = res.body!.getReader()
|
|
// const decoder = new TextDecoder()
|
|
// systemStore.updateStreamVisible(true)
|
|
// let buffer = ''
|
|
// FtMessage.success(`[${cmdName}]已开始执行`)
|
|
// while (true) {
|
|
// const { done, value } = await reader.read()
|
|
// if (done) {
|
|
// console.log('done')
|
|
// FtMessage.success(`[${cmdName}]执行完毕`)
|
|
// break
|
|
// }
|
|
// const chunk = decoder.decode(value, { stream: true })
|
|
// // console.log(chunk)
|
|
// buffer += chunk
|
|
// const { objects, remaining } = extractJSONObjects(buffer)
|
|
// buffer = remaining
|
|
// objects.forEach((jsonStr) => {
|
|
// try {
|
|
// const json = JSON.parse(jsonStr)
|
|
// systemStore.pushSystemList(json)
|
|
// }
|
|
// catch (e) {
|
|
// console.log(e)
|
|
// }
|
|
// })
|
|
// }
|
|
}
|
|
|
|
export const cmdNameMap = {
|
|
slide_tray_in: '推入托盘',
|
|
slide_tray_out: '推出托盘',
|
|
device_status_get: '获取系统状态',
|
|
dehumidifier_start: '除湿',
|
|
dehumidifier_stop: '停止除湿',
|
|
matrix_prefill: '基质预充',
|
|
matrix_prefill_stop: '停止预充',
|
|
nozzle_pipeline_wash: '清洗喷嘴管路',
|
|
syringe_pipeline_wash: '清洗注射器管路',
|
|
syringe_pipeline_wash_stop: '结束清洗',
|
|
matrix_spray_start: '开始喷涂',
|
|
matrix_spray_stop: '结束喷涂',
|
|
matrix_spray_pause: '暂停喷涂',
|
|
matrix_spray_continue: '继续喷涂',
|
|
motor_x_to_home: 'X轴回原点',
|
|
motor_y_to_home: 'Y轴回原点',
|
|
motor_z_to_home: 'z轴回原点',
|
|
motor_x_stop: 'x轴停止',
|
|
motor_y_stop: 'y轴停止',
|
|
motor_z_stop: 'z轴停止',
|
|
motor_x_to_position: 'X轴移动',
|
|
motor_y_to_position: 'Y轴移动',
|
|
motor_z_to_position: 'Z轴移动',
|
|
syringe_pump_start: '注射泵移动',
|
|
syringe_pump_stop: '注射泵停止移动',
|
|
high_voltage_open: '打开高压',
|
|
high_voltage_close: '关闭高压',
|
|
nozzle_valve_open: '喷嘴阀开启',
|
|
nozzle_valve_close: '喷嘴阀关闭',
|
|
dehumidifier_valve_open: '除湿阀开启',
|
|
dehumidifier_valve_close: '除湿阀关闭',
|
|
wash_valve_open: '清洗阀开启',
|
|
wash_valve_close: '清洗阀关闭',
|
|
three_way_valve_close_all: '三通阀管路关闭',
|
|
three_way_valve_open_syringe_pipeline: '打开喷嘴管路',
|
|
three_way_valve_open_spray_pipeline: '打开注射器管路',
|
|
lighting_panel_open: '打开照明灯',
|
|
lighting_panel_close: '关闭照明灯',
|
|
motor_xyz_origin: '三轴回原点',
|
|
|
|
}
|
|
|
|
// const extractJSONObjects = (data: string) => {
|
|
// const objects = []
|
|
// let startIndex = -1
|
|
// let bracketCount = 0
|
|
// let inString = false
|
|
// let escape = false
|
|
//
|
|
// for (let i = 0; i < data.length; i++) {
|
|
// const char = data[i]
|
|
//
|
|
// if (inString) {
|
|
// if (escape) {
|
|
// escape = false
|
|
// }
|
|
// else if (char === '\\') {
|
|
// escape = true
|
|
// }
|
|
// else if (char === '"') {
|
|
// inString = false
|
|
// }
|
|
// }
|
|
// else {
|
|
// if (char === '"') {
|
|
// inString = true
|
|
// }
|
|
// else if (char === '{') {
|
|
// // 当 bracketCount 为0时,标记一个新的 JSON 对象开始
|
|
// if (bracketCount === 0) {
|
|
// startIndex = i
|
|
// }
|
|
// bracketCount++
|
|
// }
|
|
// else if (char === '}') {
|
|
// bracketCount--
|
|
// // 当 bracketCount 归零时,说明一个 JSON 对象完整
|
|
// if (bracketCount === 0 && startIndex !== -1) {
|
|
// const jsonStr = data.slice(startIndex, i + 1)
|
|
// objects.push(jsonStr)
|
|
// startIndex = -1 // 重置起始位置
|
|
// }
|
|
// }
|
|
// }
|
|
// }
|
|
// // 如果最后 bracketCount 不为0,说明还有未完成的部分
|
|
// const remaining = (bracketCount > 0 && startIndex !== -1) ? data.slice(startIndex) : ''
|
|
// return { objects, remaining }
|
|
// }
|