/// <summary> /// Sends the command via ehternet. /// </summary> public string SendCmdViaEhternet() { if (cbInterfaceType.Text == "ETHERNET") { try { // Назначаем сокет локальной конечной точке и слушаем входящие сокеты // Устанавливаем для сокета локальную конечную точку int port = 5024; // порт для приема входящих запросов string ip = txtIpHost.Text; // Создаем сокет Tcp/Ip IPEndPoint ipPoint = new IPEndPoint(IPAddress.Parse(ip), port); Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); PiezoParameters piezo = new PiezoParameters(); string msg = txtCommand.Text + '\n'; socket.Connect(ipPoint); byte[] data = Encoding.ASCII.GetBytes(msg); socket.Send(data); // получаем ответ System.Threading.Thread.Sleep(400); data = new byte[70]; // буфер для ответа StringBuilder builder = new StringBuilder(); int bytes = 0; // количество полученных байт do { bytes = socket.Receive(data, data.Length, 0); builder.Append(Encoding.ASCII.GetString(data, 0, bytes)); }while (socket.Available > 0); //int gg = data.Count(); //MessageBox.Show(gg.ToString()); //Console.WriteLine("ответ сервера: " + builder.ToString()); //int uu = socket.Receive(data); //MessageBox.Show(uu.ToString()); byte[] data2 = new byte[70]; for (int i = 6; i < data.Count(); i++) { data2[i - 6] = data[i]; } // закрываем сокет socket.Shutdown(SocketShutdown.Both); socket.Close(); string ss = Encoding.ASCII.GetString(data2); txtAnswer.Text = ss; Regex reg = new Regex(@"^[-+][0-9][.][0-9]{5}[E][-+][0-9]{2}[,][-+][0-9][.][0-9]{5}[E][-+][0-9]{2}[,][-+][0-9]{1}"); if (reg.IsMatch(ss)) { MessageBox.Show("Ok"); ParseStringTab PS = new ParseStringTab(); PS.AddMeasStringAgilent4980(ss); txtAnswer.Text = PS.ElementAt(1); } else { txtAnswer.Text = "no"; } txtAnswer.Text = ss; char splitchar = (char)'\n'; string[] sss = ss.Split(splitchar); string s1 = sss[2]; s1 = s1.Substring(12, 24); string sss1 = ss.Substring(0, 10); txtAnswer.AppendText(Environment.NewLine + sss1); return(ss); } catch (Exception ex) { MessageBox.Show(ex.ToString()); Console.WriteLine(ex.ToString()); return(ex.ToString()); } } else { return(""); } //"SCPI> 4980A SCPI parser.\r\n\r\nSCPI> ??\u0001??\u0003-1.27856E-08,-3.91647E-0\0\0\0\0\0\0" }
/// <summary> /// Sends the command ehternet. /// </summary> public void SendCmdEhternet() { if (cbInterfaceType.Text == "GPIB") { WriteCommand(txtCommand.Text); } if (cbInterfaceType.Text == "ETHERNET") { // Устанавливаем для сокета локальную конечную точку int port = 5024; // порт для приема входящих запросов string ip = txtIpHost.Text; // Создаем сокет Tcp/Ip IPEndPoint ipPoint = new IPEndPoint(IPAddress.Parse(ip), port); Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); // Назначаем сокет локальной конечной точке и слушаем входящие сокеты try { PiezoParameters piezo = new PiezoParameters(); string msg = txtCommand.Text + '\n'; socket.Connect(ipPoint); //byte[] data = Encoding.Unicode.GetBytes(msg); byte[] data = Encoding.ASCII.GetBytes(msg); socket.Send(data); // получаем ответ data = new byte[70]; // буфер для ответа StringBuilder builder = new StringBuilder(); int bytes = 0; // количество полученных байт do { bytes = socket.Receive(data, data.Length, 0); builder.Append(Encoding.ASCII.GetString(data, 0, bytes)); }while (socket.Available > 0); int gg = data.Count(); MessageBox.Show(gg.ToString()); Console.WriteLine("ответ сервера: " + builder.ToString()); int uu = socket.Receive(data); MessageBox.Show(uu.ToString()); byte[] data2 = new byte[70]; for (int i = 6; i < data.Count(); i++) { data2[i - 6] = data[i]; } MessageBox.Show(Encoding.ASCII.GetString(data2)); txtAnswer.Text = Encoding.ASCII.GetString(data2); // закрываем сокет socket.Shutdown(SocketShutdown.Both); socket.Close(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); Console.WriteLine(ex.ToString()); } finally { Console.ReadLine(); } } }