コード例 #1
0
        public void SessionTest1()
        {
            using var session = fht.NewSession(new Functions());
            InputStruct  input  = default;
            OutputStruct output = default;

            var key1 = new KeyStruct {
                kfield1 = 13, kfield2 = 14
            };
            var value = new ValueStruct {
                vfield1 = 23, vfield2 = 24
            };

            session.Upsert(ref key1, ref value, Empty.Default, 0);
            var status = session.Read(ref key1, ref input, ref output, Empty.Default, 0);

            if (status == Status.PENDING)
            {
                session.CompletePending(true);
            }
            else
            {
                Assert.IsTrue(status == Status.OK);
            }

            Assert.IsTrue(output.value.vfield1 == value.vfield1);
            Assert.IsTrue(output.value.vfield2 == value.vfield2);
        }
    protected new void Start()
    {
        base.Start();
        Background.SetBackgroundColor(Color.black);
        _textStyle                  = new GUIStyle();
        _textStyle.alignment        = TextAnchor.MiddleCenter;
        _textStyle.normal.textColor = Color.white;

        _puzzle         = gameObject.AddComponent <LightsOutScript>();
        _previousInput  = mainmenu.Escape;
        mainmenu.Escape = new InputStruct(KeyCode.Escape);
        _puzzle.Open();
        (_solver = gameObject.AddComponent <LightsOutSolver>()).enabled = false;
        int keypressed = MyInputs.GetNumberPressed(Input.GetKey);

        if (Input.GetKey(KeyCode.P))
        {
            keypressed += 10;
        }
        else if (keypressed < 2)
        {
            keypressed = 10;
        }
        //Debug.Log(keypressed);
        _puzzle.CreateBoard(keypressed, keypressed, Color.red, Color.green);
        LightsOutScript.ActiveDdebug         = true;
        LightsOutScript.Square.EdgeSizeRatio = 50f / 1920f;
    }
コード例 #3
0
            static void RotateInput(ref InputStruct __instance)
            {
                Vector2 leftInput  = RotateInputVector2(__instance.leftX, __instance.leftY);
                Vector2 rightInput = RotateInputVector2(__instance.rightX, __instance.rightY);

                if ((settings.switchFlipSticks && PlayerController.Instance.IsSwitch) || (settings.regularFlipSticks && !PlayerController.Instance.IsSwitch))
                {
                    __instance.leftX  = rightInput.x;
                    __instance.leftY  = rightInput.y;
                    __instance.rightX = leftInput.x;
                    __instance.rightY = leftInput.y;
                }
                else
                {
                    __instance.leftX  = leftInput.x;
                    __instance.leftY  = leftInput.y;
                    __instance.rightX = rightInput.x;
                    __instance.rightY = rightInput.y;
                }

                if ((settings.switchInvertX && PlayerController.Instance.IsSwitch) || (settings.regularInvertX && !PlayerController.Instance.IsSwitch))
                {
                    __instance.leftX  = -__instance.leftX;
                    __instance.rightX = -__instance.rightX;
                }

                if ((settings.switchInvertY && PlayerController.Instance.IsSwitch) || (settings.regularInvertY && !PlayerController.Instance.IsSwitch))
                {
                    __instance.leftY  = -__instance.leftY;
                    __instance.rightY = -__instance.rightY;
                }
            }
コード例 #4
0
        public override byte[] Format(InputStruct message)
        {
            var r_message = (WriteRequestSiemensInputStruct)message;

            byte[]       valueBytes        = BigEndianValueHelper.Instance.ObjectArrayToByteArray(r_message.WriteValue);
            const byte   protoId           = 0x32;
            const byte   rosctr            = 0x01;
            const ushort redId             = 0x0000;
            ushort       pduRef            = r_message.PduRef;
            const ushort parLg             = 14;                              // 参数字节数(2+12的倍数),目前仅为14
            ushort       datLg             = (ushort)(4 + valueBytes.Length); // 数据字节数
            const byte   serviceId         = 0x05;
            const byte   numberOfVariables = 1;
            const byte   variableSpec      = 0x12;
            const byte   vAddrLg           = 0x0A;
            const byte   syntaxId          = 0x10;
            const byte   typeR             = (byte)SiemensTypeCode.Byte;
            ushort       numberOfElements  = (ushort)valueBytes.Length;
            ushort       dbBlock           = r_message.DbBlock;
            byte         area      = r_message.Area;
            int          offsetBit = r_message.Offset * 8;

            byte[]     offsetBitBytes    = BigEndianValueHelper.Instance.GetBytes(offsetBit);
            const byte reserved          = 0x00;
            const byte type              = (byte)SiemensDataType.OtherAccess;
            ushort     numberOfWriteBits = (ushort)(valueBytes.Length * 8);

            return(Format(new byte[7], protoId, rosctr, redId, pduRef, parLg, datLg, serviceId, numberOfVariables
                          , variableSpec, vAddrLg, syntaxId, typeR, numberOfElements, dbBlock, area,
                          offsetBitBytes.Skip(1).ToArray(), reserved, type, numberOfWriteBits, valueBytes));
        }
コード例 #5
0
        public void ReadNoRefKeyInputOutput([Values] TestUtils.DeviceType deviceType)
        {
            InputStruct input = default;

            Setup(128, new LogSettings {
                MemorySizeBits = 22, SegmentSizeBits = 22, PageSizeBits = 10
            }, deviceType);
            uContext.ResumeThread();

            try
            {
                var key1 = new KeyStruct {
                    kfield1 = 13, kfield2 = 14
                };
                var value = new ValueStruct {
                    vfield1 = 23, vfield2 = 24
                };

                uContext.Upsert(ref key1, ref value, Empty.Default, 0);
                var status = uContext.Read(key1, input, out OutputStruct output, Empty.Default, 111);
                AssertCompleted(new(StatusCode.Found), status);

                // Verify the read data
                Assert.AreEqual(value.vfield1, output.value.vfield1);
                Assert.AreEqual(value.vfield2, output.value.vfield2);
                Assert.AreEqual(key1.kfield1, 13);
                Assert.AreEqual(key1.kfield2, 14);
            }
            finally
            {
                uContext.SuspendThread();
            }
        }
コード例 #6
0
        public void NativeInMemWriteRead([Values] TestUtils.DeviceType deviceType)
        {
            Setup(128, new LogSettings {
                PageSizeBits = 10, MemorySizeBits = 12, SegmentSizeBits = 22
            }, deviceType);
            uContext.ResumeThread();

            try
            {
                InputStruct  input  = default;
                OutputStruct output = default;

                var key1 = new KeyStruct {
                    kfield1 = 13, kfield2 = 14
                };
                var value = new ValueStruct {
                    vfield1 = 23, vfield2 = 24
                };

                uContext.Upsert(ref key1, ref value, Empty.Default, 0);
                var status = uContext.Read(ref key1, ref input, ref output, Empty.Default, 0);

                AssertCompleted(new (StatusCode.Found), status);
                Assert.AreEqual(value.vfield1, output.value.vfield1);
                Assert.AreEqual(value.vfield2, output.value.vfield2);
            }
            finally
            {
                uContext.SuspendThread();
            }
        }
コード例 #7
0
        public void Move(ref PhysicsVelocity rb, ref PhysicsMass mass, ref InputStruct input, ref PhysicsControllerStruct playerData, ref LocalToWorld toWorld, ref Rotation rot, ref Translation trans)
        {
            float3 targetVelocity = new float3();
            float  speed          = 9;
            float  gravity        = 4;

            //Set target to input velocity
            targetVelocity.x = input.move.x;
            targetVelocity.z = input.move.y;

            //Calculate how fast we should be moving
            targetVelocity  = TransformDirection(toWorld.Value, targetVelocity); //Change from local space to world space
            targetVelocity *= speed * deltaTime * 100;

            //Apply a force that attempts to reach our target velocity
            float3 velocityChange = (targetVelocity - rb.Linear);

            velocityChange.y = -gravity * deltaTime * 10; //Apply gravity to the player

            //Mouse movement
            rb.Angular.y = -input.mouseX * 2; //* deltaTime;

            mass.InverseInertia[0] = 0;
            mass.InverseInertia[2] = 0;

            if (playerData.isGrounded && input.jump && playerData.timeSinceLastJump > .1f)
            {
                velocityChange.y             = 10;
                playerData.timeSinceLastJump = 0;
            }

            playerData.timeSinceLastJump += deltaTime;

            rb.ApplyLinearImpulse(mass, velocityChange);
        }
コード例 #8
0
        public void SessionTest4()
        {
            using var session1 = fht.NewSession(new Functions());
            using var session2 = fht.NewSession(new Functions());
            var t1 = Task.CompletedTask.ContinueWith((t) =>
            {
                InputStruct input   = default;
                OutputStruct output = default;

                var key1 = new KeyStruct {
                    kfield1 = 14, kfield2 = 15
                };
                var value1 = new ValueStruct {
                    vfield1 = 24, vfield2 = 25
                };

                session1.Upsert(ref key1, ref value1, Empty.Default, 0);
                var status = session1.Read(ref key1, ref input, ref output, Empty.Default, 0);

                if (status.IsPending)
                {
                    session1.CompletePendingWithOutputs(out var outputs, wait: true);
                    (status, output) = GetSinglePendingResult(outputs);
                }

                Assert.IsTrue(status.Found);
                Assert.AreEqual(value1.vfield1, output.value.vfield1);
                Assert.AreEqual(value1.vfield2, output.value.vfield2);
            });

            var t2 = Task.CompletedTask.ContinueWith((t) =>
            {
                InputStruct input   = default;
                OutputStruct output = default;

                var key2 = new KeyStruct {
                    kfield1 = 15, kfield2 = 16
                };
                var value2 = new ValueStruct {
                    vfield1 = 25, vfield2 = 26
                };

                session2.Upsert(ref key2, ref value2, Empty.Default, 0);

                var status = session2.Read(ref key2, ref input, ref output, Empty.Default, 0);

                if (status.IsPending)
                {
                    session2.CompletePendingWithOutputs(out var outputs, wait: true);
                    (status, output) = GetSinglePendingResult(outputs);
                }

                Assert.IsTrue(status.Found);
                Assert.AreEqual(value2.vfield1, output.value.vfield1);
                Assert.AreEqual(value2.vfield2, output.value.vfield2);
            });

            t1.Wait();
            t2.Wait();
        }
コード例 #9
0
ファイル: OpcProtocal.cs プロジェクト: ajeebkp23/Modbus.Net
        public override byte[] Format(InputStruct message)
        {
            var r_message = (WriteRequestOpcInputStruct)message;

            byte[] tag = Encoding.UTF8.GetBytes(r_message.Tag);
            return(Format((byte)0x00, tag, (int)0x00ffff00, r_message.SetValue.GetType().FullName, (int)0x00ffff00, r_message.SetValue));
        }
コード例 #10
0
        public void SessionTest1()
        {
            using var session = fht.NewSession(new Functions());
            InputStruct  input  = default;
            OutputStruct output = default;

            var key1 = new KeyStruct {
                kfield1 = 13, kfield2 = 14
            };
            var value = new ValueStruct {
                vfield1 = 23, vfield2 = 24
            };

            session.Upsert(ref key1, ref value, Empty.Default, 0);
            var status = session.Read(ref key1, ref input, ref output, Empty.Default, 0);

            if (status.IsPending)
            {
                session.CompletePendingWithOutputs(out var outputs, wait: true);
                (status, output) = GetSinglePendingResult(outputs);
            }

            Assert.IsTrue(status.Found);
            Assert.AreEqual(value.vfield1, output.value.vfield1);
            Assert.AreEqual(value.vfield2, output.value.vfield2);
        }
コード例 #11
0
        public override byte[] Format(InputStruct message)
        {
            var          r_message         = (ReadRequestSiemensInputStruct)message;
            const byte   protoId           = 0x32;
            const byte   rosctr            = 0x01;
            const ushort redId             = 0x0000;
            ushort       pduRef            = r_message.PduRef;
            const ushort parLg             = 14; // 参数字节数(2+12的倍数),目前仅为14
            const ushort datLg             = 0;  // 数据字节数
            const byte   serviceId         = 0x04;
            const byte   numberOfVariables = 1;
            const byte   variableSpec      = 0x12;
            const byte   vAddrLg           = 0x0A;
            const byte   syntaxId          = 0x10;
            byte         type             = r_message.TypeCode;
            ushort       numberOfElements = r_message.NumberOfElements;
            ushort       dbBlock          = r_message.DbBlock;
            byte         area             = r_message.Area;
            int          offsetBit        = r_message.Offset * 8;

            byte[] offsetBitBytes = BigEndianValueHelper.Instance.GetBytes(offsetBit);
            return(Format(new byte[7], protoId, rosctr, redId, pduRef, parLg, datLg, serviceId, numberOfVariables
                          , variableSpec, vAddrLg, syntaxId, type, numberOfElements, dbBlock, area,
                          offsetBitBytes.Skip(1).ToArray()));
        }
コード例 #12
0
        public void SessionTest3()
        {
            using var session = fht.NewSession(new Functions());
            Task.CompletedTask.ContinueWith((t) =>
            {
                InputStruct input   = default;
                OutputStruct output = default;

                var key1 = new KeyStruct {
                    kfield1 = 13, kfield2 = 14
                };
                var value = new ValueStruct {
                    vfield1 = 23, vfield2 = 24
                };

                session.Upsert(ref key1, ref value, Empty.Default, 0);
                var status = session.Read(ref key1, ref input, ref output, Empty.Default, 0);

                if (status == Status.PENDING)
                {
                    session.CompletePending(true);
                }
                else
                {
                    Assert.AreEqual(Status.OK, status);
                }

                Assert.AreEqual(value.vfield1, output.value.vfield1);
                Assert.AreEqual(value.vfield2, output.value.vfield2);
            }).Wait();
        }
コード例 #13
0
ファイル: UDPClient.cs プロジェクト: Rohit981/Honours-Project
    void RecievedTime(InputStruct msg)
    {
        if (msg.ObjectID == lobbyUDP.teamID)
        {
            LocalInputRecievetime      = msg.ClientTime;
            InputRecievedTimeText.text = "Recieved Time:" + LocalInputRecievetime.ToString();

            if (StartPredictng == true)
            {
                if (lobbyUDP.teamID == 1)
                {
                    newPlayer2.IsPredicting = true;
                    StartPredictng          = false;
                }

                if (lobbyUDP.teamID == 2)
                {
                    newPlayer1.IsPredicting = true;
                    StartPredictng          = false;
                }
            }
        }
        else
        {
            OtherInputRecievetime      = msg.ClientTime;
            OtherRecievedTimeText.text = "OtherRecievedTime:" + OtherInputRecievetime.ToString();

            StartRewinding = true;
        }
    }
コード例 #14
0
        public override byte[] Format(InputStruct message)
        {
            var r_message = (GetSystemTimeModbusInputStruct)message;

            return(Format(r_message.BelongAddress, r_message.FunctionCode,
                          r_message.StartAddress, r_message.GetCount));
        }
コード例 #15
0
 public override async Task<OutputStruct> SendReceiveAsync(ProtocalUnit unit, InputStruct content)
 {
     if (!ProtocalLinker.IsConnected)
     {
         if (connectTryCount > 10) return null;
         return await await ConnectAsync().ContinueWith(answer => answer.Result ? base.SendReceiveAsync(unit, content) : null);
     }
     return await base.SendReceiveAsync(unit, content);
 }
コード例 #16
0
        public override byte[] Format(InputStruct message)
        {
            var r_message = (SetSystemTimeModbusInputStruct)message;

            return(Format(r_message.BelongAddress, r_message.FunctionCode,
                          r_message.StartAddress, r_message.WriteCount, r_message.WriteByteCount, r_message.Year,
                          r_message.Day,
                          r_message.Month, r_message.Hour, r_message.Second, r_message.Minute, r_message.Millisecond));
        }
コード例 #17
0
        public override byte[] Format(InputStruct message)
        {
            var r_message = (WriteDataModbusInputStruct)message;

            byte[] formattingBytes = Format(r_message.BelongAddress, r_message.FunctionCode,
                                            r_message.StartAddress, r_message.WriteCount, r_message.WriteByteCount, r_message.WriteValue);
            formattingBytes[6] = (byte)(formattingBytes.Length - 7);
            return(formattingBytes);
        }
コード例 #18
0
    // Update is called once per frame
    void Update()
    {
        //We can get the struct easily
        InputStruct s = mInterface.Value;

        //This does not work:
        //mInterface.Value = s;
        //We cannot write to the value. Well we can, but nothing with actually happen.
        //It doesn't update the value from the monobehaviour
    }
コード例 #19
0
 public void ResetInputs()
 {
     inputsThisFrame = 0;
     totalInputs     = new InputStruct()
     {
         hasVertical   = false,
         hasHorizontal = false,
         horizontal    = 0,
         vertical      = 0
     };
 }
コード例 #20
0
 public void UpdateInputs()
 {
     totalInputs = new InputStruct()
     {
         hasVertical   = totalInputs.hasVertical || Input.GetAxis("Jump") >= 0.25f,
         hasHorizontal = totalInputs.hasHorizontal || (Mathf.Abs(Input.GetAxis("Horizontal")) > 0.1f),
         horizontal    = totalInputs.horizontal + Input.GetAxis("Horizontal"),
         vertical      = totalInputs.vertical + Input.GetAxis("Jump")
     };
     inputsThisFrame++;
 }
コード例 #21
0
            static bool Prefix(InputThread __instance)
            {
                int          _pos           = Traverse.Create(__instance).Field("_pos").GetValue <int>();
                GamePadState state          = Traverse.Create(__instance).Field("state").GetValue <GamePadState>();
                InputStruct  _lastFrameData = Traverse.Create(__instance).Field("_lastFrameData").GetValue <InputStruct>();

                if (_pos < __instance._maxLength)
                {
                    if (state.IsConnected)
                    {
                        __instance.inputsIn[_pos].leftX  = __instance.leftXFilter.Filter((double)state.ThumbSticks.Left.X);
                        __instance.inputsIn[_pos].leftY  = __instance.leftYFilter.Filter((double)state.ThumbSticks.Left.Y);
                        __instance.inputsIn[_pos].rightX = __instance.rightXFilter.Filter((double)state.ThumbSticks.Right.X);
                        __instance.inputsIn[_pos].rightY = __instance.rightYFilter.Filter((double)state.ThumbSticks.Right.Y);
                        RotateInput(ref __instance.inputsIn[_pos]);
                        __instance.inputsIn[_pos].time      = DateTime.UtcNow.Ticks;
                        __instance.inputsIn[_pos].leftXVel  = Traverse.Create(__instance).Method("GetVel", __instance.inputsIn[_pos].leftX, _lastFrameData.leftX, __instance.inputsIn[_pos].time, _lastFrameData.time).GetValue <float>();
                        __instance.inputsIn[_pos].leftYVel  = Traverse.Create(__instance).Method("GetVel", __instance.inputsIn[_pos].leftY, _lastFrameData.leftY, __instance.inputsIn[_pos].time, _lastFrameData.time).GetValue <float>();
                        __instance.inputsIn[_pos].rightXVel = Traverse.Create(__instance).Method("GetVel", __instance.inputsIn[_pos].rightX, _lastFrameData.rightX, __instance.inputsIn[_pos].time, _lastFrameData.time).GetValue <float>();
                        __instance.inputsIn[_pos].rightYVel = Traverse.Create(__instance).Method("GetVel", __instance.inputsIn[_pos].rightY, _lastFrameData.rightY, __instance.inputsIn[_pos].time, _lastFrameData.time).GetValue <float>();
                        _lastFrameData.leftX  = __instance.inputsIn[_pos].leftX;
                        _lastFrameData.leftY  = __instance.inputsIn[_pos].leftY;
                        _lastFrameData.rightX = __instance.inputsIn[_pos].rightX;
                        _lastFrameData.rightY = __instance.inputsIn[_pos].rightY;
                        _lastFrameData.time   = __instance.inputsIn[_pos].time;
                        Traverse.Create(__instance).Field("_lastFrameData").SetValue(_lastFrameData);
                        Traverse.Create(__instance).Field("_pos").SetValue(_pos + 1);
                        return(false);
                    }
                    if (__instance.inputController == null || Traverse.Create(__instance.inputController).Field("player").GetValue() == null)
                    {
                        return(false);
                    }
                    __instance.inputsIn[_pos].leftX  = __instance.leftXFilter.Filter((double)((Mathf.Abs(Traverse.Create(__instance).Method("GetAxisLX").GetValue <float>()) < 0.1f) ? 0f : Traverse.Create(__instance).Method("GetAxisLX").GetValue <float>()));
                    __instance.inputsIn[_pos].leftY  = __instance.leftYFilter.Filter((double)Traverse.Create(__instance).Method("GetAxisLY").GetValue <float>());
                    __instance.inputsIn[_pos].rightX = __instance.rightXFilter.Filter((double)((Mathf.Abs(Traverse.Create(__instance).Method("GetAxisRX").GetValue <float>()) < 0.1f) ? 0f : Traverse.Create(__instance).Method("GetAxisRX").GetValue <float>()));
                    __instance.inputsIn[_pos].rightY = __instance.rightYFilter.Filter((double)Traverse.Create(__instance).Method("GetAxisRY").GetValue <float>());
                    RotateInput(ref __instance.inputsIn[_pos]);
                    __instance.inputsIn[_pos].time      = DateTime.UtcNow.Ticks;
                    __instance.inputsIn[_pos].leftXVel  = Traverse.Create(__instance).Method("GetVel", __instance.inputsIn[_pos].leftX, _lastFrameData.leftX, __instance.inputsIn[_pos].time, _lastFrameData.time).GetValue <float>();
                    __instance.inputsIn[_pos].leftYVel  = Traverse.Create(__instance).Method("GetVel", __instance.inputsIn[_pos].leftY, _lastFrameData.leftY, __instance.inputsIn[_pos].time, _lastFrameData.time).GetValue <float>();
                    __instance.inputsIn[_pos].rightXVel = Traverse.Create(__instance).Method("GetVel", __instance.inputsIn[_pos].rightX, _lastFrameData.rightX, __instance.inputsIn[_pos].time, _lastFrameData.time).GetValue <float>();
                    __instance.inputsIn[_pos].rightYVel = Traverse.Create(__instance).Method("GetVel", __instance.inputsIn[_pos].rightY, _lastFrameData.rightY, __instance.inputsIn[_pos].time, _lastFrameData.time).GetValue <float>();
                    _lastFrameData.leftX  = __instance.inputsIn[_pos].leftX;
                    _lastFrameData.leftY  = __instance.inputsIn[_pos].leftY;
                    _lastFrameData.rightX = __instance.inputsIn[_pos].rightX;
                    _lastFrameData.rightY = __instance.inputsIn[_pos].rightY;
                    _lastFrameData.time   = __instance.inputsIn[_pos].time;
                    Traverse.Create(__instance).Field("_lastFrameData").SetValue(_lastFrameData);
                    Traverse.Create(__instance).Field("_pos").SetValue(_pos + 1);
                }
                return(false);
            }
コード例 #22
0
        public void SessionTest2()
        {
            using (var session1 = fht.NewSession())
                using (var session2 = fht.NewSession())
                {
                    InputStruct  input  = default(InputStruct);
                    OutputStruct output = default(OutputStruct);

                    var key1 = new KeyStruct {
                        kfield1 = 14, kfield2 = 15
                    };
                    var value1 = new ValueStruct {
                        vfield1 = 24, vfield2 = 25
                    };
                    var key2 = new KeyStruct {
                        kfield1 = 15, kfield2 = 16
                    };
                    var value2 = new ValueStruct {
                        vfield1 = 25, vfield2 = 26
                    };

                    session1.Upsert(ref key1, ref value1, Empty.Default, 0);
                    session2.Upsert(ref key2, ref value2, Empty.Default, 0);

                    var status = session1.Read(ref key1, ref input, ref output, Empty.Default, 0);

                    if (status == Status.PENDING)
                    {
                        session1.CompletePending(true);
                    }
                    else
                    {
                        Assert.IsTrue(status == Status.OK);
                    }

                    Assert.IsTrue(output.value.vfield1 == value1.vfield1);
                    Assert.IsTrue(output.value.vfield2 == value1.vfield2);

                    status = session2.Read(ref key2, ref input, ref output, Empty.Default, 0);

                    if (status == Status.PENDING)
                    {
                        session2.CompletePending(true);
                    }
                    else
                    {
                        Assert.IsTrue(status == Status.OK);
                    }

                    Assert.IsTrue(output.value.vfield1 == value2.vfield1);
                    Assert.IsTrue(output.value.vfield2 == value2.vfield2);
                }
        }
コード例 #23
0
        public void SessionTest2()
        {
            using var session1 = fht.NewSession(new Functions());
            using var session2 = fht.NewSession(new Functions());
            InputStruct  input  = default;
            OutputStruct output = default;

            var key1 = new KeyStruct {
                kfield1 = 14, kfield2 = 15
            };
            var value1 = new ValueStruct {
                vfield1 = 24, vfield2 = 25
            };
            var key2 = new KeyStruct {
                kfield1 = 15, kfield2 = 16
            };
            var value2 = new ValueStruct {
                vfield1 = 25, vfield2 = 26
            };

            session1.Upsert(ref key1, ref value1, Empty.Default, 0);
            session2.Upsert(ref key2, ref value2, Empty.Default, 0);

            var status = session1.Read(ref key1, ref input, ref output, Empty.Default, 0);

            if (status == Status.PENDING)
            {
                session1.CompletePending(true);
            }
            else
            {
                Assert.AreEqual(Status.OK, status);
            }

            Assert.AreEqual(value1.vfield1, output.value.vfield1);
            Assert.AreEqual(value1.vfield2, output.value.vfield2);

            status = session2.Read(ref key2, ref input, ref output, Empty.Default, 0);

            if (status == Status.PENDING)
            {
                session2.CompletePending(true);
            }
            else
            {
                Assert.AreEqual(Status.OK, status);
            }

            Assert.AreEqual(value2.vfield1, output.value.vfield1);
            Assert.AreEqual(value2.vfield2, output.value.vfield2);
        }
コード例 #24
0
ファイル: PlayerMovement.cs プロジェクト: Krowded/TimePuzzler
        void Start()
        {
            InputArray    = new InputStruct[maxSize];
            MovementArray = new Vector3[maxSize];
            RotationArray = new Quaternion[maxSize];

            //Empty input to start with
            CurrentInput = new InputStruct(0, 0, keyEnum.None);

            //Set variables
            Speed              = 5;
            RotationSpeed      = 1;
            JumpStrength       = 5;
            LandedVelocity     = 0.1f;
            LandedDistance     = 0.6f;
            MarginForJumpReset = 0.3f;
            JumpVelocityMargin = 0.05f;

            //Initialize index
            index         = 0;
            maxIndexSoFar = 0;

            //Get and set transformables
            rb = gameObject.GetComponent <Rigidbody>();
            tf = gameObject.GetComponent <Transform>();
            StartingPosition  = tf.position;
            MovementArray [0] = StartingPosition;
            RotationArray [0] = tf.rotation;


            //Set color of model
            for (int i = 0; i < transform.childCount; ++i)
            {
                Renderer temp = transform.GetChild(i).GetComponent <Renderer>();
                if (temp != null)
                {
                    temp.material.color = color;
                }
                ParticleSystem tempP = transform.GetChild(i).GetComponent <ParticleSystem> ();
                if (tempP != null)
                {
                    partic = tempP;
                    ParticleSystem.MainModule tempMain = partic.main;
                    tempMain.startColor = color;
                }
            }
        }
コード例 #25
0
        public override byte[] Format(InputStruct message)
        {
            var          r_message  = (EstablishAssociationSiemensInputStruct)message;
            const byte   protoId    = 0x32;
            const byte   rosctr     = 0x01;
            const ushort redId      = 0x0000;
            ushort       pduRef     = r_message.PduRef;
            const ushort parLg      = 0x0008;
            const ushort datLg      = 0x0000;
            const byte   serviceId  = 0xf0;
            const byte   reserved   = 0x00;
            ushort       maxCalling = r_message.MaxCalling;
            ushort       maxCalled  = r_message.MaxCalled;
            ushort       maxPdu     = r_message.MaxPdu;

            return(Format(new byte[7], protoId, rosctr, redId, pduRef, parLg, datLg, serviceId, reserved, maxCalling,
                          maxCalled, maxPdu));
        }
コード例 #26
0
ファイル: UDPClient.cs プロジェクト: Rohit981/Honours-Project
    // Start is called before the first frame update
    void Start()
    {
        lobbyUDP = GetComponent <LobbyUDPClient>();

        //ObjectIDText =  mainCanvas.GetComponentInChildren<Text>();
        //JumpInputText =  mainCanvas.GetComponentInChildren<Text>();

        SendCounter = 0f;

        SpawnPlayers();

        inputMsg = new InputStruct();

        networkManager = FindObjectOfType <NetworkManager>();


        timeLastFrame = Time.realtimeSinceStartup;
    }
コード例 #27
0
ファイル: PlayerMovement.cs プロジェクト: Krowded/TimePuzzler
        void FixedUpdate()
        {
            if (TimeOn)
            {
                if (Selected)
                {
                    if (rb.isKinematic)
                    {
                        rb.isKinematic = false;
                    }
                    if (partic.isStopped)
                    {
                        partic.Play();
                    }

                    //If this is the selected unit, store current input keys
                    maxIndexSoFar     = Mathf.Max(maxIndexSoFar, index);
                    InputArray[index] = CurrentInput;
                    index++;
                    UpdateMovement();
                }
                else
                {
                    if (!rb.isKinematic)
                    {
                        rb.isKinematic = true;
                    }
                    if (!partic.isStopped)
                    {
                        partic.Stop();
                    }

                    if (index < maxIndexSoFar)
                    {
                        tf.position = MovementArray [index];
                        tf.rotation = RotationArray [index];
                    }

                    //If not selected, extract stored keys
                    CurrentInput = InputArray[index];
                    index++;
                }
            }
        }
コード例 #28
0
        public override void HandleInput(InputStruct input)
        {
            switch (input.inputEvent)
            {
            case PRESS_S:
                menuPanel.GoDown();
                break;

            case PRESS_DOWN:
                menuPanel.GoDown();
                break;

            case PRESS_W:
                menuPanel.GoUp();
                break;

            case PRESS_UP:
                menuPanel.GoUp();
                break;

            case PRESS_SPACE:
                menuPanel.Act();
                break;

            case PRESS_ENTER:
                menuPanel.Act();
                break;

            case PRESS_A:
                GameContext.Instance.ChangeResolution(1280, 720);
                Camera.Instance.SetSubScreenDimensions(0, 0, 1280, 720);
                break;

            case PRESS_D:
                GameContext.Instance.ChangeResolution(1920, 1080);
                Camera.Instance.SetSubScreenDimensions(0, 0, 1920, 1080);
                break;

            case PRESS_P:
                GameContext.Instance.ToggleFullScreen();
                break;
            }
        }
コード例 #29
0
ファイル: SimenseProtocal.cs プロジェクト: sndp60/Modbus.Net
 public override byte[] Format(InputStruct message)
 {
     var r_message = (CreateReferenceSimenseInputStruct)message;
     const ushort head = 0x0300;
     const ushort len = 0x0016;
     const byte contentLen = 0x11;
     const byte typeCode = 0xe0;
     const ushort dstRef = 0x0000;
     const ushort srcRef = 0x000c;
     const byte reserved = 0x00;
     const ushort tdpuSizeCode = 0xc001;
     byte tdpuSizeContent = r_message.TdpuSize;
     const ushort srcTsapCode = 0xc102;
     ushort srcTsapContent = r_message.TsapSrc;
     const ushort dstTsapCode = 0xc202;
     ushort dstTsapContent = r_message.TsapDst;
     return Format(head, len, contentLen, typeCode, dstRef, srcRef, reserved, tdpuSizeCode, tdpuSizeContent,
         srcTsapCode, srcTsapContent, dstTsapCode, dstTsapContent);
 }
コード例 #30
0
        public override byte[] Format(InputStruct message)
        {
            var          r_message       = (CreateReferenceSiemensInputStruct)message;
            const ushort head            = 0x0300;
            const ushort len             = 0x0016;
            const byte   contentLen      = 0x11;
            const byte   typeCode        = 0xe0;
            const ushort dstRef          = 0x0000;
            const ushort srcRef          = 0x000c;
            const byte   reserved        = 0x00;
            const ushort tdpuSizeCode    = 0xc001;
            byte         tdpuSizeContent = r_message.TdpuSize;
            const ushort srcTsapCode     = 0xc102;
            ushort       srcTsapContent  = r_message.TsapSrc;
            const ushort dstTsapCode     = 0xc202;
            ushort       dstTsapContent  = r_message.TsapDst;

            return(Format(head, len, contentLen, typeCode, dstRef, srcRef, reserved, tdpuSizeCode, tdpuSizeContent,
                          srcTsapCode, srcTsapContent, dstTsapCode, dstTsapContent));
        }
コード例 #31
0
ファイル: UDPClient.cs プロジェクト: Rohit981/Honours-Project
    static InputStruct[] ParseBytes(byte[] receiveBytes)
    {
        int messageID = receiveBytes[0]; //The first byte is the typoe of message


        InputStruct[] msgArray = new InputStruct[receiveBytes[1]];   //Second byte is how many messages (for message type 0)

        //ServerTime = DeserializeStruct<int>(receiveBytes, 2);    //3-7 bytes are the timein milliseconds

        for (int i = 0; i < msgArray.Length; i++)
        {
            msgArray[i] = DeserializeStruct <InputStruct>(receiveBytes, i * Marshal.SizeOf(typeof(InputStruct)));
        }



        print("Jump Button Recieved");


        switch (messageID)
        {
        case 0:
            //For each message we've been told to receive, unpack it.
            break;

        case 1:
            //print("Shooting");

            break;

        case 2:
            break;

        case 3:
            int winnerID;
            int score;
            int time;
            break;
        }
        return(msgArray);
    }
コード例 #32
0
    public InputStruct PollInput()
    {
        InputStruct input = new InputStruct();



        if(Input.GetAxisRaw("Vertical") > 0)
        {
            input.upDirection = true;
        }

        if(Input.GetAxisRaw("Vertical") < 0)
        {
            input.downDirection = true;
        }

        if(Input.GetAxisRaw("Horizontal") < 0)
        {
            input.leftDirection = true;
        }

        if(Input.GetAxisRaw("Horizontal") > 0)
        {
            input.rightDirection = true;
        }

        if(Input.GetButton("Button1"))
        {
            input.action1 = true;
        }

        if(Input.GetButton("Button2"))
        {
            input.action2 = true;
        }

        return input;
    }
コード例 #33
0
ファイル: BaseProtocal.cs プロジェクト: sndp60/Modbus.Net
 /// <summary>
 /// 发送协议,通过传入需要使用的协议内容和输入结构
 /// </summary>
 /// <param name="unit"></param>
 /// <param name="content"></param>
 /// <returns></returns>
 public virtual OutputStruct SendReceive(ProtocalUnit unit, InputStruct content)
 {
     int t = 0;
     //如果为特别处理协议的话,跳过协议扩展收缩          
     var formatContent = unit.Format(content);
     if (formatContent != null)
     {
         byte[] receiveContent;
         if (unit is SpecialProtocalUnit)
         {
             receiveContent = ProtocalLinker.SendReceiveWithoutExtAndDec(formatContent);
         }
         else
         {
             receiveContent = ProtocalLinker.SendReceive(formatContent);
         }
         if (receiveContent != null)
         {
             return unit.Unformat(receiveContent, ref t);
         }
     }
     return null;
 }
コード例 #34
0
        public void ReadAtAddressReadFlagsNone()
        {
            // Just functional test of ReadFlag so one device is enough
            deviceType = TestUtils.DeviceType.MLSD;

            Setup(128, new LogSettings {
                MemorySizeBits = 29
            }, deviceType);
            uContext.ResumeThread();

            try
            {
                InputStruct  input  = default;
                OutputStruct output = default;

                var key1 = new KeyStruct {
                    kfield1 = 13, kfield2 = 14
                };
                var value = new ValueStruct {
                    vfield1 = 23, vfield2 = 24
                };
                ReadOptions readOptions = new() { StartAddress = fht.Log.BeginAddress };

                uContext.Upsert(ref key1, ref value, Empty.Default, 0);
                var status = uContext.ReadAtAddress(ref input, ref output, ref readOptions, Empty.Default, 0);
                AssertCompleted(new(StatusCode.Found), status);

                Assert.AreEqual(value.vfield1, output.value.vfield1);
                Assert.AreEqual(value.vfield2, output.value.vfield2);
                Assert.AreEqual(key1.kfield1, 13);
                Assert.AreEqual(key1.kfield2, 14);
            }
            finally
            {
                uContext.SuspendThread();
            }
        }
コード例 #35
0
ファイル: SimenseProtocal.cs プロジェクト: sndp60/Modbus.Net
 public override byte[] Format(InputStruct message)
 {
     var r_message = (EstablishAssociationSimenseInputStruct) message;
     const byte protoId = 0x32;
     const byte rosctr = 0x01;
     const ushort redId = 0x0000;
     ushort pduRef = r_message.PduRef;
     const ushort parLg = 0x0008;
     const ushort datLg = 0x0000;
     const byte serviceId = 0xf0;
     const byte reserved = 0x00;
     ushort maxCalling = r_message.MaxCalling;
     ushort maxCalled = r_message.MaxCalled;
     ushort maxPdu = r_message.MaxPdu;
     return Format(new byte[7], protoId, rosctr, redId, pduRef, parLg, datLg, serviceId, reserved, maxCalling,
         maxCalled, maxPdu);
 }
コード例 #36
0
ファイル: ModbusProtocal.cs プロジェクト: sndp60/Modbus.Net
 public override byte[] Format(InputStruct message)
 {
     var r_message = (ReadDataModbusInputStruct)message;
     return Format(r_message.BelongAddress, r_message.FunctionCode,
         r_message.StartAddress, r_message.GetCount);
 }
コード例 #37
0
ファイル: SimenseProtocal.cs プロジェクト: sndp60/Modbus.Net
 public override byte[] Format(InputStruct message)
 {
     var r_message = (WriteRequestSimenseInputStruct) message;
     byte[] valueBytes = ValueHelper.Instance.ObjectArrayToByteArray(r_message.WriteValue);
     const byte protoId = 0x32;
     const byte rosctr = 0x01;
     const ushort redId = 0x0000;
     ushort pduRef = r_message.PduRef;
     const ushort parLg = 14; // 参数字节数(2+12的倍数),目前仅为14
     ushort datLg = (ushort)(4+valueBytes.Length); // 数据字节数
     const byte serviceId = 0x05;
     const byte numberOfVariables = 1;
     const byte variableSpec = 0x12;
     const byte vAddrLg = 0x0A;
     const byte syntaxId = 0x10;
     const byte typeR = (byte)SimenseTypeCode.Byte;
     ushort numberOfElements = (ushort)valueBytes.Length;
     ushort dbBlock = r_message.DbBlock;
     byte area = r_message.Area;
     int offsetBit = r_message.Offset * 8;
     byte[] offsetBitBytes = ValueHelper.Instance.GetBytes(offsetBit);
     const byte reserved = 0x00;
     const byte type = (byte)SimenseDataType.OtherAccess;
     ushort numberOfWriteBits = (ushort)(valueBytes.Length*8);
     return Format(new byte[7], protoId, rosctr, redId, pduRef, parLg, datLg, serviceId, numberOfVariables
         , variableSpec, vAddrLg, syntaxId, typeR, numberOfElements, dbBlock, area,
         offsetBitBytes.Skip(1).ToArray(), reserved, type, numberOfWriteBits, valueBytes);
 }
コード例 #38
0
ファイル: ModbusProtocal.cs プロジェクト: sndp60/Modbus.Net
 public override byte[] Format(InputStruct message)
 {
     var r_message = (WriteDataModbusInputStruct)message;
     byte[] formattingBytes = Format(r_message.BelongAddress, r_message.FunctionCode,
         r_message.StartAddress, r_message.WriteCount, r_message.WriteByteCount, r_message.WriteValue);
     formattingBytes[6] = (byte)(formattingBytes.Length - 7);
     return formattingBytes;
 }
コード例 #39
0
ファイル: ModbusProtocal.cs プロジェクト: sndp60/Modbus.Net
 public override byte[] Format(InputStruct message)
 {
     var r_message = (SetSystemTimeModbusInputStruct)message;
     return Format(r_message.BelongAddress, r_message.FunctionCode,
         r_message.StartAddress, r_message.WriteCount, r_message.WriteByteCount, r_message.Year,
         r_message.Day,
         r_message.Month, r_message.Hour, r_message.Second, r_message.Minute, r_message.Millisecond);
 }
コード例 #40
0
 public override OutputStruct SendReceive(ProtocalUnit unit, InputStruct content)
 {
     return AsyncHelper.RunSync(() => SendReceiveAsync(unit, content));
 }
コード例 #41
0
ファイル: SimenseProtocal.cs プロジェクト: sndp60/Modbus.Net
 public override byte[] Format(InputStruct message)
 {
     throw new NotImplementedException();
 }
コード例 #42
0
ファイル: ProtocalUnit.cs プロジェクト: sndp60/Modbus.Net
 /// <summary>
 /// 格式化,将输入结构转换为字节数组
 /// </summary>
 /// <param name="message"></param>
 /// <returns></returns>
 public abstract byte[] Format(InputStruct message);
コード例 #43
0
ファイル: MouseHelper.cs プロジェクト: drdax/Radio
		private static extern uint SendInput(uint iInputsCount, InputStruct[] inputs, int sizeOfInputStructure);
コード例 #44
0
 private async Task<OutputStruct> ForceSendReceiveAsync(ProtocalUnit unit, InputStruct content)
 {
     return await base.SendReceiveAsync(unit, content);
 }
コード例 #45
0
ファイル: FBoxProtocal.cs プロジェクト: sndp60/Modbus.Net
 public override byte[] Format(InputStruct message)
 {
     var r_message = (ReadRequestFBoxInputStruct) message;
     return Format(r_message.Area, r_message.Address, r_message.GetCount);
 }
コード例 #46
0
ファイル: SimenseProtocal.cs プロジェクト: sndp60/Modbus.Net
 public override byte[] Format(InputStruct message)
 {
     var r_message = (ReadRequestSimenseInputStruct) message;
     const byte protoId = 0x32;
     const byte rosctr = 0x01;
     const ushort redId = 0x0000;
     ushort pduRef = r_message.PduRef;
     const ushort parLg = 14; // 参数字节数(2+12的倍数),目前仅为14
     const ushort datLg = 0; // 数据字节数
     const byte serviceId = 0x04;
     const byte numberOfVariables = 1;
     const byte variableSpec = 0x12;
     const byte vAddrLg = 0x0A;
     const byte syntaxId = 0x10;
     byte type = r_message.TypeCode;
     ushort numberOfElements = r_message.NumberOfElements;
     ushort dbBlock = r_message.DbBlock;
     byte area = r_message.Area;
     int offsetBit = r_message.Offset*8;
     byte[] offsetBitBytes = ValueHelper.Instance.GetBytes(offsetBit);
     return Format(new byte[7], protoId, rosctr, redId, pduRef, parLg, datLg, serviceId, numberOfVariables
         , variableSpec, vAddrLg, syntaxId, type, numberOfElements, dbBlock, area,
         offsetBitBytes.Skip(1).ToArray());
 }