Чтение серийника Arduino в C ++ с использованием кодовых блоков в Ubuntu

0

Я попытался использовать и редактировать код из Read и Write на последовательном порту в Ubuntu с C/C++ и LibSerial и ссылаться на man- страницу Ubuntu http://manpages.ubuntu.com/manpages/saucy/man3/LibSerial_SerialStream.3. html.

Когда я использую серийный монитор из Arduino IDE, он отлично работает. Но когда я хотел прочитать его с помощью кодовых блоков с C++, все, что у меня было, это некоторые значения мусора.

Здесь код:

#include <SerialStream.h>
#include <iostream>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
#define PORT "/dev/ttyUSB0"

using namespace std;
using namespace LibSerial;
...
SerialStreamBuf::BaudRateEnum baud_rate = SerialStreamBuf::BAUD_115200;
const SerialStreamBuf::CharSizeEnum csize = SerialStreamBuf::DEFAULT_CHAR_SIZE;
const SerialStreamBuf::ParityEnum parity = SerialStreamBuf::PARITY_NONE;
short stop_bits = 1;
const SerialStreamBuf::FlowControlEnum flow_c = SerialStreamBuf::FLOW_CONTROL_NONE;
...
SerialStream(PORT, baud_rate, csize, parity, stop_bits, flow_c);
SerialStream serial_port ;
serial_port.Open(PORT) ;
...
while( 1  ){
     char next_byte;
     serial_port.get(next_byte);
     std::cerr << next_byte;
     usleep(100);
 }

Как это исправить? Я плохо разбираюсь в объектно-ориентированном программировании, поэтому я не уверен в инициализации конструкторов.

Теги:
arduino
serial-port
codeblocks

1 ответ

0

Вы определяете две переменные для последовательного потока, но используете неинициализированный. Попробуйте заменить это:

SerialStream(PORT, baud_rate, csize, parity, stop_bits, flow_c);
SerialStream serial_port ;
serial_port.Open(PORT) ;

С

SerialPort serial_port ;
serial_port.Open(PORT, baud_rate, csize, parity, stop_bits, flow_c);

а затем используйте функцию ReadByte.

  • 0
    компилятор сказал мне "ошибка: запрос на член 'Open' в 'serial_port', который имеет тип не-класса 'SerialPort ()'", но я только что инициализировал serial_port с содержимым SerialPort, верно? почему это дает мне эту ошибку?
  • 0
    Я решил проблему, вместо SerialPort serial_port; это должен быть SerialPort serial_port("/dev/ttyUSB0")

Ещё вопросы

Сообщество Overcoder
Наверх
Меню