C++ COM с помощью fstream

128
22 декабря 2020, 12:40

Читаю данные из ком порта делал это с помощью readFile С которым раньше серьёзно никогда не работал, код просто непонятный. Потом подумал если это всё равно технология чтения файлов, почему бы не использовать привычную мне fstream.

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

#include<Windows.h>
#include<stdio.h>
#include<iostream>
#include<fstream>
using namespace std;
void main()
{
    ifstream in("COM3");
        if(in) 
            cout<<"open ok";
        else
            cout<<"open noo";

        if(in)
        {
            char t;
            in.read(&t,sizeof(t));
            cout<<t;
        }
    }

программа останавливается на строке in.read(&t,sizeof(t)); и не реагирует на входные данные.

Answer 1

Чтобы читать файл по старинке по-байтно нужно задать опцию:

ifstream in("COM3",std::ios::binary);
Answer 2

Для работы с COM-портом его следует настроить после открытия файла.

Рекомендую почитать мою статью Host-клиент Arduino на C (Linux).

READ ALSO
В чем ошибка использования strlen?

В чем ошибка использования strlen?

Почему не выводит текст с буквой t на конце? Правильно ли я пытаюсь задать конец строки?

128
SDL2 - как перемещать окно без заголовка

SDL2 - как перемещать окно без заголовка

Как правильно в SDL2 перемещать окно без заголовка, по аналогии с winapi используя WM_NCHITTEST

128
Avoid unnamed objects with custom construction and destruction (es.84)

Avoid unnamed objects with custom construction and destruction (es.84)

К примеру есть такой простой код

96