Данные из COM порта
- Войдите на сайт для отправки комментариев
Вс, 01/05/2016 - 14:44
Здравствуйте. Имею такой код. Как мне сделать, чтобы при отправке в порт, скажем, числа "13" моё условие работало и светодиод загорался.
int val;
int ledPin =13;
boolean ledOn=false;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(115200);
}
void loop()
{
if (Serial.available())
{
val = Serial.read();
if (val == 110) // n = 110 in dec
{
ledOn=!ledOn;
digitalWrite(ledPin, ledOn);
}
}
}
Числа 13 или строки "13"?
Если числа, то в строке 15 замените 110 на 13
Если строки, то она состоит из двух байтов. Надо принять оба и сравнивать
В порт будет отправлено число 13
Замена в 15 строке числа 110 на 13 не работает, 110 это буква n
13 это 4951 в DEC, но даже если я пишу
if(val == 4951)и отправляю в порт число 13, не работает условие.Сергей, число 13, оно 13 и есть.
4951 - это не число. Это представление строки.
Строка состоит из двух байтов 49 и 51.
Принимайте два байта. Первый сравнивайте с 49, а следующий с 41
Тогда почему не работает?
if(val == 13)Потому, что Вы передаёте строку, а не число.
Я не зря спрашивал, что Вы передаёте.
А как принять байты?
Вы чем передаете? Ардуиновским монитором? Так он только строки шарит. Для начала перейдите на буквы, например Замените
if(val == 's')и передайте. После того как заработает - открывайте учебник на разделе "Типы данных" и желаю успеха.Передаю через php
<?php echo "Com3 opening....<br/>"; $fp = fopen("com3", "w"); echo "Done.<br/>"; echo "Sending data to Arduino...<br/>"; fwrite($fp, "13"); echo "Done.<br/>"; fclose($fp); ?>Ну это тоже строка. Замените 13 для начала на одну букву, проверте, а потом - учится, учится и еще раз...
С одной буквой всё понятно, вместо буквы в php скрипте я пишу DEC число этой буквы
Наверно и просто буквы достаточно. Хотя всякие юникоды способны внести неповторимую прелесть в это дело. Если заработало - ок. Теперь учите сишные типы данных. Без этого никак. А пыха (и др. высокоуровневые интерпретируемые языки) дает плохой опыт в этом вопросе, она скрвает истину от програмиста.
Так вот это (в кавычках) строка и есть. Вы её и передаёте.
Принимайте два байта, а не один и сравнивайте первый с '1', а второй с '3'