Базовый пример последовательной связи с Windows XP / win32 - PullRequest
8 голосов
/ 26 октября 2008

Я работаю с периферийным устройством, которое должно быть подключено через последовательный порт. Я могу отправлять ему команды, используя HyperTerminal, но теперь мне нужно написать программы, которые позволят мне делать это без HyperTerminal. Может кто-нибудь указать мне на сайт и / или показать мне пример программы Hello World, чтобы начать? Я искал много сайтов, которые дают мне некомпилируемый / древний код VC6.

Ответы [ 5 ]

6 голосов
/ 26 октября 2008

Для взаимодействия с последовательным портом вы открываете файл с одним из специальных имен файлов с «COM1» по «COM9». Для последовательных портов с большими номерами специальное имя файла начинается с \\? \, Который в коде C / C ++ должен быть экранирован как "\\\\? \\ COM10" и т. Д.

http://msdn.microsoft.com/en-us/library/ms810467.aspx имеет очень хорошее руководство по использованию последовательного порта. Обратите внимание, что вы должны использовать функции ввода-вывода файлов Windows, такие как CreateFile(), ReadFile() и WriteFile(). Я не уверен, что он будет работать с использованием стандартных функций ввода / вывода, таких как fopen(), fread() и fwrite().

4 голосов
/ 26 октября 2008

Microsoft предоставляет статью с примером кода , описывающую, как это сделать под Win32.

1 голос
/ 13 января 2009

При использовании .NET 2.0 см. System.IO.Ports и эта статья должна быть полезной. Если прямой Win32, то ответ Адама лучше.

1 голос
/ 26 октября 2008

Повышение: asio может помочь, поскольку недавно было добавлено последовательное устройство.

Справедливое предупреждение, хотя; документация по последовательному порту light , предположительно, поскольку она довольно новая (она была добавлена ​​в asio 1.1.1, которая была включена в boost 1.36).

Но работа с asio - это, имхо, лучшее решение, чем использование сырого Win32 API. Зачем? Его будет легче читать и поддерживать (это API более высокого уровня), и он будет кроссплатформенным (кроме случаев, когда вам нужно указать имя устройства для конкретной ОС).

Boost - Пользователи и asio.user списки рассылки довольно активны и дружелюбны и должны быть в состоянии помочь вам, если вы застряли.

0 голосов
/ 26 октября 2008

Полагаю, вы найдете множество примеров кода для C #, если VC6 окажется слишком древним. Я думаю, что есть также «свободные» обертки последовательного / COM-порта, но я просто написал свой собственный, когда писал программный контроллер для устройства RS232.

Google C # и последовательный порт или rs232

Я получил это:

http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx

http://msmvps.com/blogs/coad/archive/2005/03/23/SerialPort-_2800_RS_2D00_232-Serial-COM-Port_2900_-in-C_2300_-.NET.aspx

У вас не должно возникнуть проблем с поиском подходящего кода с помощью поиска Google.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...