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