Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: com-port  (Прочитано 21695 раз)
0 Пользователей и 1 Гость смотрят эту тему.
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« : 17-10-2005 13:19 » 

Не подскажите где можно получить (почитать) подробную, доходчивую информацию на русском языке о работе с com-портом. Я, предчувствую, что система-то не очень хитрая, но в связи стем, что никогда с портами не сталкивался, то ессно ничего об этом не знаю (хотя видел, что работа с ком-портом похожа на работу с файлом).
Записан

ещё один вопрос ...
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #1 : 17-10-2005 14:20 » 

Дык, немного там всего. ХОтя... а что ты имеешь ввиду? На уровне железа?  - тут лучше справочник по 51 чипу посмотреть. Если на уровне драйвера - то.... ДДК.
Ну и если смотреть по теме - "WinAPI & Visual C++" то тогда вот (на уровне API):

1. Тебе надо знать с каким именно портом ты хочешь работать - COM1, COM2 и тд
можно обращаться к до 255 портам. По виндой (с++) определены константы только для первых 9ти - от COM1 до COM9. Поэтому если хочешь работать  с "любым" номером, то лучше использовать записть для драйверов - типа \\.\COM124

2. В API есть набор функций для работы с СОМ-портом - (каждую можно подробно посмотреть в MSDN). Как правило каждая из этих ф-ций получает в качестве параметра хэндл возвращаемый ф-цей (тут ты совершенно прав!) CreateFile

Код:
char CommPort[10];
sprintf(CommPort,"\\\\.\\COM%d",nPortNr);

hPort = CreateFile( CommPort,
                     GENERIC_READ | GENERIC_WRITE,
                     0,    // comm devices must be opened w/exclusive-access
                     NULL, // no security attributes
                     OPEN_EXISTING, // comm devices must use OPEN_EXISTING
                     0,    // overlapped I/O
                     NULL  // hTemplate must be NULL for comm devices
                     );

3. Обычно необходимо устанавливать параметры порта - это достигается с помощью ф-ций GetCommState и SetCommState. В качестве параметра в них передаётся структура DCB

Код:
DCB dcb;
if(GetCommState(hPort, &dcb)==0)
{
CloseHandle(hPort);
// ошибка !
}

4. Порт поддерживает различные протоколы (зависит от протокола устройства подключенного к порту) - протокол определяется набором и значением полей структуры DCB. Например тн "Software"

Код:

dcb.fOutX = 1;
dcb.fInX = 1;
dcb.fTXContinueOnXoff = 1;
dcb.fDtrControl = 1;
dcb.fRtsControl = 0;
dcb.fOutxDsrFlow = 0;
dcb.fOutxCtsFlow = 0;
dcb.XoffChar = 0x13;
dcb.XonChar = 0x19;

SetCommState(hPort,&dcb);

5. Ну и запись/ чтение осуществляется стандартными ф-ми для файлов:

Код:
WriteFile(hPort, pBuffer, nHasRead, &dwBytesWritten, NULL);
ReadFile(hPort, pValue, 1024, &dwHasRead, NULL);


Ну и напоследок - самый лучший учебник - пример работы с COM портом - пример из MSDN, в котором есть практически всё, что надо.

« Последнее редактирование: 20-04-2006 21:40 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
zubr
Гость
« Ответ #2 : 17-10-2005 20:09 » new

Есть книжка неплохая на русском языке "Последовательные интерфейсы ПК" Агурова. Правда примеры на Delphi, но все равно понятно, в основном же на API делается.
Записан
zubr
Гость
« Ответ #3 : 18-10-2005 03:55 » 

nikedeforest, я ее где то в сети видел в электронном виде, но вот где не припомню.
З.Ы. У этого дядьки есть книга и по программированию USB
Записан
Junk
Гость
« Ответ #4 : 20-12-2005 16:13 » 

А как определяется момент прихода/посылки информации?
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #5 : 20-04-2006 18:30 » 

(комент)

тема повторная,

что делать с аттачем?
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines