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

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

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

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

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

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

Как на с++ прочитать данные из СОМ порта? - C++
Мне нужно под MS-DOS 6.22 прочитать несколько слов через СОМ порт (в пределах 2х десятков и потом эти слова проанализировать). Какое...

Прослушивание сом-порта через USB переходник - C++
Есть программа, которая отсылает и принимает данные через com-порт, задача состоит в том что бы делать тоже самое, но при условии, что...

Получить сигнал с СОМ-порта - C++
Здравствуйте.Собсно поставлена такая задача - получить по COM-порту код,преобразовать в число и вывести на экран.Тоесть например идет набор...

Visual Studio как программно узнать адрес папки с проектом? - C++
как ???

Преобразовать IP-адрес и номер порта - C++
Нужно преобразовать IP-адрес и номер порта к сетевому порядку следования байтов, вывести на экран значения до и после преобразования в...

Как получить текущий адрес стека? - C++
Есть функция, предположим, WinMain. Я хочу вывести в лог указатель стека. Те высокоуровневого, а того, который push ax. Как это сделать?...

2
o-user
244 / 201 / 7
Регистрация: 03.02.2009
Сообщений: 786
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.
...
0
CheshireCat
Эксперт С++
2893 / 1242 / 78
Регистрация: 27.05.2008
Сообщений: 3,379
28.08.2009, 10:30 #3
Гм, ну, писать на ассемблере, скорее всего, не нужно. Другое дело, что тебе, возможно, придется отказаться от Windows и работать в "голой" MS DOS (не в DOS-сессии Windows - почувствуй разницу!).
О программировании COM порта под DOS подробно рассказано в книжке начала 90-х годов: Касаткин, А.И. Профессиональное программирование на языке Си. Системное программирование / А.И.Касаткин. Мн. : Выш. шк., 1993 - поищи ее в Сети.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.08.2009, 10:30
Привет! Вот еще темы с ответами:

Как получить адрес параметра, передоваемого по ссылке? - C++
подскажите как получить адрес параметра, передоваемого по ссылке? void f(int &a...) { int *p = ????; for(int i = 0; i < 3;...

Как получить адрес переменной типа unsigned char? - C++
Всем привет! Как получить адрес переменной типа unsigned char? Всё ерунда получается #include <iostream> using namespace std; ...

Как получить серийный номер процессора и MAC адрес компьютера? - C++
Нужен пример кода, который выведет серийный номер процессора и мак адрес

Как получить полный адрес по имени поля объекта класса - C++
как получить полный адрес по имени поля объекта класса ? не пересчитывая размер расположенных до него полей от начала объекта


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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