static byte[] ToBytes(FSI_PID_DATA obj) { int size = Marshal.SizeOf(typeof(FSI_PID_DATA)); IntPtr ptr = Marshal.AllocHGlobal(size); Marshal.StructureToPtr(obj, ptr, false); byte[] bytes = new byte[size]; Marshal.Copy(ptr, bytes, 0, size); Marshal.FreeHGlobal(ptr); return(bytes); }
private void ShowButton_Click(object sender, EventArgs e) { /* * if (openFileDialog1.ShowDialog() == DialogResult.OK) * { * pictureBox1.Load(openFileDialog1.FileName); * } */ Pid_Data_Send(); return; //testルーチン double gx = 1; double gy = 2; //PID送信用UDP //バインドするローカルポート番号 FSI_PID_DATA pid_data = new FSI_PID_DATA(); int localPort = 24407; System.Net.Sockets.UdpClient udpc3 = null;; try { udpc3 = new System.Net.Sockets.UdpClient(localPort); } catch (Exception ex) { //匿名デリゲートで表示する this.Invoke(new dlgSetString(ShowRText), new object[] { richTextBox1, ex.ToString() }); } //データを送信するリモートホストとポート番号 string remoteHost = "192.168.1.206"; int remotePort = 24410; //送信するデータを読み込む ++(pid_data.id); pid_data.swid = 24402; // 仮 mmFsiUdpPortFSI2 pid_data.t = TDateTimeDouble(DateTime.Now); pid_data.dx = (float)(gx); pid_data.dy = (float)(gy); pid_data.vmax = 123; byte[] sendBytes = ToBytes(pid_data); //リモートホストを指定してデータを送信する udpc3.Send(sendBytes, sendBytes.Length, remoteHost, remotePort); if (udpc3 != null) { udpc3.Close(); } }