Пример #1
0
        private void UDPConnect()
        {
            if (udpPU == null && udpPK == null && udpPTVC == null)
            {
                try
                {
                    udpPU = new Udp(
                        new System.Net.IPAddress(getIPAddr(1)),
                        int.Parse(_frmMainWindow._frmSettings.txtIPPort1.Text));
                    udpPK = new Udp(
                        new System.Net.IPAddress(getIPAddr(1)),
                        int.Parse(_frmMainWindow._frmSettings.txtIPPort2.Text));
                    udpPTVC = new Udp(
                        new System.Net.IPAddress(getIPAddr(1)),
                        int.Parse(_frmMainWindow._frmSettings.txtIPPort3.Text));

                    if (udpPU.Open() && udpPK.Open() && udpPTVC.Open())
                    {
                        cntTimeouts       = 0; cntSuccess = 0;
                        udpPU.received   += udp_receivedPU;
                        udpPK.received   += udp_receivedPK;
                        udpPTVC.received += udp_receivedPTVC;

                        btnConnect.Text      = "Стоп обмен";
                        btnConnect.BackColor = Color.LightGreen;
                    }
                    else
                    {
                        MessageBox.Show("Ошибка открытия порта!","DSP Firmware");
                        //AddToList("Ошибка подключения");
                        btnConnect.Text      = "Старт обмен";
                        btnConnect.BackColor = Color.Transparent;

                        udpPU   = null;
                        udpPK   = null;
                        udpPTVC = null;
                    }
                }
                catch (Exception ex) { udpPU = null; udpPK = null; udpPTVC = null; MessageBox.Show(ex.Message + "\n\n\nНе удалось установить соединение.","UDP Connect"); }
            }
            else
            {
                try
                {
                    udpPU.Close();
                    udpPK.Close();
                    udpPTVC.Close();
                    btnConnect.BackColor = Color.Transparent;
                    btnConnect.Text      = "Старт обмен";
                    bCommandBusy         = false;
                    udpPU   = null;
                    udpPK   = null;
                    udpPTVC = null;
                }
                catch (Exception ex) { udpPU = null; udpPK = null; udpPTVC = null; MessageBox.Show(ex.Message,"UDPConnect"); }
            }
        }
Пример #2
0
        public void UDPConnect()
        {
            if (udpPU == null && udpPK == null && udpPTVC == null)
            {
                try
                {
                    udpPU = new Udp(
                        new System.Net.IPAddress(getIPAddr(1)),
                        int.Parse(_frmMainWindow._frmSettings.txtIPPort1.Text));
                    udpPK = new Udp(
                        new System.Net.IPAddress(getIPAddr(1)),
                        int.Parse(_frmMainWindow._frmSettings.txtIPPort2.Text));
                    udpPTVC = new Udp(
                        new System.Net.IPAddress(getIPAddr(1)),
                        int.Parse(_frmMainWindow._frmSettings.txtIPPort3.Text));

                    if (udpPU.Open() && udpPK.Open() && udpPTVC.Open())
                    {
                        _frmBoardSignals.countSuccessPU     = _frmBoardSignals.countSuccessPK = _frmBoardSignals.countSuccessPTVC =
                            _frmBoardSignals.countTimeoutPU = _frmBoardSignals.countTimeoutPK = _frmBoardSignals.countTimeoutPTVC = 0;

                        udpPU.received   += _frmBoardSignals.udp_receivedPU;
                        udpPK.received   += _frmBoardSignals.udp_receivedPK;
                        udpPTVC.received += _frmBoardSignals.udp_receivedPTVC;

                        //btnConnect.Text = "Стоп обмен";
                        //btnConnect.BackColor = Color.LightGreen;

                        this.Text        = sTitleMainForm + " | Подключение установлено. " + sVersion;
                        panel1.BackColor = Color.LightGreen;
                    }
                    else
                    {
                        //MessageBox.Show("Ошибка открытия порта!", "DSP Firmware");
                        //btnConnect.Text = "Старт обмен";
                        //btnConnect.BackColor = Color.Transparent;
                        this.Text        = sTitleMainForm + " | Ошибка открытия портов. " + sVersion;
                        panel1.BackColor = Color.Red;

                        udpPU   = null;
                        udpPK   = null;
                        udpPTVC = null;
                    }
                }
                catch
                {
                    if (udpPU != null)
                    {
                        udpPU.Close(); udpPU = null;
                    }
                    if (udpPK != null)
                    {
                        udpPK.Close(); udpPK = null;
                    }
                    if (udpPTVC != null)
                    {
                        udpPTVC.Close(); udpPTVC = null;
                    }
                    this.Text        = sTitleMainForm + " | Ошибка соединения. " + sVersion; //MessageBox.Show(ex.Message + "\n\n\nНе удалось установить соединение.", "UDP Connect");
                    panel1.BackColor = Color.Red;
                }
            }
            else
            {
                try
                {
                    udpPU.Close();
                    udpPK.Close();
                    udpPTVC.Close();

                    this.Text        = sTitleMainForm + " | Подключение не установлено. " + sVersion;
                    panel1.BackColor = Color.Transparent;

                    bCommandBusyPK = bCommandBusyPTVC = bCommandBusyPU = false;

                    udpPU   = null;
                    udpPK   = null;
                    udpPTVC = null;
                }
                catch
                {
                    udpPU            = null;
                    udpPK            = null;
                    udpPTVC          = null;
                    this.Text        = sTitleMainForm + " | Ошибка закрытия соединения. " + sVersion;
                    panel1.BackColor = Color.Red;
                    //MessageBox.Show(ex.Message, "UDPConnect");
                }
            }
        }
Пример #3
0
        private void CreateAndSendSignal(BoardSignal signal,int index,SET_OR_GET set_or_get)
        {
            if (bCommandBusy)
            {
                return;
            }
            ushort addr     = 0;
            ushort cnt      = 0;
            uint   port     = 0;
            uint   groupVal = 0;

            byte[] buf = null;
            Udp    udp = null;

            //lastSignal1 = signal;

            switch (set_or_get)
            {
            case SET_OR_GET.SET:
            {
                //if (signal.set.source == null) return;
                addr = (ushort)signal.set.source.address;
                cnt  = signal.set.sizebyte;
                port = signal.set.source.port;
                buf  = signal.set.source.group.valueTX;

                //собираем из буфера группы число
                for (int i = 0; i < buf.Length; i++)
                {
                    groupVal += (uint)(buf[i] << (8 * i));
                }

                //делаем ИЛИ с отправляемым сигналом
                groupVal |= signal.set.valueon;
            }
            break;

            case SET_OR_GET.GET:
            {
                addr = (ushort)signal.get.source.address;
                cnt  = signal.get.sizebyte;
                port = signal.get.source.port;
                buf  = signal.get.source.group.valueTX;

                //собираем из буфера группы число
                for (int i = 0; i < buf.Length; i++)
                {
                    groupVal += (uint)(buf[i] << (8 * i));
                }

                //делаем ИЛИ с отправляемым сигналом
                //groupVal |= signal.get.valueon;
            }
            break;

            case SET_OR_GET.DESET:
            {
                addr = (ushort)signal.set.source.address;
                cnt  = signal.set.sizebyte;
                port = signal.set.source.port;
                buf  = signal.set.source.group.valueTX;

                //собираем из буфера группы число
                for (int i = 0; i < buf.Length; i++)
                {
                    groupVal += (uint)(buf[i] << (8 * i));
                }

                //делаем И с отправляемым сигналом на выключение
                groupVal &= signal.set.valueoff;
            }
            break;
            }


            //выбираем порт для отправки
            if (port == uint.Parse(_frmMainWindow._frmSettings.txtIPPort1.Text))
            {
                udp = udpPU; lastSignal1 = signal;
            }
            if (port == uint.Parse(_frmMainWindow._frmSettings.txtIPPort2.Text))
            {
                udp = udpPK; lastSignal2 = signal;
            }
            if (port == uint.Parse(_frmMainWindow._frmSettings.txtIPPort3.Text))
            {
                udp = udpPTVC; lastSignal3 = signal;
            }

            //собираем обратно получившееся значение в групповой буфер
            for (int i = 0; i < buf.Length; i++)
            {
                buf[i] = (byte)((groupVal >> (8 * i)) & 0xFF);
            }

            //создаем команду с определенным адресом и количеством байт данных
            Command com = new Command(addr,cnt,set_or_get,index,CommandType.TYPICAL);

            //заполняем буфер данных значением группы
            com.data = buf;

            //отображаем уходящий пакет на форме
            ShowBuf(com.GetCommandByteBuf(),BUF_TO_SHOW.TX);

            //команда уходит
            if (udp != null)
            {
                bCommandBusy = true;
                udp.SendCommand(com);
            }
            else
            {
                MessageBox.Show("Проверьте соединение!","7600",MessageBoxButtons.OK,MessageBoxIcon.Error); return;
            }

            while (bCommandBusy)
            {
                this.Cursor = Cursors.AppStarting; Application.DoEvents();
            }
            this.Cursor = Cursors.Default;
        }
Пример #4
0
        private void CreateAndSendCommand(Command com,Udp udp,COMTYPE comtype)
        {
            if (udp == null)
            {
                return;
            }
            if (bCommandBusy)
            {
                return;
            }

            ushort addr;

            if (!ushort.TryParse(txtAddr.Text,out addr))
            {
                addr = 0;
            }
            switch (comtype)
            {
            case COMTYPE.CONFIG_RS:
            {
                int timeoutRazdel,periodCycle,timeoutWait;
                if (!int.TryParse(txtTimeoutRazdel.Text,out timeoutRazdel))
                {
                    timeoutRazdel = 0;
                }
                if (!int.TryParse(txtPeriodCycle.Text,out periodCycle))
                {
                    periodCycle = 0;
                }
                if (!int.TryParse(txtTimeoutWait.Text,out timeoutWait))
                {
                    timeoutWait = 0;
                }

                com = new Command(addr,9,SET_OR_GET.OTHER,0,CommandType.TYPICAL);
                //for (int i = 0; i < com_out.data.Length; i++) com_out.data[i] = (byte)i;

                com.data[0] |= (byte)cmbSpeedUart.SelectedIndex;
                com.data[1] |= (byte)(cmbParity.SelectedIndex + 1);
                if (radMaster.Checked)
                {
                    com.data[1] |= (1 << 3);
                }
                com.data[1] |= (byte)((cmbStopBits.SelectedIndex) << 4);
                if (radRS485.Checked)
                {
                    com.data[1] |= (1 << 6);
                }
                if (radReadWrite.Checked)
                {
                    com.data[1] |= (1 << 7);
                }

                com.data[3] = (byte)(timeoutRazdel / 100);
                com.data[4] = (byte)(((timeoutRazdel / 100) >> 8) & 0xFF);
                com.data[5] = (byte)(periodCycle);
                com.data[6] = (byte)((periodCycle >> 8) & 0xFF);
                com.data[7] = (byte)(timeoutWait / 100);
                com.data[8] = (byte)(((timeoutWait / 100) >> 8) & 0xFF);
                break;
            }

            case COMTYPE.FREE:
            {
                byte[] buf;
                string str = txtTVPOut.Text;
                try
                {
                    buf = str.Split(',').Select(n => Convert.ToByte(n,16)).ToArray();
                    com = new Command(addr,(ushort)buf.Length,SET_OR_GET.OTHER,0,CommandType.TYPICAL);
                    Array.Copy(buf,com.data,buf.Length);
                }
                catch
                {
                    com = new Command(addr,0,SET_OR_GET.OTHER,0,CommandType.TYPICAL);
                }
                break;
            }

            case COMTYPE.SIGNAL:
            {
            }
            break;
            }


            ShowBuf(com.GetCommandByteBuf(),BUF_TO_SHOW.TX);
            bCommandBusy = true;
            udp.SendCommand(com);

            while (bCommandBusy)
            {
                this.Cursor = Cursors.AppStarting; Application.DoEvents();
            }
            this.Cursor = Cursors.Default;
        }