Ejemplo n.º 1
0
        public override void Write(byte[] data)
        {
            if (this.IsConnected())
            {
                // Instead of sending the data directly to the device, encapsulate the data 
                // and put it into the queue
                switch (data.Length)
                {
                    case 2:
                        {
                            var message = new KdmWriteMessage { OperationCode = data[0], Data = data[1] };
                            this.Log.Debug("A write message is added to the message queue");
                            this.EnqueueMessage(message);
                        }
                        break;
                    case 1:
                        {
                            var operationCode = data[0];
                            IKdmMessage message;

                            if (Constants.OperationCodes.IsRestartCommand(operationCode))
                            {
                                message = new KdmRestartMessage { OperationCode = operationCode };
                                this.Log.Debug("A restart message is added to message queue");
                            }
                            else
                            {
                                message = new KdmReadMessage { OperationCode = operationCode };
                                this.Log.Debug("A read message is added to the message queue");
                            }

                            this.EnqueueMessage(message);
                        }
                        break;
                    default:
                        this.Log.Error("Unknown message format");
                        break;
                }
            }
            else
            {
                this.Log.Error("Cannot send command because there is no connection available with the device");
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 /// This method is called if the operation code is sent to device and it's echo is received and the message is a write message
 /// </summary>
 /// <param name="message"></param>
 private void CheckForWriteMessageStates(KdmWriteMessage message)
 {
     if (message.IsDataEchoReceived)
     {
         // The best case scenario, everything worked fine
         this.Log.Debug($"Write message succcessfully processed. Retry count {this.OnProcessMessage.RetryCount}");
         message.IsMessageProcessingCompleted = true;
     }
     else if (message.IsDataSentToDevice && message.DataSentTime.AddMilliseconds(this.echoTimeout) < DateTime.Now)
     {
         // We are waiting for data byte echo but it is not received and the time has elapsed more than the specified Echo Timeout
         this.Log.Error("Timeout occurred while waiting for the data byte echo");
         this.RetryOnProcessMessage();
     }
     else
     {
         // this.Log.Debug("Waiting for data byte echo");
     }
 }
Ejemplo n.º 3
0
 private void btnSetNightLuminance_Click(object sender, EventArgs e)
 {
     var message = new KdmWriteMessage { OperationCode = Constants.OperationCodes.WriteCommands.SetNightLuminance.Code, Data = (byte)this.numNightLuminance.Value };
     this.deviceProxy.Write(message.GetBytes());
 }
Ejemplo n.º 4
0
 private void btnAmLcdHeaterControl_Click(object sender, EventArgs e)
 {
     var mode = this.cmbAmLcdHeaterControl.SelectedIndex;
     var heaterControl = this.rdbAmLcdHeaterControlOn.Checked ? 2 : 0;
     var message = new KdmWriteMessage { OperationCode = Constants.OperationCodes.WriteCommands.SetAmLcdHeaterControl.Code, Data = (byte)(mode + heaterControl) };
     this.deviceProxy.Write(message.GetBytes());
 }
Ejemplo n.º 5
0
 private void btnSetBackLightControl_Click(object sender, EventArgs e)
 {
     var backlightControl = this.rdbBackLightControlOn.Checked ? 1 : 0;
     var message = new KdmWriteMessage { OperationCode = Constants.OperationCodes.WriteCommands.SetBackLightControl.Code, Data = (byte)backlightControl };
     this.deviceProxy.Write(message.GetBytes());
 }