Получение информации через com порт c. Serial Port Monitor Программное обеспечение для мониторинга COM-портов
Последовательные порты полюбились разработчикам за их простоту в обслуживании и использовании.
И конечно же писать в консоль терминальной программы это всё хорошо, но хочеться своё приложение, которое по нажатии клавиши на экране выполняет нужные вам действия;)
В этой статье опишу как работать с com портом на языке Си++ .
Решение простое, но почемуто рабочий пример найден был не сразу. За сим сохраняю его тут.
Конечно вы можете использовать кроссплатформенные решения вроде QSerial - библиотеки в составе Qt, я наверное так и сделаю, но в будующем. Сейчас же речь о "чистом" виндовском C++ . Писать будем в Visual Studio. У меня 2010, хотя роли это никакой не играет...
Создаём новый консольный Win32 проект.
Инклудим header файлы:
#include #include using namespace std;
Объявляем обработчик com порта:
HANDLE hSerial;
Я делаю это глобально, чтобы не заморачиваться с указателями при передаче его в функции.
Int _tmain(int argc, _TCHAR* argv) {
Терпеть не могу виндовский стиль программирования. Обозвали всё посвоему и сидят радуются...
Теперь магия объявления строки с именем порта. Дело в том, что char оно преобразовывать само не умеет.
LPCTSTR sPortName = L"COM1";
Работа с последоавательными портами в Windows проходит как с файлом. Открываем первый ком порт для записи/чтения :
HSerial = ::CreateFile(sPortName,GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
Проверяем работоспособность:
If(hSerial==INVALID_HANDLE_VALUE) { if(GetLastError()==ERROR_FILE_NOT_FOUND) { cout