Отправка данных с помощью текстового поля
Привет, я делаю проект об управлении двигателем постоянного тока с помощью c# и arduino.
Я хочу отправить setspeed в arduino с помощью textbox,но текстовое поле работает не так, как я хочу.
Что я уже пробовал:
Вот код
private void textBox1_TextChanged(object sender, EventArgs e) { if (serialPort1.IsOpen) serialPort1.WriteLine("vs_set_speed"+textBox1.Text); }
А это код arduino:
if (mySt.substring(0,12) == "vs_set_speed"){ set_speed = mySt.substring(12,mySt.length()).toFloat();
Это работает нормально,но вот проблема: когда я набираю setspeed в текстовом поле, например 200, диаграмма setspeed переходит в 2, а затем в 20, а затем в 200.
Есть ли какой-нибудь способ, чтобы текстовое поле получило номер после того, как я нажму enter или нажму кнопку ?
Пожалуйста, помогите мне, спасибо !
Richard MacCutchan
Похоже, что функция arduino вызывается для каждого полученного символа на последовательном порту. вам нужно заставить arduino накапливать текст и не пытаться установить скорость до тех пор, пока все числа не будут получены.
Member 14884114
на самом деле код arduino имеет эту функцию, чтобы делать именно то, что вы говорите :
void serialEvent() {
в то время как (серийный номер.доступен()) {
// получить новый байт:
char inChar = (char)Serial.read();
// добавьте его в строку ввода:
если (inChar != '\n') {
mySt += inChar;
}
// если входящий символ является новой строкой, установите флаг
// таким образом, основной цикл может что-то с этим сделать:
if (inChar == '\n') {
stringComplete = истина;
}
}
Richard MacCutchan
Извините, моя ошибка, это неправильный код C#. Вы отправляете текст каждый раз, когда символ добавляется в текстовое поле. Вам нужно отправить его только тогда, когда больше нет данных для добавления. Вероятно, лучше всего использовать кнопку для запуска отправки.