Модераторы: 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   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

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


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

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

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


 




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


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

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