pELoad 多处完善:测量改为 FETCh 读缓存(不触发测量、修复真实设备 MEAS 查询超时失败)+ 异步查询不阻塞 100ms 控制循环;CV 优先控制路径与 FUNC:MODE FIX 防护;sqlite 增加 volt_set/cmd_volt 列并支持旧库自动迁移;页面重构为静态骨架(输入框永不重建、聚焦不被打断)+ 指令确认/步骤引导/测量诊断;deploy.sh 服务列表补 pMotor/pELoad,missions/h100.moos 补 pELoad 新配置
This commit is contained in:
@@ -50,12 +50,23 @@ public:
|
||||
bool isConnected() const { return m_connected; }
|
||||
|
||||
// 写命令(无响应期待)。未连接/发送失败按错误计数并丢弃。
|
||||
// 返回 true 仅表示"已入队",不保证写入成功。
|
||||
bool cmd(const std::string& scpi);
|
||||
|
||||
// 写命令并等待确认:阻塞到 IO 线程真正把命令写入 socket(或超时)。
|
||||
// 用于需要明确成功/失败反馈的关键指令(如 SYST:REM / SYST:LOC)。
|
||||
bool cmdConfirmed(const std::string& scpi, int timeoutMs = 300);
|
||||
|
||||
// 同步查询:发送 scpi 并等待一行响应。
|
||||
// timeoutMs 建议不大于控制周期(100ms 循环里建议 <= 80)。
|
||||
bool query(const std::string& scpi, std::string& resp, int timeoutMs = 200);
|
||||
|
||||
// 异步查询:发送 scpi,IO 线程收到响应后调用回调(IO 线程内)。
|
||||
// 不阻塞调用线程——用于测量轮询,避免拖慢 100ms 功率控制循环。
|
||||
// 回调注意:运行在 IO 线程,勿直接调用会阻塞的操作。
|
||||
using QueryCallback = std::function<void(bool ok, const std::string& resp)>;
|
||||
bool queryAsync(const std::string& scpi, QueryCallback cb);
|
||||
|
||||
// 统计
|
||||
unsigned long txCount() const { return m_txCount; }
|
||||
unsigned long txErrorCount() const { return m_txErrorCount; }
|
||||
@@ -74,6 +85,7 @@ private:
|
||||
std::string resp;
|
||||
bool done;
|
||||
bool ok;
|
||||
QueryCallback cb; // 异步查询回调(IO 线程调用)
|
||||
Work() : expectReply(false), done(false), ok(false) {}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user