public ModbusAnalysis(ModBusProtocol proctocl) { mRtuFlag = proctocl; }
public override bool InitDrive(IO_SERVER server, IO_COMMUNICATION communication, IO_DEVICE device, IO_PARA para, DEVICE_DRIVER driver) { //必须调用此方法 if (!base.InitDrive(server, communication, device, para, driver)) { return(false); } ///初始化驱动控件 if (IsCreateControl) { if (para != null) { this.ParaCtrl = new ModbusControl(); ParaCtrl.Dock = DockStyle.Fill; ParaCtrl.SetUIParameter(server, device, para); } if (device != null) { this.DeviceCtrl = new ModbusDeviceControl(); DeviceCtrl.Dock = DockStyle.Fill; DeviceCtrl.SetUIParameter(server, device); } } try { //设备参数格式 //Modbus类型:ASCII,字节存储:高位字节在前,起开地址:0,寄存器数量:200 string[] str = device.IO_DEVICE_PARASTRING.Split(new char[2] { ':', ',' }); if (str.Length == 4) { ModBusProtocol mbp = ModBusProtocol.RTU; switch (str[1].Trim().ToUpper()) { case "ASCII": mbp = ModBusProtocol.ASCII; break; case "RTU": mbp = ModBusProtocol.RTU; break; case "SERIAL": //串口模式下的 mbp = ModBusProtocol.Serial; break; } ModbusAnalysis = new ModbusAnalysis(mbp); } else { ModbusAnalysis = new ModbusAnalysis(ModBusProtocol.RTU); } } catch (Exception emx) { this.DeviceException(emx.Message); return(false); } return(true); }