/// <summary> /// Выполнить действия при запуске линии связи /// </summary> public override void OnCommLineStart() { // получение режима передачи данных try { transMode = (Modbus.TransModes)Enum.Parse(typeof(Modbus.TransModes), UserParams["TransMode"], true); } catch { transMode = Modbus.TransModes.RTU; } // настройка библиотеки в зависимости от режима передачи данных switch (transMode) { case Modbus.TransModes.RTU: session += SerialSession; sendCmd += SerialSendCmd; request += modbus.RtuRequest; break; case Modbus.TransModes.ASCII: session += SerialSession; sendCmd += SerialSendCmd; request += modbus.AsciiRequest; SerialPort.NewLine = Modbus.CRLF; break; default: // Modbus.TransModes.TCP session += TcpSession; sendCmd += TcpSendCmd; request += modbus.TcpRequest; break; } // настройка объекта, реализующего протокол Modbus modbus.SerialPort = SerialPort; modbus.Timeout = KPReqParams.Timeout; modbus.WriteToLog = WriteToLog; // формирование PDU и ADU if (deviceModel != null) { devAddr = (byte)Address; foreach (Modbus.ElemGroup elemGroup in deviceModel.ElemGroups) { elemGroup.InitReqPDU(); elemGroup.InitReqADU(devAddr, transMode); } } }
/// <summary> /// Выполнить действия при запуске линии связи /// </summary> public override void OnCommLineStart() { // получение режима передачи данных transMode = CustomParams.GetEnumParam <Modbus.TransModes>("TransMode", false, Modbus.TransModes.RTU); // настройка библиотеки в зависимости от режима передачи данных switch (transMode) { case Modbus.TransModes.RTU: request += modbus.RtuRequest; break; case Modbus.TransModes.ASCII: request += modbus.AsciiRequest; break; default: // Modbus.TransModes.TCP request += modbus.TcpRequest; break; } // настройка объекта, реализующего протокол Modbus modbus.Timeout = ReqParams.Timeout; modbus.WriteToLog = WriteToLog; // формирование PDU и ADU if (deviceModel != null) { devAddr = (byte)Address; foreach (Modbus.ElemGroup elemGroup in deviceModel.ElemGroups) { elemGroup.InitReqPDU(); elemGroup.InitReqADU(devAddr, transMode); } } }