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"); } } }
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"); } } }
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; }
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; }