protected override async Task ConnectSlave() { if (config.SlaveConnection.Substring(0, 3) == "COM" || config.SlaveConnection.Substring(0, 8) == "/dev/tty") { try { Console.WriteLine($"Opening...{config.SlaveConnection}"); if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { m_serialPort = WinSerialDevice.CreateDevice(config.SlaveConnection, (int)config.BaudRate, config.Parity, (int)config.DataBits, config.StopBits); } else { m_serialPort = UnixSerialDevice.CreateDevice(config.SlaveConnection, (int)config.BaudRate, config.Parity, (int)config.DataBits, config.StopBits); } m_serialPort.Open(); //m_serialPort.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived); await Task.Delay(0); } catch (Exception e) { Console.WriteLine("Connect Slave failed"); Console.WriteLine(e.Message); m_serialPort = null; } } }
/// <summary> /// Open the initialized serial port /// </summary> private static ISerialDevice OpenSerial(string connection, int baudRate, Parity parity, int dataBits, StopBits stopBits, string direction) { ISerialDevice serialDevice = SerialDeviceFactory.CreateSerialDevice(connection, baudRate, parity, dataBits, stopBits); serialDevice.Open(); Log.Information($"Serial port '{connection}' opened for '{direction}'"); return(serialDevice); }
protected override async Task ConnectSlave() { if (config.SlaveConnection.Substring(0, 3) == "COM" || config.SlaveConnection.Substring(0, 8) == "/dev/tty") { try { Console.WriteLine($"Opening...{config.SlaveConnection}"); m_serialPort = SerialDeviceFactory.CreateSerialDevice(config.SlaveConnection, (int)config.BaudRate.Value, config.Parity.Value, (int)config.DataBits.Value, config.StopBits.Value); m_serialPort.Open(); //m_serialPort.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived); await Task.Delay(2000); //Wait target to be ready to write the modbus package } catch (Exception e) { Console.WriteLine("Connect Slave failed"); Console.WriteLine(e.Message); m_serialPort = null; } } }
/// <summary> /// Opens the serial port and starts the thread that communicates with the serial device. /// </summary> public void Start() { try { if (!serialDevice.IsOpen) { serialDevice.Open(); if (serialDevice.IsOpen) { if (commThread == null) { commThread = new Thread(ThreadCommunication); } commThread.Start(); } } } catch (Exception) { // TODO: Decide how to handle SerialPort errors. //throw; } }