点击或拖拽改变大小

NetworkDataServerBaseOnDataReceived 事件

接收到数据的时候就触发的事件,示例详细参考API文档信息
An event that is triggered when data is received

命名空间:  HslCommunication.Core.Net
程序集:  HslCommunication (在 HslCommunication.dll 中) 版本:11.8.2.0 (11.8.2.0)
语法
public event NetworkDataServerBaseDataReceivedDelegate OnDataReceived

类型:HslCommunication.Core.NetNetworkDataServerBaseDataReceivedDelegate
备注
事件共有三个参数,sender指服务器本地的对象,例如 ModbusTcpServer 对象,source 指会话对象,网口对象为 AppSession, 串口为SerialPort 对象,需要根据实际判断,data 为收到的原始数据 byte[] 对象
示例
我们以Modbus的Server为例子,其他的虚拟服务器同理,因为都集成自本服务器对象
数据接收触发的示例
private ModbusTcpServer server;
public void Start( )
{
    server = new ModbusTcpServer( );
    server.OnDataReceived += Server_OnDataReceived;
    server.ServerStart( 502 );
}

// sender指服务器本地的对象,例如 <see cref="ModBus.ModbusTcpServer"/> 对象,source 指会话对象,网口对象为 <see cref="AppSession"/>,
// 串口为<see cref="System.IO.Ports.SerialPort"/> 对象,需要根据实际判断,data 为收到的原始数据 byte[] 对象
private void Server_OnDataReceived( object sender, object source, byte[] data )
{
    // 我们可以捕获到接收到的客户端的modbus报文
    // 如果是TCP接收的
    if (source is HslCommunication.Core.Net.AppSession session)
    {
        // 获取当前客户的IP地址
        string ip = session.IpAddress;
    }

    // 如果是串口接收的
    if (source is System.IO.Ports.SerialPort serialPort)
    {
        // 获取当前的串口的名称
        string portName = serialPort.PortName;
    }
}
参见