Exemplo n.º 1
0
        public void GetData(object sender, EventArgs e)
        {
            _emitData = _serialPort.EmitDataMtrResponse;


            if (_emitData.EmitCardNumber.Equals(_lastReadEmitCardNumber))
            {
                return;
            }

            BeginInvoke(new MethodInvoker(delegate
            {
                //TODO check here that all check point found
                //CheckCourses(_emitData);
                var time    = GetTime(_emitData.CheckPoints);
                time        = _emitData.FinalResult;
                var ranking = GetRanking(time);
                var name    = "";
                using (var form = new NewResult(time, ranking))
                {
                    var result = form.ShowDialog();
                    if (result == DialogResult.OK)
                    {
                        name = form.returnName;
                    }
                }

                if (name != null)
                {
                    WriteToFile(time, name, _emitData.EmitCardNumber);
                }

                ReadResultsToDataGridView();
            }));
            _lastReadEmitCardNumber = _emitData.EmitCardNumber;
        }
Exemplo n.º 2
0
        private void HandleMTRResponseMessage(List <int> rxByteList)
        {
            SaveToFile();

            var         emit        = rxByteList[4].ToString("X") + rxByteList[3].ToString("X") + rxByteList[2].ToString("X");
            MTRResponse mtrResponse = new MTRResponse
            {
                EmitCardNumber   = int.Parse(emit, NumberStyles.HexNumber),
                NotInUse1        = rxByteList[5],
                EmitCardProdWeek = rxByteList[6],
                EmitCardProdYear = rxByteList[7],
                NotInUse2        = rxByteList[8]
            };
            var cardCheckByte = rxByteList[9];

            if (!CheckModulo(rxByteList.GetRange(2, 8)))
            {
                IncreaseCommunicationErrorsCount();
                throw new Exception("Emit card checksum failed");
            }

            List <MTRDataCheckPoint> checkPoints = new List <MTRDataCheckPoint>();

            // Try to find starting zeros
            // ie. three zeros in a row
            var moveBitsFromStart = 10;

            if (rxByteList[10] == 0 && rxByteList[11] == 0 && rxByteList[12] == 0)
            {
                moveBitsFromStart = 10;
            }
            else if (rxByteList[11] == 0 && rxByteList[12] == 0 && rxByteList[13] == 0)
            {
                moveBitsFromStart = 11;
            }
            else if (rxByteList[12] == 0 && rxByteList[13] == 0 && rxByteList[14] == 0)
            {
                moveBitsFromStart = 12;
            }

            for (int checkPointNo = 0; checkPointNo < 50; checkPointNo++)
            {
                Console.WriteLine("Move bits = " + moveBitsFromStart);
                var checkPointDataPosition = 3 * checkPointNo + moveBitsFromStart;
                var codeN = rxByteList[checkPointDataPosition];
                var timeN = int.Parse(rxByteList[checkPointDataPosition + 2].ToString("X") + rxByteList[checkPointDataPosition + 1].ToString("X"), NumberStyles.HexNumber);

                Console.WriteLine(">>" + codeN);
                if (codeN == 100)
                {
                    mtrResponse.FinalResult = timeN;
                }
                checkPoints.Add(new MTRDataCheckPoint {
                    CodeN = codeN, TimeN_s = timeN
                });
            }

            if (_lastEmitRead != mtrResponse.EmitCardNumber)
            {
                mtrResponse.CheckPoints = checkPoints;
                EmitDataMtrResponse     = mtrResponse;
                OnEmitDataChanged();
            }
            else
            {
                _lastEmitRead = mtrResponse.EmitCardNumber;
            }
        }
Exemplo n.º 3
0
 public static void CheckCourses(MTRResponse emitData)
 {
 }