Работа с serial портом
- Войдите на сайт для отправки комментариев
Пнд, 24/02/2014 - 20:46
Привет всем. Возникла проблема с передачей данных через serial порт. Скорость стоит 38400.
Требуется передать последовательность 81 10 F1 81 03, но по какой-то непонятной причине ардуина передает 81 F1 10 81 03 8F 10 07. Как я понимаю 8F 10 07 - это что-то типа переноса строки. Как его убрать?
Отправляю данные так
char bytes[]= {129,241,16,129,03}; Serial.write(bytes);
А как вы принимаете ?
Пока принимаю программой Advanced Serial Port Monitor.
Попробуйте в массив bytes добавить цифирь 0, в конце. А вообще наверное стоит посмотреть как в библиотеке реализована отправка. Мне, например, не ясно как подпрограмма отправки определяет размер массива. А вы как считаете, как она это делает ?
Привет всем. Возникла проблема с передачей данных через serial порт. Скорость стоит 38400.
Требуется передать последовательность 81 10 F1 81 03, но по какой-то непонятной причине ардуина передает 81 F1 10 81 03 8F 10 07. Как я понимаю 8F 10 07 - это что-то типа переноса строки. Как его убрать?
Отправляю данные так
Попробуйте в массив bytes добавить цифирь 0, в конце. А вообще наверное стоит посмотреть как в библиотеке реализована отправка. Мне, например, не ясно как подпрограмма отправки определяет размер массива. А вы как считаете, как она это делает ?
Спасибо. Сработало добавление 0 в конце массива.
Пробовал жестко указывать длинну массива - ардуина дописывала CD 02 04 A0.
Привет всем. Возникла проблема с передачей данных через serial порт. Скорость стоит 38400.
Требуется передать последовательность 81 10 F1 81 03, но по какой-то непонятной причине ардуина передает 81 F1 10 81 03 8F 10 07. Как я понимаю 8F 10 07 - это что-то типа переноса строки. Как его убрать?
Отправляю данные так
Ваш вариант дает результат 81 F1 10 81 03 DC 02 04 AF
Не понял... получилось или нет ?
Смотрите тут http://arduino.cc/en/Serial/write
Вам нужно вызывать функцию так Serial.write(buf, len). А вы вызываете функцию передав ей массив как стринг, а стринг обязан оканчиваться 0 и не иметь некоторых символов внутри.
Ваш вариант дает результат 81 F1 10 81 03 DC 02 04 AF
Чудеса. Я для надёжности посмотрел в код Print.cpp из библиотеки ардуино.
Не понял... получилось или нет ?
Смотрите тут http://arduino.cc/en/Serial/write
Вам нужно вызывать функцию так Serial.write(buf, len). А вы вызываете функцию передав ей массив как стринг, а стринг обязан оканчиваться 0 и не иметь некоторых символов внутри.
ДА да получилось. Не точно выразился в предыдущем посте