Модераторы: PILOT, ManiaK, Mazzi

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> COM-port, как набор пинов 
:(
    Опции темы
December
Дата 23.3.2003, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: нет
Всего: 57




Greetings.
Господа, подскажите, где есть инфа по поводу работы с COM портом, если на нём висит НЕ МОДЕМ. Задолбало, что авторы статей считают COM порт и MODEM порт чуть ли не синонимами. То есть можно ли работать с ним, как с набором пинов?
Для доса и виндов (9х и НТ).


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
Crait
Дата 23.3.2003, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 244
Регистрация: 20.2.2003

Репутация: нет
Всего: 1



Если интересует установка DTR/RTS, то это EscapeCommFunction() - Win

А для DOS
outportb(port_address+4, ... )
PM MAIL   Вверх
December
Дата 30.3.2003, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: нет
Всего: 57



Что, всё? Больше никто с КОМ-портом не работал? Странно, мне казалось, сейчас многие этим балуются.
Модератор, перекинь этот топик в АСМ, а? Может, там кто опытный сыщется?


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
Dapo
Дата 2.4.2003, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 18.4.2002

Репутация: нет
Всего: 1



December, а ты в фак заглядывал? :-) Там все предельно ясно (по крайней мере по Дельфи). Для работы с ком-портом (RS-232). Тебе нужны 4-е функции (минимум).
1. CreateFile(PCHAR(FPort),GENERIC_READ or GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
2. WriteFile(hCom,FReqData,FReqLen,BytesWritten,0);
3. ReadFile(hCom,ReadBuff,FAnswLen,BytesRead,0)
4. PurgeComm(hCom,PURGE_TXCLEAR or PURGE_RXCLEAR);
Описания этих функций и их параметров найдешь в справочной системе.
WriteFile - пишет в порт, ReadFile - читает из порта. Многие в качестве примера приводят модем. Это проще. Ведь у модема "текстовые команды" (ATI0,ATI1,ATD и т.д.) Для новичка остается непонятна суть. А суть такая - в порт мы передаем БАЙТЫ и читаем из него БАЙТЫ, т.е. дав команду модему ATI4? в порт улетает следующая последовательность БАЙТ - 65, 84, 73, 52, 13 (или ее LowCase) (последний байт "13" - завершающий символ команды. Чтоб модем знал, что команда закончилась и ее надо выполнять, такой уж у него протокол обмена (или формат кадра)). Короче, вместо WriteFile(hCom, PChar('ATI4'),....), можешь послать WriteFile(hCom, Buff,....), где Buff - array of Byte и Buff[0]:=65, Buff[1]:=84,Buff[2]:=73,Buff[3]:=13
Команды могут быть разной длины, поэтому количество записываемых байт в порт регулируется одним из параметров функции WriteFile. (В справке очень хорошо это все описано). Тоже самое касается и ReadFile. Считывай в буфер типа байт а потом расшифровывай. И все. Есть, конечно, еще и разные нюансы, типа использования OVERLAPPED и WaitCommEvent, ну в этом ты продвинешься как только по-бодаешь вышеприведенные функции. Если будут вопросы, пиши на [email protected].
PS. И для экспериментов используй модем. В случае неправильного набора байтов он хотябы ругнется а не просто промолчит (как тот же Ломиконт)
PM MAIL   Вверх
December
Дата 2.4.2003, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: нет
Всего: 57



Dapo, фак я облазил. :/
В том-то и дело, что объясняется на пальцах для модема, который мне на ХХХ не нужен, и разбираться с ним не хочется (но, похоже, придётся). Не думал, что не смогу найти в инете инфу о более низкоуровненом общении с RS232.
Ладно, спасибо за ответ.


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
Dapo
Дата 3.4.2003, 01:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 18.4.2002

Репутация: нет
Всего: 1



Винда не дает доступа к регистрам порта. Да и для общения по RS это и не нужно.
PM MAIL   Вверх
Dapo
Дата 3.4.2003, 01:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 18.4.2002

Репутация: нет
Всего: 1



Да и чего так модем смущает?:-) Для любого устройства имеющего интерфейс RS232 разница в обмене только в формате кадра(протокола) Хочешь я для Ломиконта тебе объясню. Только не в форуме :-)
PM MAIL   Вверх
Mazzi
Дата 3.4.2003, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Правильный
**


Профиль
Группа: Комодератор
Сообщений: 825
Регистрация: 3.4.2003

Репутация: 9
Всего: 21



Есть дока на английском в PDF. С примерами под DOS на С. Весит 143кб.
если хочешь намылю.


--------------------
Мне нужны помощники.
PM MAIL WWW   Вверх
December
Дата 3.4.2003, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: нет
Всего: 57



Mazzi, мыль, буду рад узреть.

Dapo, не хочется усложнять себе задачу разборкой с модемом. Насчёт Ломиконта, в двух словах, если не сложно. И что из себя представляет Ломиконт (я с PICами не очень).

december at fromru.com


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
Crait
Дата 4.4.2003, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 244
Регистрация: 20.2.2003

Репутация: нет
Всего: 1



December, мой тебе совет, используй компонент TCommPort,
если под Delphy/CBuilder.
Его можно скачать на http://www2.arnes.si/~sopecrni/
Впрочем, если и на VC, все равно полезно взглянуть на этот сорс.
И вообще, объясни, что тебе надо - передача/прием через COM-порт,
или, как я понял сначала из названия темы,
установка уровней на DTR и RTS ?
Кстати, упомянутый мною компонент позволяет делать и то и другое.
Ну а если в DOS - это уже другая песТня. Посмотри в этом случае, скажем, на KA9Q - был такой пакет.
Или на ранние версии AsynchProfessional.

Это сообщение отредактировал(а) Crait - 4.4.2003, 13:08
PM MAIL   Вверх
December
Дата 4.4.2003, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: нет
Всего: 57



Вообще пишу я на Дельфи, но меня данный вопрос интересует больше с асмовой точки зрения. На TCommPort посмотрю.
Что мне надо: подсоединить девайсик на ком-порт. Есть восемь пинов + земля, и я хочу использовать их все (т.е. одновременная работа с максимальным количеством пинов). Протокол обмена данными - не байтовый, поэтому не хотелось бы связываться с модемом. DTR & DTS установить - не проблема, а остальные?


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
Crait
Дата 4.4.2003, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 244
Регистрация: 20.2.2003

Репутация: нет
Всего: 1



А что остальные ?
Из выходов остается только TxD - последовательные, сиречь, данные.
А вообще-то, кажется, и этим выходом тоже можно управлять вручную.
В каком-то из comm'овских компонентов, припоминаю,
видел я что-то типа SetBreak().
PM MAIL   Вверх
Dapo
Дата 7.4.2003, 03:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 18.4.2002

Репутация: нет
Всего: 1



TCommPort тебе однозначно не поможет. Что значит использовать все пины? Ты свой интерфейс что-ли лабаешь? :-D И что значит "протокол обмена не байтовый", он другим не может быть. У тебя девайс работает по RS232 или по другому стандарту? Может RS485? Вот тот же Ломиконт не понимает RS232. У него обмен идет по ИРПС, для того чтобы его подключить к компу на ком-порт по интерфейсу RS232, нужна токовая петля (преобразователь, шлюз, называй как хочешь). После этого можно общаться с ним используя стандартные функции ввода/вывода. DTR и RTS, а на них чего зациклились? DTR - готовность терминала, RTS - запрос передачи. Это тоже стандрт RS232. Если обмен по этому стандарту, то ЭТИ сигналы ничем не помогут. Проведите эксперимент: подключите модем (самый доступный контроллер) к ком-у уже работающей машины (есессно без всяких там драйверов, система не знает, что к ком-у что-то подключено). И кинте ему набор байтов соответствующий какой-нибудь команде. И он ее "схавает". И если потом читать из порта, то получите ответ. Вопрос именно в стандарте. Проще говоря, напиши, что у тебя за устройство и по какому стандарту оно может общаться с другими. Я думаю без этого мы еще долго воду в ступе толочь будем.
PM MAIL   Вверх
Crait
Дата 7.4.2003, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 244
Регистрация: 20.2.2003

Репутация: нет
Всего: 1



2 Dapo
А че это "TCommPort ... однозначно не поможет" ?
PM MAIL   Вверх
Dapo
Дата 8.4.2003, 01:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 18.4.2002

Репутация: нет
Всего: 1



Я к тому, что нужно с начала разобраться с тем как Винда с портами работает.
PM MAIL   Вверх
Crait
Дата 8.4.2003, 04:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 244
Регистрация: 20.2.2003

Репутация: нет
Всего: 1



Цитата
Я к тому, что нужно с начала разобраться с тем как Винда с портами работает

Тоесть, что ж там в ядре у виндов наворочено ? Ну-ну...

Я уже писАл здесь, что установить DTR/RTS
можно через EscapeCommFunction(),
если уж не хочется работать через компонент,
а в Win9X и Me кроме этого, проходит и прямой вывод
в соответствующий регистр управления UART'ом :
outportb(port_address+4, ... )
Так же и в DOS'е.
PM MAIL   Вверх
Dapo
Дата 8.4.2003, 07:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 18.4.2002

Репутация: нет
Всего: 1



Причем здесь ядро? И причем здесь DTR/RTS? December кажется не может девайс к устройству подключить или обмен наладить (или и то и другое), а ты DTR/RTS... Что это ему дает? 6 букв? Тогда можно было 2 раза х#й написать (тот же эффект).
PM MAIL   Вверх
December
Дата 8.4.2003, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: нет
Всего: 57



Цитата(Dapo @ 7.4.2003, 03:39)
И что значит "протокол обмена не байтовый", он другим не может быть.

Может. Устройство, которое будет вешаться, передаёт сигналы битами. Мне не нужен байт, чтобы получить сигнал о, например, переключении на следующий датчик. Также мне не нужен байт, чтобы заблокировать что-то - мне требуется всего лишь логическая единица в конкретной линии.


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
December
Дата 8.4.2003, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: нет
Всего: 57



Суть проблемы в том, чтобы:
1) использовать масимальное количество линий одновременно;
2) отказаться от байтового протокола.


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
Dapo
Дата 9.4.2003, 02:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 18.4.2002

Репутация: нет
Всего: 1



А 00000000 и 00000001 это не байты? :-) Ком-порт ПОСЛЕДОВАТЕЛЬНЫЙ, естественно в единицу времени передается бит. Вот он и передает последовательно биты, которые составляют байты. Т.е. твоя логическая единица будет выглядеть как второй вариант (возможно). Опять же Ломиконт. У него есть платы АЦП и ДЦП (не паралич :-)). Соосно - аналоговый и дискретный преобразователи. Один ДЦП может обслужить несколько групп сигналов (вкл/выкл). В одной группе - 8 сигналов. (8 датчиков). Допустим мы запрашиваем состояние датчиков у 3-й группы и получаем БАЙТ=197 (в десятичной). Делаем проверку по маске (00000001) от 0 до 7 со сдвигом 1-го бита.
Грубо:
ФЖ=197;
Mask:=1;
For i:=0 to 7 do
begin
if (A and Mask)=Mask then прибор включен
else выключен
Mask:=(Mask shl 1);
end;

Или 197 в десятичной = 11000101 в двоичной. 1-включен, 0 -выключен.
С аналоговым сигналом сложнее (значение приходит двумя байтами в которых кодируется знак и величина). Может тебе это и не надо, но на всякий случай.
PM MAIL   Вверх
remax
Дата 13.4.2003, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент
**


Профиль
Группа: Участник Клуба
Сообщений: 686
Регистрация: 7.4.2002
Где: Украина, Харьков

Репутация: нет
Всего: 5



Для работы с Com портами (и не только) очень хороша библиотека компонентов Async Pro. Ее можно считать практически стандартной.
В досе стандартных (или массовых) библиотек нет. Хотя, основные функции
легко реализовать самостоятенльно. Для этого необходимо описание работы самого порта и понимание задачи. Описание работы Com портами есть в любой книге по железу компов (Архитектура IBM PC и т.п.), по разработке устройств сопряжения (Напр. Разработка устр. сопряжения для персонального компьютера типа IBM PC/Новиков Ю.В., Калашников О.А, Гуляев С.В., М.ЭКОМ, 1998), программирование на асме (Например, известная книга Т. Свана), Программирование на С и т.д. и т.п.
Короче, если всего этого недостаточно, то могу сбросить на мыло пару текстовиков.


--------------------
Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку
PM MAIL ICQ Skype   Вверх
Crait
Дата 14.4.2003, 03:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 244
Регистрация: 20.2.2003

Репутация: нет
Всего: 1



2 Dapo
Я конечно не знаю, как сформулировал себе задачу December,
но предполагаю, что ему не охота возиться с контроллерами
и ихними UART'ами и драйверами последовательной связи.
А хочет он слепить нечто на рассыпухе, позволяющее
выводить и/или вводить dat'у в компьютер.
И для этих целей DTR и RTS очень даже подходят.
В свое время я сделал, например, эмулятор ПЗУ,
работающий через упомянутые DTR и RTS
и с "бит-ориентированным" протоколом.

PM MAIL   Вверх
Unregistered
Дата 14.4.2003, 07:48 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Ok. Подскажите за одно, где качнуть AsyncPro (по-новее). Хочу с ней поковыряться, а ссылки найти не могу.:-(
  Вверх
December
Дата 15.4.2003, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: нет
Всего: 57



Цитата(Crait @ 14.4.2003, 03:28)
Я конечно не знаю, как сформулировал себе задачу December,
но предполагаю, что ему не охота возиться с контроллерами
и ихними UART'ами и драйверами последовательной связи.
А хочет он слепить нечто на рассыпухе, позволяющее
выводить и/или вводить dat'у в компьютер.

Во. Самое оно.
Однако этот проект откладывается на несколько месяцев, так что выражаю благодарность всем участникам топика и предлагаю считать тему закрытой.


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.3769 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.