У меня есть GPS, который имеет последовательный порт, и у него есть кабель для передачи данных от последовательного порта к USB. Он подключен к ноутбуку через USB и передает данные в шестнадцатеричном формате. Я хочу использовать эти данные в своем коде C ++ в Ubuntu. Любые идеи, где я мог бы начать, и как мне удалось прочитать данные?
Начните с открытия файла (дескриптор 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 бит / с. Большинство других параметров наверное Хорошо.
#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
«.