--- id: 20005 title: Dlt645 --- import useBaseUrl from "@docusaurus/useBaseUrl"; import Tag from "@site/src/components/Tag.js"; import Highlight from '@site/src/components/Highlight.js'; ## 定义 程序集:[ThingsGateway.Foundation.Dlt645](https://www.nuget.org/packages/ThingsGateway.Foundation.Dlt645) ## 一、说明 **ThingsGateway.Foundation.Dlt645**是对于Dlt645-2007协议的封装类库 支持多个通讯链路:Tcp/Udp/SerialPort ## 二、Dlt645-2007主站 1、创建Dlt645Master ``` /// /// 新建链路 /// /// public IChannel GetChannel() { TouchSocketConfig touchSocketConfig = new TouchSocketConfig(); return touchSocketConfig.GetSerialPortWithOption(new("COM1")); //直接获取串口对象 //return touchSocketConfig.GetChannel(ChannelTypeEnum.SerialPortClient, null, null, new("COM1"));//通过链路枚举获取对象 } /// /// 新建协议对象 /// /// /// public IProtocol GetProtocol(IChannel channel) { var client = new Dlt645_2007Master(channel); client.Station = "311111111114";//表号 return client; } ``` 2、读写操作 ``` Dlt645MasterTest dlt645MasterTest = new Dlt645MasterTest(); var channel = dlt645MasterTest.GetChannel(); var protocol = dlt645MasterTest.GetProtocol(channel); var data = await protocol.ReadDoubleAsync("02010100"); //读取A相电压 ``` `02010100`是Dlt645中的地址表示方式,代表A相电压,请查看相关协议文档,可在源码附件中找到文档 - 基本地址 | 地址 | 说明 | | ---------------| --------------------------| | 02010100 | 读取02010100(A相电压) | 参考DLT2007协议文档数据标识,可在插件源码中找到附件 - 站号(可选) 当需要指定站号地址时可使用,举例: | 地址 | 说明 | | ---------------| --------------------------| | s=111111111111;02010100 | 读取02010100 ,设备地址为111111111111 | - Dtu注册(可选) 当需要指定Dtu客户端可使用,举例: | 地址 | 说明 | | ---------------| --------------------------| | id=12;40001 | 读取03功能码 ,设备地址为默认,Dtu注册包为"12",注意是UTF8格式 | 3、其他方法 修改密码 ``` var result = await protocol.WritePasswordAsync(level, oldPassword, newPassword); ``` 更改表号 ``` var result = await protocol.WriteDeviceStationAsync(station); ``` 修改波特率 ``` var result = await protocol.WriteBaudRateAsync(baudRate); ``` 读取表号 ``` var result = await protocol.ReadDeviceStationAsync; ```