Чтение данных с последовательного порта на USB в Ubuntu с помощью переполнения стека

У меня есть GPS, который имеет последовательный порт, и у него есть кабель для передачи данных от последовательного порта к USB. Он подключен к ноутбуку через USB и передает данные в шестнадцатеричном формате. Я хочу использовать эти данные в своем коде C ++ в Ubuntu. Любые идеи, где я мог бы начать, и как мне удалось прочитать данные?

1

Решение

Начните с открытия файла (дескриптор fstream, FILE * или OS) в «/ dev / ttySn», где n это номер устройства, затем прочитать.

#include <string>
#include <fstream>
#include <iostream>

std::string str;
std::fstream f;
f.open("/dev/ttyS0");
while (f >> str)
{
std::cout << str;
}

Это должно «повторить» содержимое ttyS0 — это, конечно, может быть «неправильный» порт для вашего устройства, но если вы знаете, где оно подключено, это должно сделать работу. Вам также может понадобиться настроить конфигурацию порта. Например, используя stty Команда — скорость передачи данных будет наиболее важной, так что-то вроде stty -F /dev/ttyS0 19200 установит скорость передачи (фактически битрейт) в 19200 бит / с. Большинство других параметров наверное Хорошо.

3

Другие решения

#include <iostream>
#include <fstream>

int main () {
std::string str;
std::fstream f;
f.open("/dev/ttyS0");
while (f >> str)
{
std::cout << str;
}
}

Вот рабочий фрагмент. Когда у меня возник этот вопрос, я изо всех сил пытался найти необходимое include заявления и правильное пространство имен.

Этот ответ был основан на ответе Матса Петерссона

Редактировать: Это было бы более уместным в качестве комментария к ответу Матса Петерссона. Комментарий может быть:

«#include fstream за fstream а также #include iostream за string
а также cout, Пространство имен fstream а также cout является std«.

0

По вопросам рекламы [email protected]