コード例 #1
0
 private void handleScaleMessage(ScaleWeightReportMessage msg)
 {
     try
     {
         if (_lastScaleMessage == null || (_lastScaleMessage.Status != msg.Status || _lastScaleMessage.Weight != msg.Weight))
         {
             if (_scaleReader.IsOpen)
             {
                 ScaleStatus = "CONNECTED READING " + msg.Weight.ToString() + " " + msg.StatusName;
             }
             else
             {
                 ScaleStatus = "DISCONNECTED";
             }
         }
         _lastScaleMessage = msg;
     }
     catch (Exception exc)
     {
         Logging.Logger.Log(exc);
         Logging.Logger.WriteBuffer();
     }
 }
コード例 #2
0
 private void handleWeightReportMessage(ScaleWeightReportMessage msg)
 {
     _weight = msg.Weight;
 }
コード例 #3
0
        private void _serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            try
            {
                int    dataLength  = _serialPort.BytesToRead;
                byte[] data        = new byte[dataLength];
                int    nbrDataRead = _serialPort.Read(data, 0, dataLength);
                if (nbrDataRead == 0)
                {
                    return;
                }

                string str = Encoding.ASCII.GetString(data);
                foreach (var ch in str.ToCharArray())
                {
                    if (ch != '\n' && ch != '\r')
                    {
                        currentMessage += ch;
                    }
                    else if (ch == '\r' || ch == '\n')
                    {
                        if (currentMessage.Length > 0)
                        {
                            if (lastMessageTimeStamp.HasValue && lastMessageTimeStamp.Value.AddMilliseconds(300) > DateTime.Now) //was 250
                            {
                                currentMessage = string.Empty;
                                return;
                            }

                            var msg = new ScaleWeightReportMessage(currentMessage);
                            lastMessageTimeStamp = DateTime.Now;

                            Task.Run(() =>
                            {
                                lock (_messageLock)
                                {
                                    if (msg.Status == ScaleMessageStatus.VALID)
                                    {
                                        if (msg.Weight > 100.00M)
                                        {
                                            if (!firstStableWeight.HasValue)
                                            {
                                                firstStableWeight = DateTime.Now;
                                            }

                                            validWeightCount++;
                                            //if (validWeightCount > 20)
                                            if (firstStableWeight.HasValue && firstStableWeight.Value.AddSeconds(stableWeightSeconds) <= DateTime.Now && !weightStable)
                                            {
                                                //send weight acquired message
                                                weightStable = true;
                                                Messenger.Default.Send <WeightAcquiredMessage>(new WeightAcquiredMessage {
                                                    Weight = msg.Weight
                                                });
                                            }
                                        }
                                    }
                                    else if (msg.Status == ScaleMessageStatus.MOTION)
                                    {
                                        weightStable      = false;
                                        validWeightCount  = 0;
                                        firstStableWeight = null; //clear first stable weight
                                        inMotionCount++;
                                        if (inMotionCount > 5)    //was 20 - then 10
                                        {
                                            Messenger.Default.Send <InMotionMessage>(new InMotionMessage {
                                                Weight = msg.Weight
                                            });
                                        }
                                    }
                                    Messenger.Default.Send <ScaleWeightReportMessage>(msg);
                                }
                            });
                        }
                        currentMessage = string.Empty;
                    }
                }
            }
            catch (Exception exc)
            {
                Logging.Logger.Log(exc);
            }
        }
コード例 #4
0
        private void handleWeightReported(ScaleWeightReportMessage msg)
        {
            try
            {
                if (!_initialized || _canceled || _loadCreated)
                {
                    return;                                              //load was created so we need to ignore events that may have gotten queued
                }
                Logging.Logger.Log("INFO", "Entering handleWeightReported: " + msg.Weight.ToString());
                //lock (_dataLocker)
                //{

                if (!_weight1Acquired)
                {
                    Weight1 = msg.Weight;
                }
                else if (!_weight2Acquired && !_waitingForMotion && IsSplitWeight)
                {
                    Weight2 = msg.Weight;
                }

                if (waitingForExit)
                {
                    if (msg.Weight < 200)     //changed from 100
                    {
                        zeroWeightCount++;
                        Logging.Logger.Log("INFO", "Zero weight count " + zeroWeightCount.ToString());
                    }
                    else
                    {
                        zeroWeightCount = 0;
                    }

                    if (zeroWeightCount >= 5)     //changed from 20
                    {
                        TagDataProvider.SetGPOState(2, false);
                        TagDataProvider.SetGPOState(3, false);

                        if (isUnattendedMode && !_loadCreated)
                        {
                            bool newLoad = true;
                            setGinTicketToAuto();
                            Logging.Logger.Log("INFO", "CREATE LOAD WEIGHT REPORTED EVENT");

                            if (!_loadCreated)
                            {
                                CreateLoad(ref newLoad);
                            }

                            ExitToIdlePage();
                        }
                    }
                }

                GrossWeight = Weight1 + Weight2;
                //}
            }
            catch (Exception exc)
            {
                Logging.Logger.Log(exc);
            }
        }