Работа с COM-портом в CPU188 |
Ответить | Страница 12> |
Автор | ||
Новичок Присоединился: 18 Апрель 2006 Категория: Russian Federation Online Status: Offline Публикации: 30 |
Опубликовано: 16 Май 2006 17:19 |
|
Добрый день всем. Подскажите пожалуйста статьей или примером, как осуществить обмен данными устройства, постоенного на CPU188 с компьютером через COM-порт. Использование INT 14h и bioscom() результата не дали (пока). |
||
Участник Присоединился: 18 Ноябрь 2005 Категория: Russian Federation Online Status: Offline Публикации: 54 |
||
Новичок Присоединился: 18 Апрель 2006 Категория: Russian Federation Online Status: Offline Публикации: 30 |
||
ОС - на CPU188 стоит ДОС 6.22, на компьютере - Windows 2000. Мастером будет CPU188. Насчет протокола не знаю, в терминале используется xmodem. Как это влияет на осуществление передачи с помощью средств BIOS? |
||
Новичок Присоединился: 18 Апрель 2006 Категория: Russian Federation Online Status: Offline Публикации: 30 |
||
Большое спасибо за ссылки
|
||
Участник Присоединился: 18 Ноябрь 2005 Категория: Russian Federation Online Status: Offline Публикации: 54 |
||
Вообще я почему-то предполагал, что мастером у вас будет
компьютер, а не CPU188 (обычно всегда так делают). Хотя, конечно, зависит от задачи. Может, у вас что-то нестандартное.
Честно говоря, не понял, о каком терминале идет речь. Может, поясните подробнее? |
||
Новичок Присоединился: 18 Апрель 2006 Категория: Russian Federation Online Status: Offline Публикации: 30 |
||
Видимо я не совсем точно выразился. Ситуация в следующем. Есть устройство, построенное на CPU188, накапливающее данные (будем его называть просто CPU188). Время от времени к нему присоединяется компьютер (или ноутбук) и по com-порту забирает эти данные на обработку. В этом случае с компьютера приходит команда на перенос данных, а CPU188 должен их прередать. Таким образом, CPU188 выполняет роль сервера, поэтому я и написал, что он мастер. Под терминалом понимается программа терминального доступа к CPU188. Я использую HyperTerminal. Там для передачи файлов с компьютера на CPU188 и обратно применяется протокол xmodem. |
||
Участник Присоединился: 18 Ноябрь 2005 Категория: Russian Federation Online Status: Offline Публикации: 54 |
||
Мастером является устройство, запрашивающее данные, т.е. в данном случае компьютер.
В таком случае у вас есть, на мой взгляд, 2 варианта: 1. Реализовать в CPU188 протокол xmodem и качать данные по нему через гипертерминал. (Такого я ни разу не делал). 2. Организовать в CPU188 свой протокол доступа к данным (не обязательно в виде файлов) - например Modbus или какой-нибудь придумать свой. Тогда для верхнего уровня (компьютер) вам придется писать программу, скачивающую эти данные по выбранному вами протоколу в файл(ы) или базу данных. (Делал не раз, есть наработки на C++). |
||
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 02 Август 2005 Категория: Russian Federation Online Status: Offline Публикации: 110 |
||
Полгода назад закончил работу над прибором, в основе которого 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 выпускают на другом ядре. Вот в этом и минус прямого обращения к регистрам - на другом "железе" такие прогу вряд ли работать будут, учитывайте это, если расчитываете на серийное производство. С уважением.
|
||
Новичок Присоединился: 18 Апрель 2006 Категория: Russian Federation Online Status: Offline Публикации: 30 |
||
Второй вариант я и пытаюсь реализовать средствами 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 ? А при использовании данного примера видимо придется изменить порты и дописать обработчик прерывания (завершающую часть). |
||
Новичок Присоединился: 18 Апрель 2006 Категория: Russian Federation Online Status: Offline Публикации: 30 |
||
KostyaK, спасибо за примеры
|
||
Ответить | Страница 12> |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |