Example #1
0
 protected virtual void OnMeasurement(ElicomMeasurement e)
 {
     if (Measurement != null)
     {
         Measurement(this, e);
     }
 }
Example #2
0
        /// <summary>
        /// Прочети отговора от устройството
        /// </summary>
        /// <returns></returns>
        public ElicomMeasurement ReadMeasurement()
        {
            byte[] buffer = new byte[1];
            // Структора
            byte[] FLAGS_BYTE  = new byte[1];
            string signValue   = "+";
            string poundsValue = "0";
            string gramsValue  = "0";
            // Прочита пакета
            int index = 0;

            while (buffer[0] != 13 /* CR_BYTE */)
            {
                this._SPort.Read(buffer, 0, 1);
                switch (index)
                {
                case 0:
                    FLAGS_BYTE[0] = buffer[0];
                    break;

                case 1:     // ASCII символ ‘+’ или ‘-‘.
                    signValue = Encoding.ASCII.GetString(buffer);
                    break;

                case 2:     // ASCII символи ‘0’…’9‘ - за килограми
                case 3:
                case 4:
                    poundsValue += Encoding.ASCII.GetString(buffer);
                    break;

                case 5:     // ASCII символ ‘.’ (точка)
                    break;

                case 6:     // ASCII символи ‘0’…’9‘ - за грамове
                case 7:
                case 8:
                    gramsValue += Encoding.ASCII.GetString(buffer);
                    break;

                case 9:     // 13 (десетично) == ASCII символ “Carriage Return”
                    break;
                }
                index++;
            }
            ElicomMeasurement msrmnt = new ElicomMeasurement();

            msrmnt.SetFlags(FLAGS_BYTE);
            msrmnt.SetValue(signValue, poundsValue, gramsValue);

            OnMeasurement(msrmnt);

            return(msrmnt);
        }