Skip to content

instrument

路径:packages/shared/instrument
包名:@xichen-full-stack/instrument

调用本地 C# device-agent 的 TypeScript HTTP 客户端。
消费方:instrument-devtool(调试)、desktop(产品内仪器页)。

默认地址:http://127.0.0.1:19721DEFAULT_DEVICE_AGENT_URL)。

设备与能力

typescript
import {
  MotionCommand,
  ImagingCommand,
  SampleFlowCommand,
  JobType,
  createDeviceAgentClient,
} from '@xichen-full-stack/instrument'

const client = createDeviceAgentClient()
类型说明
DeviceDescriptordrivercapabilities
MotionCommand / ImagingCommandstage 调试命令常量
SampleFlowCommand阅片机协议命令常量(start-normalreset 等)
JobTyperaster-scan / point-list / custom

调试命令

typescript
// stage
await client.execute('stage-1', { command: MotionCommand.Home })
await client.execute('stage-1', { command: MotionCommand.Move, params: { x: 10, y: 5 } })

// sample-flow(必须发到 sample-flow 设备)
await client.execute('sample-flow-1', { command: SampleFlowCommand.StartNormal })
await client.execute('sample-flow-1', { command: SampleFlowCommand.SendCassette, params: { flag: 1 } })

工作流

typescript
const result = await client.instrumentReset({})
// SampleFlow ↔ Stage 整机复位握手

Job 与 SSE

typescript
const job = await client.createJob({
  deviceId: 'stage-1',
  type: JobType.RasterScan,
  params: { rows: 2, cols: 3, stepX: 1, stepY: 1 },
})

await client.controlJob(job.id, 'Start')

const sub = client.subscribeJobEvents((event) => {
  console.log(event.event, event.progress?.percent)
})

sub.close()

Client API

方法说明
health / listDevices / getStatus健康与设备
connect / disconnect / execute连接与命令
instrumentReset整机复位工作流
createJob / controlJob / …Job
subscribeJobEventsSSE
diagnostics / listSerialPorts / …系统

构建

bash
pnpm --filter @xichen-full-stack/instrument build

开发时 desktop / instrument-devtool 可通过 Vite alias 直接引用源码。

相关文档

Xichen Full Stack 内部文档