Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.75
DrMcSheen
60 / 60 / 1
Регистрация: 25.05.2009
Сообщений: 521
#1

Как программно получить адрес СОМ порта? - C++

28.08.2009, 06:40. Просмотров 2462. Ответов 2
Метки нет (Все метки)

Пишу программу для прошивки Flash памяти прибора через СОМ порт. Выяснилось, что при ошибке заливки, прибор выдаёт ошибку и начинает принимать новый файл прошивки, т.е. без ожидания команды, тупо продолжает приём данных и пишет их как новую прошивку. Короче, надо моментально перехватывать ошибку и начать передачу сначала.
Вывод: винде управление не давать, общаться с прибором на низком уровне, писать прогу ассемблером, во всяком случае часть. Отсюда вопрос: где считать адрес заданного СОМ порта - это который для СОМ1 3F8 обычно и номер прерывания?
Или есть у кого другие мысли?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.08.2009, 06:40     Как программно получить адрес СОМ порта?
Посмотрите здесь:

C++ Как программно получить заначение типа переменной.
C++ Получить адрес объекта
Преобразовать IP-адрес и номер порта C++
Как можно программно получить SCSI серийный номер винчестера? C++
C++ Как получить текущий адрес стека?
C++ Прослушивание сом-порта через USB переходник
C++ Как получить полный адрес по имени поля объекта класса
Как получить адрес переменной типа unsigned char? C++
C++ Visual Studio как программно узнать адрес папки с проектом?
C++ Как получить серийный номер процессора и MAC адрес компьютера?
Как на с++ прочитать данные из СОМ порта? C++
Как получить адрес параметра, передоваемого по ссылке? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
o-user
245 / 202 / 7
Регистрация: 03.02.2009
Сообщений: 788
28.08.2009, 09:01     Как программно получить адрес СОМ порта? #2
http://www.codenet.ru/progr/asm/Serial-Ports-Asm.php

...
Дело в том, что к каждому из адаптеров относятся 8 специальных управляющих и контрольных регистров выполняющих одну или несколько функций в зависимости от режима работы RS-232C. Эти регистры располагаются один за другим начиная с базового адреса. Этот адрес содержится в специальной области данных базовой системы ввода-вывода (BIOS Data Area). Базовые адреса имеют формат слова и располагаются один за другим начиная с адреса 40:0. Если порт отсутствует,то в BIOS Data Area содержится 0.

Обычно COM1 имеет базовый адрес 3F8, COM2 - 2F8. Не спрашивайте меня почему COM1 имеет больший базовый адрес, я всего лишь программист. В дальнейшем, в пояснениях, мы будем использовать адресацию регистров соответствующую порту COM1, т.е. от 3F8 до 3FF.
...
CheshireCat
Эксперт С++
2891 / 1240 / 78
Регистрация: 27.05.2008
Сообщений: 3,327
28.08.2009, 10:30     Как программно получить адрес СОМ порта? #3
Гм, ну, писать на ассемблере, скорее всего, не нужно. Другое дело, что тебе, возможно, придется отказаться от Windows и работать в "голой" MS DOS (не в DOS-сессии Windows - почувствуй разницу!).
О программировании COM порта под DOS подробно рассказано в книжке начала 90-х годов: Касаткин, А.И. Профессиональное программирование на языке Си. Системное программирование / А.И.Касаткин. Мн. : Выш. шк., 1993 - поищи ее в Сети.
Yandex
Объявления
28.08.2009, 10:30     Как программно получить адрес СОМ порта?
Ответ Создать тему
Опции темы

Текущее время: 15:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru