第一次读取
这一页带你走完一遍:安装库、写一个客户端、连上、读到第一个数值并打印出带单位的工程值。
安装与链接
在仓库根目录构建并安装:
Visual Studio 等多配置生成器必须带 --config Release,-DCMAKE_BUILD_TYPE 不生效。
在你的项目里引用:
dlt698::dlt698 包含托管客户端和服务器,需要构建时启用 DLT698_BUILD_TRANSPORT(默认开启)。只做编解码或内存中的离线验证时,可设置 DLT698_BUILD_TRANSPORT=OFF,仍链接同一个库。安装目标见安装与构建。
先用配套示例验证环境
仓库自带两个可以直接配对运行的程序,先确认库工作正常,再对接真实设备:
dlt698_client 输出:
如果这两个程序能跑通,说明构建、安装和运行链路都正常。注意它们跑在环回地址上,走的是模拟设备,不是真实电表。
写一个最小客户端
不需要写事件循环、不需要创建 Session、不需要手动处理分帧。Client 内部持有工作线程,disconnect() 会发送 RELEASE、等待传输收尾并回收线程。
运行:
这段程序里容易出错的地方
engineering_values 不是可选的装饰。 model::UInt16{5000} 的原始值是 5000,按 200F 的倍率 -2 换算才是 50.00 Hz。不同对象的倍率不同:电压是 -1、电流是 -3、电能是 -2、需量是 -4。写错倍率的读数看起来"差不多",但电量计费会出错。
DAR 必须检查。 设备不支持某个属性时回 DAR=4,Result 依然是成功的。dlt698_client 示例里电网频率那一行如果显示 DAR=4,意思是这个模拟设备没有提供频率,不是程序出错。
SA/CA 不匹配会被静默丢弃。 地址字节、地址长度、逻辑地址或 CA 任一不符,帧在分发前就被拒绝,你会看到超时而不是明确的地址错误。核对两端配置。
单在途事务。 多个线程同时调用 get(),第二个返回 busy。批量读取用 get_list() 而不是并发调用。
读多个数据
单次读取改成列表,一次往返拿多个属性:
细节见一次读取多个数据。
串口连接
串口只需换掉连接那一行,其余代码不变:
字格式、波特率、RS-485 方向切换见串口连接。