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

Работа с COM-портом в CPU188

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


Присоединился: 18 Апрель 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 30
Свойства публикации Свойства публикации   Ответить, цитируя автора - Phenix Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: Работа с COM-портом в CPU188
    Опубликовано: 16 Май 2006 17:19

Добрый день всем.

Подскажите пожалуйста статьей или примером, как осуществить обмен данными устройства, постоенного на CPU188 с компьютером через COM-порт. Использование INT 14h и bioscom() результата не дали (пока).

Наверх
nick_user Смотреть выпадающим
Участник
Участник


Присоединился: 18 Ноябрь 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 54
Свойства публикации Свойства публикации   Ответить, цитируя автора - nick_user Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 16 Май 2006 17:38
Какая ОС?
Какой будете использовать протокол?
Кто будет master, а кто slave?

Смотрите здесь и здесь(работа с портом для DOS)
Наверх
Phenix Смотреть выпадающим
Новичок
Новичок


Присоединился: 18 Апрель 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 30
Свойства публикации Свойства публикации   Ответить, цитируя автора - Phenix Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 17 Май 2006 11:23

ОС - на CPU188 стоит ДОС 6.22, на компьютере - Windows 2000.

Мастером будет CPU188.

Насчет протокола не знаю, в терминале используется xmodem. Как это влияет на осуществление передачи с помощью средств BIOS?

Наверх
Phenix Смотреть выпадающим
Новичок
Новичок


Присоединился: 18 Апрель 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 30
Свойства публикации Свойства публикации   Ответить, цитируя автора - Phenix Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 17 Май 2006 11:26
Большое спасибо за ссылки
Наверх
nick_user Смотреть выпадающим
Участник
Участник


Присоединился: 18 Ноябрь 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 54
Свойства публикации Свойства публикации   Ответить, цитируя автора - nick_user Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 17 Май 2006 12:58
Вообще я почему-то предполагал, что мастером у вас будет
компьютер, а не CPU188 (обычно всегда так делают).
Хотя, конечно, зависит от задачи. Может, у вас что-то нестандартное.

Первоначально опубликовано Phenix

Насчет протокола не знаю, в терминале используется xmodem.



Честно говоря, не понял, о каком терминале идет речь.
Может, поясните подробнее?
Наверх
Phenix Смотреть выпадающим
Новичок
Новичок


Присоединился: 18 Апрель 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 30
Свойства публикации Свойства публикации   Ответить, цитируя автора - Phenix Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 17 Май 2006 13:10

Видимо я не совсем точно выразился. Ситуация в следующем. Есть устройство, построенное на CPU188, накапливающее данные (будем его называть просто CPU188). Время от времени к нему присоединяется компьютер (или ноутбук) и по com-порту забирает эти данные на обработку. В этом случае с компьютера приходит команда на перенос данных, а CPU188 должен их прередать. Таким образом, CPU188 выполняет роль сервера, поэтому я и написал, что он мастер.

Под терминалом понимается программа терминального доступа к CPU188. Я использую HyperTerminal. Там для передачи файлов с компьютера на CPU188 и обратно применяется протокол xmodem.

Наверх
nick_user Смотреть выпадающим
Участник
Участник


Присоединился: 18 Ноябрь 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 54
Свойства публикации Свойства публикации   Ответить, цитируя автора - nick_user Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 17 Май 2006 13:24
Первоначально опубликовано Phenix

Есть устройство, построенное на CPU188, накапливающее данные (будем его называть просто CPU188). Время от времени к нему присоединяется компьютер (или ноутбук) и по com-порту забирает эти данные на обработку. В этом случае с компьютера приходит команда на перенос данных, а CPU188 должен их прередать. Таким образом, CPU188 выполняет роль сервера, поэтому я и написал, что он мастер.



Мастером является устройство, запрашивающее данные, т.е. в данном случае компьютер.

Первоначально опубликовано Phenix

Под терминалом понимается программа терминального доступа к CPU188. Я использую HyperTerminal. Там для передачи файлов с компьютера на CPU188 и обратно применяется протокол xmodem.



В таком случае у вас есть, на мой взгляд, 2 варианта:
1. Реализовать в CPU188 протокол xmodem и качать данные
по нему через гипертерминал.
(Такого я ни разу не делал).
2. Организовать в CPU188 свой протокол доступа к данным
(не обязательно в виде файлов) - например Modbus или какой-нибудь придумать свой.
Тогда для верхнего уровня (компьютер) вам придется писать
программу, скачивающую эти данные по выбранному вами
протоколу в файл(ы) или базу данных.
(Делал не раз, есть наработки на C++).
Наверх
KostyaK Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 02 Август 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 110
Свойства публикации Свойства публикации   Ответить, цитируя автора - KostyaK Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 18 Май 2006 08:51

Полгода назад закончил работу над прибором, в основе которого CPU188-5. Пришлось решать ту же проблему, что и Вам - передача данных, накопленных в CPU, на ПК.

Полность согласен с nick_user, обычно делают протокол обмена. Если нет особого опыта в создании собственных протоколов , то для начала идите протореной дорожкой, сделайте ModBus-подобный. Информацию о нём можно найти здесь http://www.modbus.org/. Описание на русском могу скинуть на мыло.

Если всеръёз хотите заниматься программированием COM-портов, то дл начала могу порекомендовать книгу П.Агурова "Последовательные интерфейсы ПК. Практика программирования". (изд. БХВ)

Теперь собственно о CPU.

К с ком-портами можно работать:

1) средствами BIOS (int 14h);

2) средствами DOS (int 21h, функции 3,4,3Fh,40h);

3) путём прямого программирования регистров.

Наиболее проще и целесообразнее, на мой взгляд, идти первым путём.

Прикладываю программку, которая считывает код клавиши с матричной клавиатуры и посылает её на ПК. Написана на Паскале, но без труда на С перепишется AA7D5_S.rar Как работает: должен быть загружен драйвер клавиатуры (я использовал matrixk.com для FK-3). На ПК запускаете терминал (SmartLink или HyperTerminal). Загружаете прогу с терминала или из автозагрузки.

 Средства DOS лучше не использовать, тк они очень ограничены.

Можно также использовать прямое обращение к регистрам микропроцессора. Прикладываю программку, которая отображает на LCD клавишу, нажатую на ПК. 4F7AC_S1.rar

Как работает: загружаете драйвер LCD экрана (я использовал powertip).

Откомпилированную программу ставите в автозагрузку (в AUTOEXEC.BAT вставлуете в конец строку S1.exe). Перезагружаете и смотрите, как работает.

Но сраз обращаю внимание, я использовать CPU с микропроцессором AM188 (вроде так), где-то на этом же форуме читал, что теперь  CPU188 выпускают на другом ядре. Вот в этом и минус прямого обращения к регистрам - на другом "железе" такие прогу вряд ли работать будут, учитывайте это, если расчитываете на серийное производство.

С уважением.

 

Наверх
Phenix Смотреть выпадающим
Новичок
Новичок


Присоединился: 18 Апрель 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 30
Свойства публикации Свойства публикации   Ответить, цитируя автора - Phenix Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 18 Май 2006 09:00

Второй вариант я и пытаюсь реализовать средствами INT14h. Принимающая программа будет на Delphi, она будет принимать данные от CPU188, записывать их в файл и обрабатывать их. Идея была в простой побайтовой передаче данных через com-порт (com1):

1. Инициализируем порт (115200,8,N,1)

2. если в буфере есть непрочитанный байт, то ждать

3. передать очыередной байт

4. перейти к 2, пока не достигнут конец файла

На принимающей стороне:

1. Инициализируем порт (115200,8,N,1)

2. если в буфере ничего нет, то ждать

3. принять очередной байт и записать его в файл

4. перейти к 2, пока не достигнут конец файла

Вчера подумал: может быть нужно написать обработчик аппаратного прерывания (0Ch), как это сделано здесь: http://www.rsdn.ru/Forum/Message.aspx?mid=1880394&only=1 ? А при использовании данного примера видимо придется изменить порты и дописать обработчик прерывания (завершающую часть).

Наверх
Phenix Смотреть выпадающим
Новичок
Новичок


Присоединился: 18 Апрель 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 30
Свойства публикации Свойства публикации   Ответить, цитируя автора - Phenix Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 18 Май 2006 09:03
KostyaK, спасибо за примеры
Наверх
 Ответить Ответить Страница  12>

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

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