public PwrSerial(string port) { CurChannel = 99; _modBus = new ModBus(); SetLogMessage?.Invoke($"Try connected Power Supply on port {port}"); if (port == "") { port = "COM9"; } _port = new SerialPort(port) { BaudRate = 115200, Parity = Parity.None, StopBits = StopBits.One, DataBits = 8, Handshake = Handshake.None, RtsEnable = true }; _port.DataReceived += DataReceivedHandler; }
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { System.Threading.Thread.Sleep(300); int num = serialPort1.BytesToRead; byte[] receive_buff = new byte[num]; serialPort1.Read(receive_buff, 0, num); funccode.Clear(); recbuf.Clear(); foreach (byte b in receive_buff) { recbuf.Append(b.ToString("X2") + ' '); funccode.Append(b); } System.Threading.Thread.Sleep(100); int recnum = receive_buff.Length; //startRegAddr = (((uint)receive_buff[2] << 8) | receive_buff[3]); uint crccal = ModBus.GetCRC(receive_buff, (uint)recnum - 2); uint crcget = ((uint)receive_buff[recnum - 1] << 8) | receive_buff[recnum - 2]; if ((crccal == crcget) && (receive_buff[0] == 0x01)) { DealWithFunc(receive_buff, recnum); } try { this.Invoke((EventHandler)(delegate { textBox_Receive.AppendText(recbuf.ToString()); }) ); } catch (Exception ex) { System.Media.SystemSounds.Beep.Play(); MessageBox.Show(ex.Message); } finally { } }
public FrmTest() { InitializeComponent(); ModBus = new ModBus(ModBus.ModBusMode.RTU, 1, 115200, SerialPortMode.RS232); Result result = ModBus.Connect("COM2"); if (result.Success == false) { MessageBox.Show(result.ErrorMessage); } ModBus.OnReceiveNewResponse += ModBus_OnReceiveNewResponse; GeneralCommands = new GeneralCommands(); result = GeneralCommands.Connect("COM2"); GeneralCommands.OnReceiceNewResponse += GeneralCommands_OnReceiceNewResponse; }
private void SendWorker_DoWork(object sender, DoWorkEventArgs e) { while (!sendWorker.CancellationPending) { Debug.WriteLine("While: "); if (send.Count > 0) { //var s = send.Peek(); var s = send.Dequeue(); DataSend(s); Thread.Sleep(1000); if (received.Count > 0) { var r = received.Dequeue(); var sMID = ModBus.GetMessageId(s); var rMID = ModBus.GetMessageId(r); if (sMID.Equals(rMID)) { send.Dequeue(); } } } else { if (sendWorker.IsBusy) { sendWorker.CancelAsync(); } } } }
// --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // Modbus connection /// <summary>Establishes the connection to the modbus server.</summary> public void EstablishConnectionModbus() { modBus = new ModBus(logic.selectedUnit.urIpAddress); }