Example #1
0
        /// <summary>
        /// Пакет на обработку
        /// </summary>
        /// <param name="packet">Поступивший пакет</param>
        public void Packet(string packet)
        {
            bool blocked = false;

            try
            {
                if (packetSyncMutex.WaitOne(defaultTimeWaitOnPacketMutex))
                {
                    blocked = true;
                    if (biosTranslated)
                    {
                        bios.Packet(packet);
                    }
                    else
                    {
                        //throw new Exception();
                        if (proto.PageAdress(packet) != 0)
                        {
                            return;
                        }

                        string data           = proto.GetData(packet);
                        int    offsetInPacket = currentState.SelectedCalibrationTable.OffsetInPacket * 2;

                        if (data.Length > offsetInPacket + 4)
                        {
                            ushort calibrated = ushort.Parse(data.Substring(currentState.SelectedCalibrationTable.OffsetInPacket * 2, 4),
                                                             NumberStyles.AllowHexSpecifier);

                            ushort physic = (ushort)currentState.SelectedCalibrationTable.CalibrationTable.CalculateFromInPacket(calibrated);

                            gr.InsertPoint(new Point(physic, calibrated));
                            onShown(null, null);

                            Invoke(textInserter, textBoxFromDevicePhysic, physic.ToString());
                            Invoke(textInserter, textBoxFromDeviceCalibrated, calibrated.ToString());
                        }
                    }
                    blocked = false;
                    packetSyncMutex.ReleaseMutex();
                }
            }
            finally
            {
                if (blocked)
                {
                    packetSyncMutex.ReleaseMutex();
                }
            }
        }