Пример #1
0
 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
            {
            }
        }
Пример #3
0
        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;
        }
Пример #4
0
        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();
                    }
                }
            }
        }
Пример #5
0
 // ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 // Modbus connection
 /// <summary>Establishes the connection to the modbus server.</summary>
 public void EstablishConnectionModbus()
 {
     modBus = new ModBus(logic.selectedUnit.urIpAddress);
 }