コード例 #1
0
        public static byte[] SendWriteChip()
        {
            byte[] data;
            ushort addr;
            ushort len;

            byte[] array;          //data+addr+len
            byte[] Data;           //最终发送的数据

            addr    = 0;
            len     = 8;
            data    = new byte[len];
            data[0] = Module.deadlineOrPermanent;
            data[1] = Module.deadlineYY;
            data[2] = Module.deadlineMM;
            data[3] = Module.deadlineDD;
            data[4] = Module.YY;
            data[5] = Module.MM;
            data[6] = Module.DD;
            data[7] = 1;

            array = ModbusUdp.ArrayAdd(addr, len, data);
            Data  = ModbusUdp.MBReqWriteChip(array);
            return(Data);
        }
コード例 #2
0
        /// <summary>
        /// 影片结束发送复位指令
        /// </summary>
        public static void SendZero()
        {
            byte[] data;
            ushort addr;
            ushort len;

            byte[] array;          //data+addr+len
            byte[] Data;           //最终发送的数据

            addr  = 0;
            len   = 10;
            data  = new byte[len];
            array = ModbusUdp.ArrayAdd(addr, len, data);
            Data  = ModbusUdp.MBReqSend_Data(array);
            UdpSendData(Data, Data.Length, UdpInit.RemotePoint);
        }
コード例 #3
0
        /// <summary>
        /// 发送获取时间码指令
        /// </summary>
        /// <returns></returns>
        public static byte[] SendGetTimeCode()
        {
            byte[] data;
            ushort addr;
            ushort len;

            byte[] array;          //data+addr+len
            byte[] Data;           //最终发送的数据

            addr = 0;
            len  = 4;
            data = new byte[0];

            array = ModbusUdp.ArrayAdd(addr, len, data);
            Data  = ModbusUdp.MBReqGetTimeCode(array);
            return(Data);
        }
コード例 #4
0
        /// <summary>
        /// 影片结束发送复位指令
        /// </summary>
        public static void SendReset()
        {
            byte[] data;
            ushort addr;
            ushort len;

            byte[] array;          //data+addr+len
            byte[] Data;           //最终发送的数据

            addr = 0;
            len  = 10;
            data = new byte[len];
            if ("2DOF".Equals(MainWindow.PlayDOF))
            {
                //两自由度数据
                data[0] = 127;
                data[1] = 127;
                data[2] = 127;
            }
            else
            {
                //三自由度数据
                data[0] = 0;
                data[1] = 0;
                data[2] = 0;
            }
            //复位指令
            if (movieStop == true)
            {
                data[8] = 0;
            }
            else
            {
                data[8] = 1;
            }
            array = ModbusUdp.ArrayAdd(addr, len, data);
            Data  = ModbusUdp.MBReqSend_Data(array);
            UdpSendData(Data, Data.Length, UdpInit.RemotePoint);
        }
コード例 #5
0
        public static void SendWrite(double pos)
        {
            byte[] data;
            ushort addr;
            ushort len;

            byte[] array;          //data+addr+len
            byte[] Data;           //最终发送的数据
            pos = pos * 2400;
            Debug.WriteLine(pos);
            addr = 0;
            len  = 10;
            data = new byte[len];
            int num1 = 3 * (int)(pos / 50);                  //actionFile数组下标
            int num2 = 3 * (int)(pos / 50) + 1;
            int num3 = 3 * (int)(pos / 50) + 2;
            int num4 = 2 * (int)(pos / 50);                  //effectFile数组下标
            int num5 = 2 * (int)(pos / 50) + 1;

            if (num1 - timeCodeTemp > 9 && num1 - timeCodeTemp < 0)
            {
                num1 = timeCodeTemp + 3;
                num2 = timeCodeTemp + 4;
                num3 = timeCodeTemp + 5;
            }
            Debug.WriteLine(num1 + " " + num2 + " " + num3);
            try
            {
                if (num3 > Module.actionFile.Length)
                {
                    if ("2DOF".Equals(MainWindow.PlayDOF))
                    {
                        //两自由度数据
                        data[0] = 127;                      //1号缸
                        data[1] = 127;                      //2号缸
                        data[2] = 127;                      //3号缸
                    }
                    else
                    {
                        //三自由度数据
                        data[0] = 0;                          //1号缸
                        data[1] = 0;                          //2号缸
                        data[2] = 0;                          //3号缸
                    }
                }
                else
                {
                    data[0] = (byte)(Module.actionFile[num1] * MainWindow.PlayHeight / 100);      //1号缸
                    data[1] = (byte)(Module.actionFile[num2] * MainWindow.PlayHeight / 100);      //2号缸
                    data[2] = (byte)(Module.actionFile[num3] * MainWindow.PlayHeight / 100);      //3号缸

                    //data[0] = Module.actionFile[num1];
                    //data[1] = Module.actionFile[num2];
                    //data[2] = Module.actionFile[num3];
                }

                data[3] = 0;                                                    //4号缸
                data[4] = 0;                                                    //5号缸
                data[5] = 0;                                                    //6号缸
                //data[6] = 0;                                                  //保留
                //data[7] = 0;                                                  //保留

                if (Module.shakeFile != null)
                {
                    if (num5 > Module.shakeFile.Length)
                    {
                        data[6] = 0;                                                 //振幅
                        data[7] = 0;                                                 //频率
                    }
                    else
                    {
                        data[6] = Module.shakeFile[num4];
                        data[7] = Module.shakeFile[num5];
                    }
                }

                if (num5 > Module.effectFile.Length)
                {
                    data[8] = 0;                                                 //座椅特效
                    //data[9] = 0;                                               //环境特效
                    data[9] = dataLight;
                }
                else
                {
                    data[8] = Module.effectFile[num5];                          //座椅特效
                    //data[9] = Module.effectFile[num4];                        //环境特效
                    data[9] = (byte)(Module.effectFile[num4] | dataLight);
                }
                Debug.WriteLine((int)(3 * (pos / 50)));
            }
            catch (Exception e)
            {
                Debug.WriteLine(e);
            }

            array = ModbusUdp.ArrayAdd(addr, len, data);
            Data  = ModbusUdp.MBReqSend_Data(array);

            UdpSendData(Data, Data.Length, UdpInit.RemotePoint);
            timeCodeTemp = num1;
        }
コード例 #6
0
        public static void SendTotalNew(double pos)
        {
            byte[] data;
            ushort addr;
            ushort len;
            int    dmxLen;

            byte[] array;          //data+addr+len
            byte[] Data;           //最终发送的数据
            switch (MainWindow.PlayFrame)
            {
            case 48:
                pos = pos * 2400;
                break;

            case 60:
                pos = pos * 3000;
                break;

            case 120:
                pos = pos * 6000;
                break;
            }
            //5D模式下默认使用60帧
            //if (MainWindow.PlayType.Equals("5D"))
            //{
            //    pos = pos * 3000;
            //}
            Debug.WriteLine(pos);
            addr = 0;
            len  = 46;
            data = new byte[len];
            int num1 = 3 * (int)(pos / 50);                  //actionFile2DOF与actionFile3DOF数组下标
            int num2 = 3 * (int)(pos / 50) + 1;
            int num3 = 3 * (int)(pos / 50) + 2;

            int numEffect1 = 2 * (int)(pos / 50);                  //effectFile与shakeFile数组下标
            int numEffect2 = 2 * (int)(pos / 50) + 1;

            try
            {
                switch (MainWindow.PlayDOF)
                {
                case "2DOF":
                    if (Module.actionFile2DOF != null)
                    {
                        if (num3 > Module.actionFile2DOF.Length)
                        {
                            data[0] = 127;
                            data[1] = 127;
                            data[2] = 127;
                        }
                        else
                        {
                            data[0] = (byte)(Module.actionFile2DOF[num1] * MainWindow.PlayHeight / 100);          //1号缸
                            data[1] = (byte)(Module.actionFile2DOF[num2] * MainWindow.PlayHeight / 100);          //2号缸
                            data[2] = (byte)(Module.actionFile2DOF[num3] * MainWindow.PlayHeight / 100);          //3号缸
                        }
                    }
                    else
                    {
                        data[0] = 127;
                        data[1] = 127;
                        data[2] = 127;
                    }
                    break;

                case "3DOF":
                    if (Module.actionFile3DOF != null)
                    {
                        if (num3 > Module.actionFile3DOF.Length)
                        {
                            data[0] = 0;
                            data[1] = 0;
                            data[2] = 0;
                        }
                        else
                        {
                            data[0] = (byte)(Module.actionFile3DOF[num1] * MainWindow.PlayHeight / 100);          //1号缸
                            data[1] = (byte)(Module.actionFile3DOF[num2] * MainWindow.PlayHeight / 100);          //2号缸
                            data[2] = (byte)(Module.actionFile3DOF[num3] * MainWindow.PlayHeight / 100);          //3号缸
                        }
                    }
                    break;

                case "6DOF":
                    int num6DOF1 = 6 * (int)(pos / 50);                      //actionFile6DOF数组下标
                    int num6DOF2 = 6 * (int)(pos / 50) + 1;
                    int num6DOF3 = 6 * (int)(pos / 50) + 2;
                    int num6DOF4 = 6 * (int)(pos / 50) + 3;
                    int num6DOF5 = 6 * (int)(pos / 50) + 4;
                    int num6DOF6 = 6 * (int)(pos / 50) + 5;
                    if (Module.actionFile6DOF != null)
                    {
                        if (num6DOF6 > Module.actionFile6DOF.Length)
                        {
                            //六自由度数据
                            data[0] = 0;                          //1号缸
                            data[1] = 0;                          //2号缸
                            data[2] = 0;                          //3号缸
                            data[3] = 0;                          //4号缸
                            data[4] = 0;                          //5号缸
                            data[5] = 0;                          //6号缸
                        }
                        else
                        {
                            data[0] = (byte)(Module.actionFile6DOF[num6DOF1] * MainWindow.PlayHeight / 100);          //1号缸
                            data[1] = (byte)(Module.actionFile6DOF[num6DOF2] * MainWindow.PlayHeight / 100);          //2号缸
                            data[2] = (byte)(Module.actionFile6DOF[num6DOF3] * MainWindow.PlayHeight / 100);          //3号缸
                            data[3] = (byte)(Module.actionFile6DOF[num6DOF4] * MainWindow.PlayHeight / 100);          //4号缸
                            data[4] = (byte)(Module.actionFile6DOF[num6DOF5] * MainWindow.PlayHeight / 100);          //5号缸
                            data[5] = (byte)(Module.actionFile6DOF[num6DOF6] * MainWindow.PlayHeight / 100);          //6号缸
                        }
                    }
                    break;
                }

                if (Module.shakeFile != null)
                {
                    if (numEffect2 > Module.shakeFile.Length)
                    {
                        data[6] = 0;                                                 //振幅
                        data[7] = 0;                                                 //频率
                    }
                    else
                    {
                        data[6] = Module.shakeFile[numEffect1];
                        data[7] = Module.shakeFile[numEffect2];
                    }
                }
                if (Module.effectFile != null)
                {
                    if (numEffect2 > Module.effectFile.Length)
                    {
                        data[8] = 0;
                        data[9] = dataLight;
                    }
                    else
                    {
                        data[8] = Module.effectFile[numEffect2];                         //座椅特效
                        data[9] = (byte)(Module.effectFile[numEffect1] | dataLight);     //环境特效
                    }
                }
            }
            catch (Exception e)
            {
                Debug.WriteLine(e.Message);
            }

            //测试选座
            //if (MainWindow.imageArray.Count == 0)
            //{
            //    data[9] = 0;
            //}
            //else
            //{
            //    data[9] = (byte)MainWindow.imageArray[iii];
            //}
            //iii = iii + 1;
            //if (iii >= MainWindow.imageArray.Count)
            //{
            //    iii = 0;
            //}

            if (Module.dmx512File != null)
            {
                dmxLen = 0;
                byte[] dataDmxLen = new byte[8];
                if (Module.dmx512File.Length != 0)
                {
                    for (int ii = 0; ii < 8; ii++)
                    {
                        dmxLen        += Module.dmx512File[ii];
                        dataDmxLen[ii] = Module.dmx512File[ii];
                    }
                }
                byte[] dataDmx = new byte[dmxLen];
                if (((int)(pos / 50) + 1) * dmxLen < Module.dmx512File.Length)
                {
                    for (int i = 0; i < dmxLen; i++)
                    {
                        dataDmx[i] = (byte)Module.dmx512File[(int)(pos / 50) * dmxLen + i + 8];
                    }
                }
                else
                {
                    dataDmx = new byte[dmxLen];
                }
                dataDmxLen.CopyTo(data, 12);
                dataDmx.CopyTo(data, 20);
            }
            array = ModbusUdp.ArrayAdd(addr, len, data);
            Data  = ModbusUdp.MBReqSend_Data(array);
            UdpSendData(Data, Data.Length, UdpInit.RemotePoint);
        }