1

Тема: Общение через com

Вступление.

Я программист, раньше дела с электроникой имел мало.
Но уже давненько пришло понимание того, что писать программы только для компьютера - это не так интересно, как создавать разум для каких-то реальных объектов, которые могут сами взаимодействовать с реальным миром.
Электроника может сама измерить температуру,  определить освещенность, влажность, расстояние до объектов и т.д.

Более сложные системы - роботы, могут сами передвигаться в пространстве, попутно снимать показания окружающей среды и самостоятельно совершать какие-то действия.
Всё это здорово увлекает.

Заявку на покупку я подал в пятницу, в понедельник моя посылка уже была отправлена.
Т.к. я живу за пределами России, то посылка передавалась долго (1,5 недели).
За это время я прочитал пару курсов по электронике для начинающих, собрал все испорченные электронные детали, что были в доме, начал список покупок для похода в радио-магазин.

Вобщем, когда посылка пришла, я уже был готов пытать её.

А пришла она сегодня. Сразу же достал её из коробки и начал её вертеть в руках, чего делать не стоило - микропроцессор можно испортить хорошим разрядом электростатики.

Но моя схемка отлично запустилась, за день собрал пару "hello world" с мигающими светодиодами и определитель освещенности через обратный ток светодиода.

Затем сделал регулятор, подключив к Freeduino HT потенциометр.

Собственно суть:
При пересылке значений по com порту иногда (1 из 5-15 значений) пересылаются с ошибкой.

void setup() {
  Serial.begin(5600);
}

void loop() {
  Serial.println(analogRead(0));
  delay(300);
}

Результат в считывания ком-порта:

999
996
99
5

993
1
0
998

Т.е. иногда цифры передаются по частям, иногда пересылается пустая строка без цифр.
Ставил разную скорость обмена по порту, не помогает.

2

Re: Общение через com

Разобрался.

Для слушания com порта я использовал программу на .Net (c#).
Считывал функцией serialPort1.ReadExisting()
а нужно было serialPort1.ReadLine()