public Result WriteSingleRegister(ModBusSingleWriteRequest req) { if (HardwareInterface.PacketsInSendingList > _maxSendCapacity) { return(Result.FullBuffer); } if (Mode == ModBusMode.RTU) { byte[] message = RtuMakeFunction5(req, ModbusFunctions.WriteSingleRegister); return(HardwareInterface.SendOverSerialPort(Port, message)); } return(Result.NotImplemented); }
public ModBus(ModBusMode mode, int port, int baudrate, SerialPortMode serialPortMode) { Mode = mode; Port = port; Baudrate = baudrate; SerialPortMode = serialPortMode; HardwareInterface = new HardwareInterface(port, baudrate, new Commands[] { Commands.SendOverSerialPort, Commands.InitSerialPort }); PendingReadRequestList = new SyncList <ModBusReadRequest>(); _maxSendCapacity = SettingManager.Instance.Settings.MaxSendListCapacity; HardwareInterface.OnReceiceNewPacket += HardwareInterface_OnReceiceNewPacket; }
public Result Connect(string hostSerialPort) { if (string.IsNullOrEmpty(hostSerialPort)) { hostSerialPort = SettingManager.Instance.Settings.ComPort; } Result openingPcSerialPortResult = HardwareInterface.OpenHostSerialPort(hostSerialPort); if (openingPcSerialPortResult.Success == false) { return(openingPcSerialPortResult); } return(HardwareInterface.InitSerialPort(Port, Baudrate, SerialPortMode)); }
public Result ReadInputRegisters(ModBusReadRequest req) { if (HardwareInterface.PacketsInSendingList > _maxSendCapacity) { return(Result.FullBuffer); } if (Mode == ModBusMode.RTU) { AddToReadPending(req); byte[] message = RtuMakeFunction4(req, ModbusFunctions.ReadInputRegisters); return(HardwareInterface.SendOverSerialPort(Port, _seqNum, message)); } return(Result.NotImplemented); }
public GeneralCommands() { HardwareInterface = new HardwareInterface(0, 0, new Commands[] { Commands.GetVersion, Commands.Reset, Commands.Shutdown, Commands.RunBootloader }); HardwareInterface.OnReceiceNewPacket += HardwareInterface_OnReceiceNewPacket; }