Ejemplo n.º 1
0
        private void CmbMessageId_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (_lastSelectedMsgId != CmbMessageId.SelectedIndex)
            {
                _argTemplates.Clear();
                SpArguments.Children.Clear();
                _selectedMsgTemplate = null;

                if (CmbMessageId.SelectedIndex >= 0)
                {
                    var selectedMsgTemplates = (from item in _msgTemplates
                                                where (item.MessageIdForCApi == (string)CmbMessageId.SelectedItem && item.MessageType == FlMessageCategory.Command)
                                                select item).SingleOrDefault();


                    if (string.IsNullOrEmpty(selectedMsgTemplates?.MessageIdForCApi) != true)
                    {
                        _selectedMsgTemplate = selectedMsgTemplates;
                        if (_selectedMsgTemplate.Arguments?.Count > 0)
                        {
                            foreach (var arg in _selectedMsgTemplate.Arguments)
                            {
                                UcArgumentTemplate argTemplate = new UcArgumentTemplate(arg.Name);
                                _argTemplates.Add(argTemplate);
                                SpArguments.Children.Add(argTemplate);
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        private void BtnSendMessage_Click(object sender, RoutedEventArgs e)
        {
            if ((string.IsNullOrEmpty(TbDeviceId.Text) == true) ||
                (uint.TryParse(TbDeviceId.Text, out uint deviceId) != true))
            {
                MessageBox.Show("Invalid device ID.");
                return;
            }

            if (_selectedMsgTemplate != null)
            {
                bool validArguments = false;
                BtnSendMessage.IsEnabled = false;

                switch (_selectedMsgTemplate.MessageId)
                {
                case FlMessageId.ReadHardwareVersion:
                    validArguments = true;
                    ReadHardwareVersion(deviceId);
                    break;

                case FlMessageId.ReadFirmwareVersion:
                    validArguments = true;
                    ReadFirmwareVersion(deviceId);
                    break;

                case FlMessageId.WriteGpio:
                {
                    UcArgumentTemplate argGpioNum   = (UcArgumentTemplate)SpArguments.Children[0];
                    UcArgumentTemplate argGpioValue = (UcArgumentTemplate)SpArguments.Children[1];
                    if (string.IsNullOrEmpty(argGpioNum.ArgValue) == true)
                    {
                        MessageBox.Show("Invalie port number.");
                        break;
                    }

                    if (string.IsNullOrEmpty(argGpioValue.ArgValue) == true)
                    {
                        MessageBox.Show("Invalie port value.");
                        break;
                    }

                    if (byte.TryParse(argGpioNum.ArgValue, out byte gpioNum) != true)
                    {
                        MessageBox.Show("Invalie port number.");
                        break;
                    }

                    if (byte.TryParse(argGpioValue.ArgValue, out byte gpioValue) != true)
                    {
                        MessageBox.Show("Invalie port value.");
                        break;
                    }
                    if (gpioValue != 0 && gpioValue != 1)
                    {
                        MessageBox.Show("Invalie port value.");
                        break;
                    }

                    validArguments = true;
                    WriteGpio(deviceId, gpioNum, gpioValue);
                }
                break;

                case FlMessageId.ReadGpio:
                {
                    UcArgumentTemplate argGpioNum = (UcArgumentTemplate)SpArguments.Children[0];
                    if (string.IsNullOrEmpty(argGpioNum.ArgValue) == true)
                    {
                        MessageBox.Show("Invalie port number.");
                        break;
                    }

                    if (byte.TryParse(argGpioNum.ArgValue, out byte gpioNum) != true)
                    {
                        MessageBox.Show("Invalie port number.");
                        break;
                    }


                    validArguments = true;
                    ReadGpio(deviceId, gpioNum);
                }
                break;

                case FlMessageId.ReadTemperature:
                case FlMessageId.ReadHumidity:
                case FlMessageId.ReadTempAndHum:
                {
                    UcArgumentTemplate argSensorNum = (UcArgumentTemplate)SpArguments.Children[0];
                    if (string.IsNullOrEmpty(argSensorNum.ArgValue) == true)
                    {
                        MessageBox.Show("Invalie sensor number.");
                        break;
                    }

                    if (byte.TryParse(argSensorNum.ArgValue, out byte sensorNum) != true)
                    {
                        MessageBox.Show("Invalie port number.");
                        break;
                    }


                    validArguments = true;
                    if (_selectedMsgTemplate.MessageId == FlMessageId.ReadTemperature)
                    {
                        ReadTemperature(deviceId, sensorNum);
                    }
                    else if (_selectedMsgTemplate.MessageId == FlMessageId.ReadHumidity)
                    {
                        ReadHumidity(deviceId, sensorNum);
                    }
                    else if (_selectedMsgTemplate.MessageId == FlMessageId.ReadTempAndHum)
                    {
                        ReadTempAndHum(deviceId, sensorNum);
                    }
                }
                break;

                case FlMessageId.BootMode:
                {
                    UcArgumentTemplate artBootMode = (UcArgumentTemplate)SpArguments.Children[0];

                    if (byte.TryParse(artBootMode.ArgValue, out byte bootMode) != true)
                    {
                        MessageBox.Show("Invalid boot mode.");
                        break;
                    }

                    validArguments = true;
                    BootMode(deviceId, bootMode);
                }
                break;

                case FlMessageId.Reset:
                {
                    validArguments = true;
                    Reset(deviceId);
                }
                break;
                }

                if (_currentParserType == ParserType.Binary)
                {
                    NextSequenceNumber();
                }

                if (validArguments == true)
                {
                    BtnSendMessage.IsEnabled = true;
                }
            }
            else
            {
                MessageBox.Show("No Message Selected.");
            }
        }