Современные технологии автоматизации» («СТА») —  журнал для квалифицированных специалистов по промышленной автоматизации Форум СТА — современные технологии автоматизации Домашняя страница
Домашняя страница форума CTA Домашняя страница форума CTA > II. АСУТП и SCADA > Теория и практика автоматизации
  Активные темы Активные темы
  FAQ FAQ  Искать в форуме   Зарегистрироваться Зарегистрироваться  Вход в систему Вход в систему

Платы COM-портов или программирование под C++ Builder?

 Ответить Ответить
Автор
Сообщение
GVG123 Смотреть выпадающим
Новичок
Новичок
Аватар

Присоединился: 30 Октябрь 2007
Категория: Russian Federation
Online Status: Offline
Публикации: 4
Свойства публикации Свойства публикации   Ответить, цитируя автора - GVG123 Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: Платы COM-портов или программирование под C++ Builder?
    Опубликовано: 16 Май 2008 09:08
Здравствуйте!
На моем компьютере сгорели оба COM-порта.
Для работы использую контроллеры I-7188XA. Программы пишу по DOS-ом. Сначала пишу программу на компьютере, а модуля, радиомодем, терминал ввода/вывода подключаю к COM-портам компьютера. Когда программа полностью отлажена - меняю библиотеки, компилирую заново и программу закачиваю в контроллер. Для нормальной отладки необходимо 2 COM-порта. После того как сгорели COM-порты купил многопортовую плату NetMos 9845PCI Multi-I/O Controller (6 COM портов). У нее одно прерывание и 6 базовых адресов. К плате NetMos 9845PCI Multi-I/O идет программа, которая позволяет устанавливать стандартные для COM-портов прерывания и адреса. Но т. к. прерывание используется одно, то и программа написанная под DOSом видит всего один COM-порт.
Аналогичная ситуация и с MOXой CP-114IS.
В связи с этим у меня несколько вопросов:
1. Имеются ли многопортовые платы PCI где каждому COM-порту назначается свое прерывание и базовый адрес? (старые мультикарты не подойдут - на MB нет ISA).
2. Возможно ли программу написанную на Borland C++ 3.1 под DOS-ом откомпилировать на Borland C++ Builder, с использованием старых DOS-овских библиотек? (и будет ли тогда корректно обращение к COM-портам платы NetMos 9845PCI Multi-I/O?).
(Возможно для моей задачи использовать старый компьютер типа P-166, но это откат назад, а хочется прогресса :-) ).

Заранее благодарен.

Виктор.

Наверх
Vald Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 02 Октябрь 2007
Категория: Russian Federation
Online Status: Offline
Публикации: 427
Свойства публикации Свойства публикации   Ответить, цитируя автора - Vald Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 16 Май 2008 11:29

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

Чуть вперед забегу.  Сталкивался с тем, что обращание к портам ввода вывода в разных машинах по разному работает.  В 386 вообще вопросов никаких, а вот при переносе того же текста на 486, код отказывается работать - в программе требуются задержки после операций обращения к портам ввода вывода, если такие обращения идут подряд.

 

Теоретически в Builder можно написать консольное приложение, вот только его запустить не получиться - оно же будет напрямую по портам лазить , а винда не пустит и будет ругаться.

Но тут экспериментировать надо.

 

При экспериментах ни один чайник не пострадал

-----------
Плохому системному интегратору всегда OPC сервер мешает.
______________
Пишу на C++ за еду
Наверх
GVG123 Смотреть выпадающим
Новичок
Новичок
Аватар

Присоединился: 30 Октябрь 2007
Категория: Russian Federation
Online Status: Offline
Публикации: 4
Свойства публикации Свойства публикации   Ответить, цитируя автора - GVG123 Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 16 Май 2008 12:03

>"Терминология "видит один порт" не подходит..."

У меня имеется библиотека, которая идет в комплекте с контроллером I-7188XA и позволяет писать программу на ПК по DOS. В этой библиотеке имеются функции, которые позволяют работать с COM-портами у которых "стандартные" адреса, т.е. COM1 - адреса 3F8h и прерывание IRQ4. COM2 - адреса 2F8h  и прерывание IRQ3. Когда я использую плату NetMos 9845PCI Multi-I/O для портов устанавливаются адреса 3F8h, 2F8h и прерывание IRQ3. Функции, которые идут в комплекте с контроллером в этом случае ВИДЯТ (если хотите, то "работают" или "обращаются" или "обрабатывают", как вам будет удобнее) только данные с COM2-порта. Для того, что бы моя программа рабтала с портом COM1 мне необходимо самому писать эти функции и обработчик прерывания. А мне не хотельсь бы их писать, когда у меня уже имеются функции, которые проверены и работают со стандартными COM-портами.   

Виктор.

Наверх
Vald Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 02 Октябрь 2007
Категория: Russian Federation
Online Status: Offline
Публикации: 427
Свойства публикации Свойства публикации   Ответить, цитируя автора - Vald Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 16 Май 2008 14:06
Ну тады ничего не сделаешь.
При экспериментах ни один чайник не пострадал

-----------
Плохому системному интегратору всегда OPC сервер мешает.
______________
Пишу на C++ за еду
Наверх
 Ответить Ответить

Переход на форум Права доступа на форуме Смотреть выпадающим

Bulletin Board Software by Web Wiz Forums® version 9.64
Powered by Web Wiz Forums Free Express Edition
Copyright ©2001-2009 Web Wiz