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