public void SettingsSafeUpdate() { if (MyPort.IsOpen) { MyPort.Close(); SettingsSynchronization(); MyPort.Open(); } }
public override void Run(CancellationToken token) { //create an UART port using (var uart = new SerialPortEx()) { //open the serial port uart.PortName = HardwareModel.Instance.SerialPort; uart.Open(); var prm = new SerialPortParams( HardwareModel.Instance.SerialSettings, false); //create a wrapper around the uart ICommClient medium = uart .GetClient(prm); //create a client driver var driver = new ModbusClient(new ModbusRtuCodec()); driver.Address = (byte)HardwareModel.Instance.Address; //run actual task base.RunCore( medium, driver, token); } }
private bool Open(string name) { try { serialPort.PortName = name; if (serialPort.IsOpen) { serialPort.Close(); } serialPort.Open(); if (IsOpen) { cBoxSerialPort.IsEnabled = false; SerialToggle.IsChecked = true; OnOpened(); return(true); } } catch (Exception ex) { Console.WriteLine("serial port : {0}", (object)ex); if (IsOpen) { serialPort.Close(); cBoxSerialPort.IsEnabled = true; SerialToggle.IsChecked = new bool?(false); } } return(false); }
public async static void DoTest() { using (var port = new SerialPortEx()) { port.PortName = "COM3"; port.Open(); Console.WriteLine("PortOpen={0}", port.IsOpen); var portSetting = new SerialPortParams( "38400,E,8,1", rtsEnable: false); ICommClient portClient = port.GetClient(portSetting); var clients = Enumerable .Range(0, 10) .Select(_ => new TestModbusRtuClient { Name = "Modbus client #" + _, Address = 0x01, }) .ToList(); CommResponse[] result = await Task.WhenAll( clients .Select(_ => _.ExecuteWriteMulti(portClient)) ); foreach (var r in result) { var owner = (TestModbusRtuClient)r.Data.OwnerProtocol; string hex = null; if (r.Data.IncomingData != null) { hex = ByteArrayHelpers.ToHex(r.Data.IncomingData.ToByteArray()); } Console.WriteLine( "Owner={0}; {1}; {2}", owner.Name, r.Status, hex ); } } }
public override void Run(CancellationToken token) { //create an UART port using (var uart = new SerialPortEx()) { //open the serial port uart.PortName = HardwareModel.Instance.SerialPort; uart.Open(); var prm = new SerialPortParams( HardwareModel.Instance.SerialSettings, false); uart.SetParams(prm); //create a server driver var server = new ModbusServer(new ModbusRtuCodec()); server.Address = (byte)HardwareModel.Instance.Address; while (token.IsCancellationRequested == false) { //wait for an incoming connection var listener = uart.GetServer(server); listener.ServeCommand += new ServeCommandHandler(ListenerServeCommand); listener.Start(); while (listener.IsRunning) { if (token.IsCancellationRequested) { listener.Abort(); } else { Thread.Sleep(1); } } } } }
public bool Open(string portname, string setting) { m_ComPort.Setting = setting; m_ComPort.Open(); return(m_ComPort.IsOpen); }
private static void OnTimerEvent(object sender, ElapsedEventArgs e) { m_StartTimer = true; byte[] by = null; try { for (int i = 0; i < 3; i++) { if (m_StopTimer) { return; } foreach (string portName in SearchSerialPort.SerialPortNames) { if (m_StopTimer) { return; } m_Over = false; if (m_SerialPort == null) { m_SerialPort = SerialPortManager.CreateSerialPort(); m_SerialPort.DataReceived += SerialPortDataReceived; } m_SerialPort.PortName = portName; try { m_SerialPort.BaudRate = WinApi.B19200; m_SerialPort.Open(); if (!SerialPortManager.Device1.SerialPortDevice.IsOpen) { if (m_StopTimer) { return; } try { by = PortAgreement.DistanceDeviceEncryption(DefaultParams.DEVICEDEFAULTCLIENTNUMBER, DefaultParams.DEVICEDEFAULTPASSWORD); m_SerialPort.Write(by); bool ret = WaitResult(SerialPortManager.Device1); if (ret) { continue; } } catch (Exception ex) { Log4Helper.ErrorInfo(ex.Message, ex); #if DEBUG Console.WriteLine(ex.Message); #endif } } m_SerialPort.SetBaudRate(WinApi.B9600); Thread.Sleep(50); if (!SerialPortManager.Device2.SerialPortDevice.IsOpen) { int address = 1; try { for (int number = 1; number <= 50; number++) { address = number; if (m_StopTimer) { return; } by = PortAgreement.CorridorReadCardData(number); m_SerialPort.Write(by); Thread.Sleep(50); if (m_Over) { ReplaceSerialPort(SerialPortManager.Device2); break; } } if (m_Over) { continue; } bool ret = WaitResult(SerialPortManager.Device2); if (ret) { continue; } } catch (Exception ex) { Log4Helper.ErrorInfo(ex.Message, ex); #if DEBUG Console.WriteLine(ex.Message); #endif } finally { SerialPortManager.Device2Address = address; } } m_SerialPort.Close(); } catch { continue; } } } } catch (Exception ex) { Log4Helper.ErrorInfo(ex.Message, ex); #if DEBUG Console.WriteLine(ex.Message); #endif } finally { by = null; m_Validation.Dispose(); if (m_SerialPort != null && m_SerialPort.IsOpen) { m_SerialPort.Close(); } m_SerialPort = null; if (!m_StopTimer && (!SerialPortManager.Device1.SerialPortDevice.IsOpen && !SerialPortManager.Device2.SerialPortDevice.IsOpen)) { ViewCallFunction.ViewConnectionFailedMessage(); } m_StartTimer = false; } }
public static void OpenSerialPort(SerialPortEx port, string portName) { port.PortName = portName; port.Open(); }
public static void Main() { //setup the board IP NetworkInterface.GetAllNetworkInterfaces()[0] .EnableStaticIP("192.168.0.99", "255.255.255.0", "192.168.0.1"); string localip = NetworkInterface.GetAllNetworkInterfaces()[0] .IPAddress; Debug.Print("The local IP address of your Netduino Plus is " + localip); //define coils, inputs, and analogs _inputs = new InputPort[8]; #if SLAVE_RTU _inputs[0] = new InputPort(Pins.GPIO_PIN_D0, true, Port.ResistorMode.PullUp); _inputs[1] = new InputPort(Pins.GPIO_PIN_D1, true, Port.ResistorMode.PullUp); _inputs[2] = null; _inputs[3] = null; _inputs[4] = new InputPort(Pins.GPIO_PIN_D4, true, Port.ResistorMode.PullUp); _inputs[5] = new InputPort(Pins.GPIO_PIN_D5, true, Port.ResistorMode.PullUp); _inputs[6] = new InputPort(Pins.GPIO_PIN_D6, true, Port.ResistorMode.PullUp); _inputs[7] = new InputPort(Pins.GPIO_PIN_D7, true, Port.ResistorMode.PullUp); #else _inputs[0] = new InputPort(Pins.GPIO_PIN_D0, true, Port.ResistorMode.PullUp); _inputs[1] = new InputPort(Pins.GPIO_PIN_D1, true, Port.ResistorMode.PullUp); _inputs[2] = new InputPort(Pins.GPIO_PIN_D2, true, Port.ResistorMode.PullUp); _inputs[3] = new InputPort(Pins.GPIO_PIN_D3, true, Port.ResistorMode.PullUp); _inputs[4] = new InputPort(Pins.GPIO_PIN_D4, true, Port.ResistorMode.PullUp); _inputs[5] = new InputPort(Pins.GPIO_PIN_D5, true, Port.ResistorMode.PullUp); _inputs[6] = new InputPort(Pins.GPIO_PIN_D6, true, Port.ResistorMode.PullUp); _inputs[7] = new InputPort(Pins.GPIO_PIN_D7, true, Port.ResistorMode.PullUp); #endif _coils = new OutputPort[6]; _coils[0] = new OutputPort(Pins.GPIO_PIN_D8, false); _coils[1] = new OutputPort(Pins.GPIO_PIN_D9, false); _coils[2] = new OutputPort(Pins.GPIO_PIN_D10, false); _coils[3] = new OutputPort(Pins.GPIO_PIN_D11, false); _coils[4] = new OutputPort(Pins.GPIO_PIN_D12, false); _coils[5] = new OutputPort(Pins.GPIO_PIN_D13, false); #if MF_FRAMEWORK_VERSION_V4_1 _analogs = new AnalogInput[6]; _analogs[0] = new AnalogInput(Pins.GPIO_PIN_A0); _analogs[1] = new AnalogInput(Pins.GPIO_PIN_A1); _analogs[2] = new AnalogInput(Pins.GPIO_PIN_A2); _analogs[3] = new AnalogInput(Pins.GPIO_PIN_A3); _analogs[4] = new AnalogInput(Pins.GPIO_PIN_A4); _analogs[5] = new AnalogInput(Pins.GPIO_PIN_A5); #elif MF_FRAMEWORK_VERSION_V4_2 _analogs = new AnalogInput[6]; _analogs[0] = new AnalogInput(Cpu.AnalogChannel.ANALOG_0); _analogs[1] = new AnalogInput(Cpu.AnalogChannel.ANALOG_1); _analogs[2] = new AnalogInput(Cpu.AnalogChannel.ANALOG_2); _analogs[3] = new AnalogInput(Cpu.AnalogChannel.ANALOG_3); _analogs[4] = new AnalogInput(Cpu.AnalogChannel.ANALOG_4); _analogs[5] = new AnalogInput(Cpu.AnalogChannel.ANALOG_5); #endif #if MASTER_TCP //create a TCP socket using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) { //refine the socket settings socket.SetSocketOption( SocketOptionLevel.Tcp, SocketOptionName.NoDelay, true ); socket.SendTimeout = 2000; socket.ReceiveTimeout = 2000; //try the connection against the remote device var remoteip = new byte[4] { 192, 168, 0, 100 }; var ipaddr = new IPAddress(remoteip); var ept = new IPEndPoint(ipaddr, 502); socket.Connect(ept); //create a wrapper around the socket ICommClient portClient = socket.GetClient(); //create a client driver var driver = new ModbusClient(new ModbusTcpCodec()); driver.Address = DeviceAddress; while (true) { //compose the Modbus command to be submitted var command = new ModbusCommand(ModbusCommand.FuncReadInputDiscretes); command.Offset = 0; command.Count = 6; //execute the command synchronously CommResponse result = driver .ExecuteGeneric(portClient, command); if (result.Status == CommResponse.Ack) { //command successfully for (int i = 0; i < command.Count; i++) { _coils[i + command.Offset].Write(command.Data[i] != 0); } } else { //some error Debug.Print("Error=" + command.ExceptionCode); } //just a small delay Thread.Sleep(100); } } #endif #if MASTER_UDP //create a UDP socket using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)) { //try the connection against the remote device var remoteip = new byte[4] { 192, 168, 0, 60 }; var ipaddr = new IPAddress(remoteip); var ept = new IPEndPoint(ipaddr, 502); socket.Connect(ept); //create a wrapper around the socket ICommClient portClient = socket.GetClient(); //create a client driver var driver = new ModbusClient(new ModbusTcpCodec()); driver.Address = DeviceAddress; while (true) { //compose the Modbus command to be submitted var command = new ModbusCommand(ModbusCommand.FuncReadMultipleRegisters); command.Offset = 0; command.Count = 16; //execute the command synchronously CommResponse result = driver .ExecuteGeneric(portClient, command); if (result.Status == CommResponse.Ack) { //command successfully Debug.Print("Success!"); for (int i = 0; i < command.Count; i++) { Debug.Print("Reg#" + i + "=" + command.Data[i]); } } else { //some error Debug.Print("Error=" + command.ExceptionCode); } //just a small delay Thread.Sleep(1000); } } #endif #if MASTER_RTU //create an UART port using (var uart = new SerialPortEx("COM2", 38400, Parity.Even, 8, StopBits.One)) { //open the serial port uart.Open(); var prm = new SerialPortParams("38400,E,8,1"); //create a wrapper around the uart ICommClient portClient = uart .GetClient(prm); //create a client driver var driver = new ModbusClient(new ModbusRtuCodec()); driver.Address = DeviceAddress; while (true) { //compose the Modbus command to be submitted var command = new ModbusCommand(ModbusCommand.FuncWriteMultipleRegisters); command.Offset = 49; command.Count = 4; //attach the Netduino's input values as data command.Data = new ushort[4]; for (int i = 0; i < 4; i++) { command.Data[i] = (ushort)(_inputs[i].Read() ? 0 : 1); } //execute the command synchronously CommResponse result = driver .ExecuteGeneric(portClient, command); if (result.Status == CommResponse.Ack) { //command successfully } else { //some error Debug.Print("Error=" + command.ExceptionCode); } //just a small delay Thread.Sleep(1000); } } #endif #if SLAVE_TCP //create a TCP socket using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) { //place it as listener on the port 502 (standard Modbus) var ept = new IPEndPoint(IPAddress.Any, 502); socket.Bind(ept); socket.Listen(10); //create a server driver var server = new ModbusServer(new ModbusTcpCodec()); server.Address = DeviceAddress; while (true) { //wait for an incoming connection var listener = socket.GetTcpListener(server); listener.ServeCommand += new ServeCommandHandler(listener_ServeCommand); listener.Start(); Thread.Sleep(1); } } #endif #if SLAVE_UDP //create a UDP socket using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)) { //bind it to the port 502 (standard Modbus) var ept = new IPEndPoint(IPAddress.Any, 502); socket.Bind(ept); //create a server driver var server = new ModbusServer(new ModbusTcpCodec()); server.Address = DeviceAddress; //listen for an incoming request var listener = socket.GetUdpListener(server); listener.ServeCommand += new ServeCommandHandler(listener_ServeCommand); listener.Start(); Thread.Sleep(Timeout.Infinite); } #endif #if SLAVE_RTU //create an UART port using (var uart = new SerialPortEx("COM2", 38400, Parity.Even, 8, StopBits.One)) { //open the serial port uart.Open(); //create a server driver var server = new ModbusServer(new ModbusRtuCodec()); server.Address = DeviceAddress; while (true) { //wait for an incoming connection var listener = uart.GetServer(server); listener.ServeCommand += new ServeCommandHandler(listener_ServeCommand); listener.Start(); while (listener.IsRunning) { Thread.Sleep(1); } } } #endif }