Пример #1
0
 static void Main()
 {
     Application.EnableVisualStyles();
     Application.SetCompatibleTextRenderingDefault(false);
     using (ProcessIcon pi = new ProcessIcon())
     {
         NotifyApplicationIcon = pi;
         pi.Display();
         using (DataReceiver Receiver = new DataReceiver())
         {
             Receiver.Start();
             // Make sure the application runs!
             Application.Run();
             //
             if (Receiver != null)
             {
                 Receiver.Stop();
             }
         }
     }
 }
Пример #2
0
        // Process a message
        private void ProcMessage(string message)
        {
            frmLogStatus.LogMessage(new Model.BMDevice.LogViewModel()
            {
                LogMessage = "Processing raw data"
            });

            XmlDocument doc = new XmlDocument();

            //const ulong invalid_val64 = 0xFFFFFFFFFFFFFFFF;
            const uint invalid_val = 0xFFFFFFFF;
            uint       year = invalid_val, month = invalid_val, day = invalid_val,
                       hour = invalid_val, minute = invalid_val, second = invalid_val;

            doc.Load(new StringReader(message));

            ReceivedMessageViewModel myMessage   = new ReceivedMessageViewModel();
            MessageReceivedEventArgs MsgRecdArgs = new MessageReceivedEventArgs()
            {
                Message = myMessage, ProcessAcknowledgement = false
            };

            // Terminal type
            try
            {
                myMessage.TerminalType = GetElementValue(doc, "TerminalType");
            }
            catch (System.Exception) { }

            // Terminal ID
            try
            {
                myMessage.TerminaID = (int)uint.Parse(GetElementValue(doc, "TerminalID"));
            }
            catch (System.Exception) { }

            // Serial Number
            try
            {
                myMessage.DeviceSerialNo = GetElementValue(doc, "DeviceSerialNo");
            }
            catch (System.Exception) { }

            // Transaction ID
            try
            {
                myMessage.TransactionID = (int)uint.Parse(GetElementValue(doc, "TransID"));
            }
            catch (System.Exception) { }

            // Event
            try
            {
                myMessage.EventType = GetElementValue(doc, "Event");
            }
            catch (System.Exception) { }

            string msgReply = "<?xml version=\"1.0\"?><Message>";

            if (myMessage.EventType == "TimeLog")
            {
                // Date and time of log

                // Year
                try
                {
                    year = uint.Parse(GetElementValue(doc, "Year"));
                }
                catch (System.Exception) { }

                // Month
                try
                {
                    month = uint.Parse(GetElementValue(doc, "Month"));
                }
                catch (System.Exception) { }

                // Day
                try
                {
                    day = uint.Parse(GetElementValue(doc, "Day"));
                }
                catch (System.Exception) { }

                // Hour
                try
                {
                    hour = uint.Parse(GetElementValue(doc, "Hour"));
                }
                catch (System.Exception) { }

                // Minute
                try
                {
                    minute = uint.Parse(GetElementValue(doc, "Minute"));
                }
                catch (System.Exception) { }

                // Second
                try
                {
                    second = uint.Parse(GetElementValue(doc, "Second"));
                }
                catch (System.Exception) { }

                myMessage.LogTime = new DateTime((int)year, (int)month, (int)day, (int)hour, (int)minute, (int)second);

                // User ID
                try
                {
                    myMessage.EmployeeTACode = (int)ulong.Parse(GetElementValue(doc, "UserID"));
                }
                catch (System.Exception) { }

                // Time attendance status
                try
                {
                    myMessage.PunchType = GetElementValue(doc, "AttendStat");
                }
                catch (System.Exception) { }

                // Verification mode
                try
                {
                    myMessage.VerificationMode = GetElementValue(doc, "VerifMode");
                }
                catch (System.Exception) { }

                // Action
                try
                {
                    myMessage.Action = GetElementValue(doc, "Action");
                }
                catch (System.Exception) { }

                //MessageRecieved?.Invoke(MsgRecdArgs);

                // Concatenate a message to send back
                msgReply += "<Request>UploadedLog</Request><TransID>" + myMessage.TransactionID.ToString() + "</TransID></Message>";
            }
            else if (myMessage.EventType == "AdminLog")
            {
                // Date and time of log
                // Year
                try
                {
                    year = uint.Parse(GetElementValue(doc, "Year"));
                }
                catch (System.Exception) { }

                // Month
                try
                {
                    month = uint.Parse(GetElementValue(doc, "Month"));
                }
                catch (System.Exception) { }

                // Day
                try
                {
                    day = uint.Parse(GetElementValue(doc, "Day"));
                }
                catch (System.Exception) { }

                // Hour
                try
                {
                    hour = uint.Parse(GetElementValue(doc, "Hour"));
                }
                catch (System.Exception) { }

                // Minute
                try
                {
                    minute = uint.Parse(GetElementValue(doc, "Minute"));
                }
                catch (System.Exception) { }

                // Second
                try
                {
                    second = uint.Parse(GetElementValue(doc, "Second"));
                }
                catch (System.Exception) { }

                myMessage.LogTime = new DateTime((int)year, (int)month, (int)day, (int)hour, (int)minute, (int)second);

                // User ID
                try
                {
                    myMessage.EmployeeTACode = (int)ulong.Parse(GetElementValue(doc, "UserID"));
                }
                catch (System.Exception) { }

                // Action
                try
                {
                    myMessage.Action = GetElementValue(doc, "Action");
                }
                catch (System.Exception) { }

                // Concatenate a message to send back
                msgReply += "<Request>UploadedLog</Request><TransID>" + myMessage.TransactionID.ToString() + "</TransID></Message>";
                MsgRecdArgs.ProcessAcknowledgement = true;
            }
            else
            {
                MsgRecdArgs.ProcessAcknowledgement = true;
                // Concatenate a message to send back
                msgReply += "<Request>KeptAlive</Request><TransID>" + myMessage.TransactionID.ToString() + "</TransID></Message>";
            }


            frmLogStatus.LogMessage(new Model.BMDevice.LogViewModel(myMessage)
            {
                LogMessage = "Raw data processed."
            });

            if (myMessage.EventType == "TimeLog")
            {
                DataReceiver.Terminal_MessageRecieved(MsgRecdArgs);
            }
            //// Display the message on the form
            //MainForm.theForm.BeginInvoke(
            //    MainForm.theForm.theDelegateAppendMessage, dispMessage);

            // It ensures this message was saved in database, only then upload read mark for this transaction id.
            if (MsgRecdArgs.ProcessAcknowledgement && stream.CanWrite)
            {
                // Reply the message
                byte[] buffer = new byte[msgReply.Length + 1];
                System.Text.Encoding.ASCII.GetBytes(msgReply).CopyTo(buffer, 0);
                buffer[msgReply.Length] = 0;         // Insert null character as end token of message
                stream.BeginWrite(buffer,
                                  0, buffer.Length, new AsyncCallback(Terminal.OnSend), this);
            }
        }