异步调用
AsyncClient 直接驱动原生异步会话。连接、读写、记录方法使用 await,结果结构与同步接口一致。请在正在运行的事件循环中创建并使用客户端。
完整 TCP 示例
安装后保存为 async_read.py,运行 python async_read.py,输出 5000。程序使用本机服务器,无需真实设备。
server.set(...) 是本地更新,保持同步调用;start_tcp()、stop() 和客户端 I/O 使用 await。已有同步服务器也可搭配 AsyncClient。完整服务端示例见 async_server.py。
串口与其他操作
下面程序需要真实串口和设备:
完整参数使用 await client.open_serial_configured(path, serial, link, profile);参数与同步串口示例一致。批量 GET、SET/ACTION、记录也只需在相应调用前加 await,结果仍须检查逐项 DAR。查询和结果用法见常用操作。
超时、取消与关闭
下面片段中的 client 已关联:
task 取消抛 asyncio.CancelledError,应让它向上传播。取消在途请求会取消原生会话,需要重新关联;不会自动重试操作,写入/方法的远端执行结果可能未知。不要对同一 AsyncClient 并发发起事务。
优先使用 async with;手动管理时,在事件循环关闭前 await client.aclose()。await client.disconnect() 释放当前关联并保留客户端供重连;close() 强制终止。AsyncServer 用 await server.stop() 或退出 async with 收尾,仍需遵循设备与连接的生命周期约定。
异步 on_event 由所属事件循环分发,客户端回调接收 Completion,服务器回调接收 Event;不要在回调中阻塞事件循环。详细扩展规则见回调与生命周期约定。