2016-06-22 3 views
0

У меня есть код ниже в приложении WPF. Он считывает строки из последовательного порта и отображает их в текстовом поле. Я хочу выполнить операцию в соответствии с последовательным вводом.Чтение строки из текстового поля

Это я собираюсь сделать либо путем чтения строковой переменной (RData), либо путем чтения textbox.text.

Я пробовал с операторами if в функциях, но он не работает. Пожалуйста помоги.

public partial class MainWindow : Window 
{ 
    SerialPort serial = new SerialPort(); 
    string RData; 

    public MainWindow() 
    { 
     InitializeComponent(); 
     getPorts(); 
    } 

    void getPorts() 
    { 
     String[] ports = SerialPort.GetPortNames(); 
     comboBoxPorts.ItemsSource = ports; 
    } 

    private void buttonConnect_Click(object sender, RoutedEventArgs e) 
    { 
     serial.PortName = comboBoxPorts.Text; 
     serial.BaudRate = 9600; 
     serial.DataBits = 8; 
     serial.Handshake = System.IO.Ports.Handshake.None; 
     serial.StopBits = StopBits.One; 
     serial.ReadTimeout = -1; 
     serial.WriteTimeout = -1; 
     serial.Open(); 

     if (serial.IsOpen) 
     { 
      buttonConnect.IsEnabled = false; 
      labelConState.Content = "Connected"; 
      labelConState.Foreground = System.Windows.Media.Brushes.Green; 

      serial.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(Recieve); 
     } 
    } 

    private delegate void UpdateUiTextDelegate(string text); 

    private void Recieve 
     (object sender, System.IO.Ports.SerialDataReceivedEventArgs e) 
    { 
     RData = serial.ReadExisting(); 

     Dispatcher.Invoke(DispatcherPriority.Send, new UpdateUiTextDelegate(WriteData), RData); 
    } 

    private void WriteData(string text) 
    { 
     textBoxPrompt.Text += text; 
    } 
} 
+2

Итак, что конкретно представляет собой вопрос (или проблема)? – Jai

+0

Как я могу получить текст, написанный в textBoxPrompt, для выполнения задачи? –

+0

Вы пытались поместить «точку прерывания» в эту строку 'textBoxPrompt.Text + = text;' и проверить, имеет ли текстовый параметр требуемое значение? Или, может быть, функция вообще не попадает? – user3185569

ответ

-1

Необходимо установить свойство контроля четности SerialPort.

+0

Я пропустил ваш вопрос. Я проверил ваш код выше, и это сработало для меня. Я написал, если получаю строку «2», цвет ярлыка меняется на красный, и если условие работает. if (textBoxPrompt.Text == "2") {labelConState.Foreground == Brushes.Red;} – Leeky

+0

Я работал на меня один раз, но потом перестал работать. Похоже, что это пропустить, если в протекторах. В чем вы положили условие if? –

Смежные вопросы