URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9932
[ Назад ]

Исходное сообщение
"Проблема Arduino и LibSerial"

Отправлено Lex Grant , 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);

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

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


Содержание

Сообщения в этом обсуждении
"Проблема Arduino и LibSerial"
Отправлено Lex Grant , 31-Окт-14 19:27 
P.S. Операционная система  -   Ubuntu 12.04



"Проблема Arduino и LibSerial"
Отправлено RedD , 31-Окт-14 21:56 
> P.S. Операционная система  -   Ubuntu 12.04

)))

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


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

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


"Проблема Arduino и LibSerial"
Отправлено Lex Grant , 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-таблице?


"Проблема Arduino и LibSerial"
Отправлено RedD , 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 пробел, значит спецсимволы обрабатываются криво,


"Проблема Arduino и LibSerial"
Отправлено pavlinux , 05-Ноя-14 18:52 
> может быть, это какие-то особые символы

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


"Проблема Arduino и LibSerial"
Отправлено RedD , 05-Ноя-14 19:54 
>> может быть, это какие-то особые символы
> Да, это суслики - их не видно, но они есть!
>

)))))) точно


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

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


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

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



"Проблема Arduino и LibSerial"
Отправлено pavlinux , 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:


"Проблема Arduino и LibSerial"
Отправлено Lex Grant , 06-Ноя-14 16:31 
Спасибо! Заработала, зараза!