Exemple #1
0
 /// <summary>
 /// Aggiunge un elemento della coda in modalità thread-safe
 /// </summary>
 /// <param name="rs232Data"></param>
 public void EnqueueElementToRS232DataQueue(RS232Data rs232Data)
 {
     if (rs232Data != null && _rs232DataQueue != null)
     {
         lock (_rs232DataQueue)
         {
             _rs232DataQueue.Enqueue(rs232Data);
         }
     }
 }
Exemple #2
0
        /// <summary>
        /// Effettua la pop di un elemento della coda in modalita' thread-safe
        /// </summary>
        /// <returns>Elemento della coda</returns>
        private RS232Data DequeueElementToRS232DataQueue()
        {
            RS232Data sensorData = null;

            if (_rs232DataQueue != null)
            {
                lock (_rs232DataQueue)
                {
                    if (_rs232DataQueue.Count > 0)
                    {
                        _rs232DataQueue.TryDequeue(out sensorData);
                    }
                }
            }
            return(sensorData);
        }
Exemple #3
0
        /// <summary>
        /// Effettua lo svuotamento della coda dei dati con successiva scrittura sulla porta seriale
        /// </summary>
        private void Action()
        {
            while (!_requestStop)
            {
                if (_serialPort.IsOpen)
                {
                    _tempRs232Data = DequeueElementToRS232DataQueue();
                    if (_tempRs232Data != null)
                    {
                        _serialPort.Write(_tempRs232Data.ToArray(), 0, BUFFER_SIZE);
                    }
                }

                Thread.Sleep(500);
            }
        }