Пример #1
0
        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);
        }
Пример #2
0
        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();
            }
        }