The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Проблема Arduino и LibSerial"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Разное)
Изначальное сообщение [ Отслеживать ]

"Проблема Arduino и LibSerial"  +/
Сообщение от Lex Grant (??) on 31-Окт-14, 19:26 
Добрый день! Проблема такая: написал простую консольную программу, которая получает информацию от Arduino Nano. Всё работало нормально, но только до некоторых пор. Однажды я увидел, что данные приходят неверные. Стал ковыряться, и обнаружил, что ко мне не приходит байт 0x20. То есть если я отправляю 0x21 или любой другой, то всё супер, а вот если 0x20 - то словно и нету его.

Библиотека для подключения - LibSerial. Порт - /dev/ttyUSB[X]...
Библиотека программирования - Qt 4.7 (хотя в данном случае это вряд ли важно)

Примерный текст программы (привожу только необходимые выдержки):

using namespace LibSerial;
SerialStream ardu;

                                                        
void Arduino::open()                                                                                                              
{  
   ardu.Open(dev_name.toStdString());
   ardu.SetBaudRate(SerialStreamBuf::BAUD_9600);
                                                      ardu.SetCharSize(SerialStreamBuf::CHAR_SIZE_8);                                                                                
}                                                                                                                                  
void Arduino::getSettings()
{
   unsigned char str;
   QByteArray result_ba;

   while (ardu.IsOpen())
   {
      ardu >> str; // ПОЛУЧАЕМ НОВЫЙ БАЙТ от АРДУИНО
      ba.append(str);
      qDebug()<<ba.toHex(); // здесь символ за символом смотрю на формирующуюся последовательность байтов
..................
}


На самой плате отправляю команду

Serial.write(0x20);

и получаю фигу!

В чем может быть проблема?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Проблема Arduino и LibSerial"  +/
Сообщение от Lex Grant (??) on 31-Окт-14, 19:27 
P.S. Операционная система  -   Ubuntu 12.04


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Проблема Arduino и LibSerial"  +/
Сообщение от RedD (ok) on 31-Окт-14, 21:56 
> P.S. Операционная система  -   Ubuntu 12.04

)))

Поступи хитрее, раз 0х20 не проходит, а он, видимо жизненно нужон
Сделай так
0xff равно 0x20 receive
0x20 равно 0xff transmitter
Иными словами костыль, и работать будет, и разберешься почему 0x20
Не проходит.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

4. "Проблема Arduino и LibSerial"  +/
Сообщение от Lex Grant (??) on 05-Ноя-14, 09:15 
>> P.S. Операционная система  -   Ubuntu 12.04
> )))
> Поступи хитрее, раз 0х20 не проходит, а он, видимо жизненно нужон
> Сделай так
> 0xff равно 0x20 receive
>  0x20 равно 0xff transmitter
> Иными словами костыль, и работать будет, и разберешься почему 0x20
> Не проходит.

Но мне 0xFF тоже иногда ведь бывает нужен!

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

6. "Проблема Arduino и LibSerial"  +/
Сообщение от Lex Grant (??) on 05-Ноя-14, 10:02 
>> P.S. Операционная система  -   Ubuntu 12.04
> )))
> Поступи хитрее, раз 0х20 не проходит, а он, видимо жизненно нужон
> Сделай так
> 0xff равно 0x20 receive
>  0x20 равно 0xff transmitter
> Иными словами костыль, и работать будет, и разберешься почему 0x20
> Не проходит.

Провел более тщательный эксперимент. Не передаются 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x20. Смотрю: может быть, это какие-то особые символы, завязанные на ASCII-таблице?

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

7. "Проблема Arduino и LibSerial"  +/
Сообщение от RedD (ok) on 05-Ноя-14, 15:32 
>>> P.S. Операционная система  -   Ubuntu 12.04
>> )))
>> Поступи хитрее, раз 0х20 не проходит, а он, видимо жизненно нужон
>> Сделай так
>> 0xff равно 0x20 receive
>>  0x20 равно 0xff transmitter
>> Иными словами костыль, и работать будет, и разберешься почему 0x20
>> Не проходит.
> Провел более тщательный эксперимент. Не передаются 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x20.
> Смотрю: может быть, это какие-то особые символы, завязанные на ASCII-таблице?

Значит библитека глючная, 0x20 пробел, значит спецсимволы обрабатываются криво,

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

9. "Проблема Arduino и LibSerial"  +/
Сообщение от pavlinux (ok) on 05-Ноя-14, 18:52 
> может быть, это какие-то особые символы

Да, это суслики - их не видно, но они есть!

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

10. "Проблема Arduino и LibSerial"  +/
Сообщение от RedD (ok) on 05-Ноя-14, 19:54 
>> может быть, это какие-то особые символы
> Да, это суслики - их не видно, но они есть!
>

)))))) точно

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

3. "Проблема Arduino и LibSerial"  +/
Сообщение от pavlinux (ok) on 02-Ноя-14, 14:54 
> Библиотека для подключения - LibSerial. Порт - /dev/ttyUSB[X]...
> Библиотека программирования - Qt 4.7 (хотя в данном случае это вряд ли важно)

А накой LibSerial, если есть QSerialPort::

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "Проблема Arduino и LibSerial"  +/
Сообщение от Lex Grant (??) on 05-Ноя-14, 09:31 
>> Библиотека для подключения - LibSerial. Порт - /dev/ttyUSB[X]...
>> Библиотека программирования - Qt 4.7 (хотя в данном случае это вряд ли важно)
> А накой LibSerial, если есть QSerialPort::

Насколько я понял, QtSerialPort появилась только на Qt5. А в моём случае это неприменимо.


Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

8. "Проблема Arduino и LibSerial"  +/
Сообщение от pavlinux (ok) on 05-Ноя-14, 18:41 
>>> Библиотека для подключения - LibSerial. Порт - /dev/ttyUSB[X]...
>>> Библиотека программирования - Qt 4.7 (хотя в данном случае это вряд ли важно)
>> А накой LibSerial, если есть QSerialPort::
> Насколько я понял, QtSerialPort появилась только на Qt5. А в моём случае
> это неприменимо.

http://qt-project.org/wiki/QtSerialPort

Brief description

The QtSerialPort module is an add-on module for the Qt5 library, providing a single interface for both hardware and virtual serial ports.

Note: Also added support for Qt4.

Usage

To use the library, add serialport to the *.pro file of your project:

Qt4
CONFIG += serialport

Qt5
QT += serialport

Include the header files of QtSerialPort where appropriate:

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

11. "Проблема Arduino и LibSerial"  +/
Сообщение от Lex Grant (??) on 06-Ноя-14, 16:31 
Спасибо! Заработала, зараза!
Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема


  Закладки на сайте
  Проследить за страницей
Created 1996-2018 by Maxim Chirkov  
ДобавитьПоддержатьВебмастеруГИД  
Hosting by Ihor