Appearance
instrument
路径:packages/shared/instrument
包名:@xichen-full-stack/instrument
调用本地 C# device-agent 的 TypeScript HTTP 客户端。
消费方:instrument-devtool(调试)、desktop(产品内仪器页)。
默认地址:http://127.0.0.1:19721(DEFAULT_DEVICE_AGENT_URL)。
设备与能力
typescript
import {
MotionCommand,
ImagingCommand,
SampleFlowCommand,
JobType,
createDeviceAgentClient,
} from '@xichen-full-stack/instrument'
const client = createDeviceAgentClient()| 类型 | 说明 |
|---|---|
DeviceDescriptor | 含 driver、capabilities |
MotionCommand / ImagingCommand | stage 调试命令常量 |
SampleFlowCommand | 阅片机协议命令常量(start-normal、reset 等) |
JobType | raster-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 |
subscribeJobEvents | SSE |
diagnostics / listSerialPorts / … | 系统 |
构建
bash
pnpm --filter @xichen-full-stack/instrument build开发时 desktop / instrument-devtool 可通过 Vite alias 直接引用源码。