跳到主要内容

通道与传输

通道(IChannel)只处理字节,不解析 Modbus 或自定义帧。协议叠在通道之上,所以同一套设备代码可以在串口、TCP、UDP 和虚拟通道之间切换。

状态​

状态含义
Created已登记,尚未打开
Opening正在打开端口或建立连接
Open可以读写
Faulted打开或写入失败
Closed已关闭

对已经打开的通道再次调用 OpenAsync 没有副作用。对 Closed 或 Faulted 再次 OpenAsync 会先清理残留传输再打开。主动关闭不会自动重连;只有进入 Faulted 时,宿主才会按 ChannelReconnectOptions 退避重试。

事件​

  • StateChanged:状态变化;失败时带有 Error。
  • DataReceived:收到数据的副本,可以安全保存。该事件可能不在 UI 线程上触发。
  • PacketTraced:收发原始报文时触发,包含方向、时间和十六进制显示,适合通信日志与排错。

实现​

类型用途
SerialPortChannel串口
TcpClientChannelTCP 客户端
TcpServerChannelTCP 服务端,回复最近一次发来数据的客户端
UdpClientChannelUDP 客户端
UdpServerChannelUDP 服务端,回复最近一次发来数据报的远端
VirtualChannel内存回显,或挂上 IVirtualResponder 模拟从站

对业务代码来说,它们都是 IChannel。详见 串口、TCP/UDP、虚拟通道 和 通信报文追踪。