示例#1
0
        private MTRDataMessage ConvertDataStringToTypeData(MTRDataMessageString dataString)
        {
            var mtrData = new MTRDataMessage();

            try
            {
                mtrData.Preamble    = int.Parse(dataString.Preamble);       // Ensure the message start with preamble
                mtrData.PackageSize = int.Parse(dataString.PackageSize);    // Packet size, should be 230 when datamessage
                mtrData.PackageType = dataString.PackageType[0];            // Packet type, should be M as MTR message
                mtrData.MtrSerialNo = int.Parse(dataString.MtrSerialNo);    //serialNumber of the MTR reader
                mtrData.TimeStamp   = DateTime.Parse(dataString.TimeStamp); // binary year, month day, hour, minute, second
                mtrData.Time_ms     = long.Parse(dataString.Time_ms);       // Time is not yet in use
                mtrData.PackageNo   = int.Parse(dataString.PackageNo);      // counter from 1 to up
                mtrData.CardId      = int.Parse(dataString.CardId);         // binary, least sign first
                // Next tree is used when data retrived from history
                //mtrData.ProductWeek = dataString.ProductWeek;
                //mtrData.ProductYear = dataString.ProductYear;
                //mtrData.ECardHeadSum = dataString.ECardHeadSum;

                foreach (string[] checkPonit_s in dataString.CheckPoints)
                {
                    var checkPoint = new MTRDataCheckPoint();
                    checkPoint.CodeN      = int.Parse(checkPonit_s[0]);
                    checkPoint.TimeN_s    = int.Parse(checkPonit_s[1]);
                    checkPoint.InfoField  = checkPonit_s[2];
                    checkPoint.CheckSum   = int.Parse(checkPonit_s[3]);
                    checkPoint.FillerNull = int.Parse(checkPonit_s[4]);
                    mtrData.CheckPoints.Add(checkPoint);
                }
            }
            catch (Exception ex)
            {
                return(null);
            }

            return(mtrData);
        }
示例#2
0
        private void HandleMTRStatusMessage(string data)
        {
            //MTR--datamessage
            //    ----------------
            //Fieldname     # bytes
            //Preamble      4 FFFFFFFF(hex)(4 "FF"'s never occur "inside" a message).
            //Package -size 1 number of bytes excluding preamble(= 230)
            //Package -type 1 'M' as "MTR-datamessage".
            //MTR - id      2 Serial number of MTR2; Least significant byte first
            //Timestamp     6 Binary Year, Month, Day, Hour, Minute, Second
            //TS - [ms]     2 Milliseconds NOT YET USED, WILL BE 0 IN THIS VERSION
            //Package#      4 Binary Counter, from 1 and up; Least sign byte first
            //Card - id     3 Binary, Least sign byte first
            //Producweek 1  0 - 53; 0 when package is retrived from "history"
            //Producyear 1  94 - 99,0 -..X; 0 when package is retrived from "history"
            //ECardHeadSum  1 Headchecksum from card; 0 when package is retrived from "history"

            //The following fields are repeated 50 times:
            //CodeN         1 ControlCode; unused positions have 0
            //TimeN         2 Time binary seconds.Least sign. first, Most sign. last; unused: 0
            //ASCII string  56 Various info depending on ECard - type; 20h when retr.from "history"(See ASCIIstring)
            //Checksum      1 Binary SUM(MOD 256) of all bytes including Preamble
            //NULL - Filler 1 Binary 0(to avoid potential 5 FF's. Making it easier to haunt PREAMBLE
            //    ----------------------------------------
            //Size 234


            var MTRDataStrings = new MTRDataMessageString();

            MTRDataStrings.Preamble    = data.Substring(0, 4);  // Ensure the message start with preamble
            MTRDataStrings.PackageSize = data.Substring(4);     // Packet size, should be 230 when datamessage
            MTRDataStrings.PackageType = data.Substring(5);     // Packet type, should be M as MTR message
            MTRDataStrings.MtrSerialNo = data.Substring(6, 2);  //serialNumber of the MTR reader
            MTRDataStrings.TimeStamp   = data.Substring(8, 6);  // binary year, month day, hour, minute, second
            MTRDataStrings.Time_ms     = data.Substring(14, 2); // Time is not yet in use
            MTRDataStrings.PackageNo   = data.Substring(15, 4); // counter from 1 to up
            MTRDataStrings.CardId      = data.Substring(19, 3); // binary, least sign first
            // Next tree is used when data retrived from history
            //MTRData.ProductWeek = data.Substring(22, 53);
            //MTRData.ProductYear = data.Substring(94,5);
            //MTRData.ECardHeadSum = data.Substring(100);

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

            for (int checkPointNo = 0; checkPointNo < 50; checkPointNo++)
            {
                var checkPointDataPosition = 61 * checkPointNo;
                var checkPoint             = new MTRDataCheckPoint();
                var codeN    = data.Substring(100 + checkPointDataPosition, 1);
                var timeN    = data.Substring(102 + checkPointDataPosition, 2);
                var info     = data.Substring(103 + checkPointDataPosition, 56);
                var checkSum = data.Substring(159 + checkPointDataPosition, 1);
                var filler   = data.Substring(160 + checkPointDataPosition, 1);

                MTRDataStrings.CheckPoints.Add(new[] { codeN, timeN, info, checkSum, filler });
            }

            var mtrData   = ConvertDataStringToTypeData(MTRDataStrings);
            var listDatas = new List <MTRDataMessage>();

            listDatas.Add(mtrData);
            //WriteValuesToFile(listDatas);
        }