Форум: "Система";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
ВнизCom-порт Найти похожие ветки
← →
Keith Flint (2003-09-01 08:57) [0]Помогите пожалуйста найти исходники или компаненты для Delphi по работе с com портами (нужно с Com 2), а именно интересует считывание/запись логических 0/1 на определённые выводы портов, хотелось бы знать ещё на какие конкретно. Заранее спасибо...
← →
Layner (2003-09-01 09:00) [1]Это тебе в "Система"
← →
Fredericco (2003-09-01 13:02) [2]Ищи здесь на сайте TCommPortDriver
← →
ksa2002 (2003-09-02 15:52) [3]Для чего ето надо ..... а то мож помогу :)
← →
jack128 (2003-09-02 17:16) [4]
> определённые выводы портов,
если это выводы данных, то думаю никак, иначе TcommPortDriver.GetLineStatus
← →
pasha_676 (2003-09-02 18:42) [5]http://www.delphimaster.ru/articles/comport2/index.html
Там чуток писал. Хотя если в вопросе звучит по работе с com портами (нужно с Com 2) у меня лично сомнения возникают в вашей способности к пониманию что есть программирование. Без обид, но неужели сударь для вас есть разница между программированием ком1 или ком2?
← →
Di.ma2002@mail.ru (2003-09-03 06:23) [6]Да и собственно этот сударь говорит про какие то конкретные выводы !!! Сударь это стандартный девайс стандартные соответственно входы\выходы !!! Может ты хочешь свой драйвер компорта написать ???
← →
pasha_676 (2003-09-03 09:35) [7]2Di.ma2002@mail.ru
Да нет на определенные контакты можно посылать 0-1. Так же как и читать их. Через АПИ и, говорят, через некоторые компоненты
← →
Di.ma2002@mail.ru (2003-09-04 06:25) [8]2pasha_676 Кто это тебе сказал !? :))))))))))))))))))))
← →
Di.ma2002@mail.ru (2003-09-04 06:26) [9]Добавлю еще !! Ком порт задействует 3 контакта: 1) передает 2)прием 3) земля
← →
pasha_676 (2003-09-04 09:52) [10]
> Кто это тебе сказал !? :))))))))))))))))))))
F1, причем не просто сказал, делал на практике не однократно.
> Добавлю еще !! Ком порт задействует 3 контакта: 1) передает
> 2)прием 3) земля
Да ты что! Посмотри на распайку разъема. В коме больше контактов
Попробуй набрать F1 на GetCommModemStatus - там есть сигналы DTR и CTS. И EscapeCommFunction - там установка сигналов DTR и RTS. Именно на них и можно устанавливать 1-0. Сам неоднократно писал подачу питания, замерения длин импульсов, коммутаторы и т.д. c помощью каких-то из этих контактов. Работало.
← →
Di.ma2002@mail.ru (2003-09-04 10:05) [11]:)))))) Ладно не смеши !! Ты оказываеся еще и не знаешь где сигналы DTR и CTS передаются !!
← →
Di.ma2002@mail.ru (2003-09-04 10:06) [12]почитайка лучше про RS232
← →
Di.ma2002@mail.ru (2003-09-04 10:09) [13]И вообще давай лучше обсуждать передачу голоса в реалтайме через модем... Что есть в форуме вот это действительно задачка
← →
Verg (2003-09-04 10:12) [14]
> Добавлю еще !! Ком порт задействует 3 контакта: 1) передает
> 2)прием 3) земля
Да, уж ...
> почитайка лучше про RS232
← →
Di.ma2002@mail.ru (2003-09-04 10:27) [15]Вообще конечно можно говорить про разные модемы и про разную распайку ! У меня радиомодем подключен к компорту через интерфейс RS232 и прекрасно работает через три контакта !!! Все зависит от модема !!!
← →
Verg (2003-09-04 10:29) [16]
> Все зависит от модема !!!
Subj ветки еще раз прочти, да?
← →
Di.ma2002@mail.ru (2003-09-04 10:33) [17]у так я ж работаю с компортом !!!:)))
← →
pasha_676 (2003-09-04 12:55) [18]
> интерфейс RS232 и прекрасно работает через три контакта
> !!! Все зависит от модема !!!
Правильно работает. Три контакта достаточное условие. Но вот на этих контактах не возможно поставить 1-0 или считать с них 1-0. Кстати причем тут модем? Данный вопрос для модема совершенно не актуален. Эта тематике актуальна в управлении доп. устройствами по кому, считывание доп. инфы, подачи питания и т.д. Почти всегда для нестандартных, самопальных устройств.
← →
Verg (2003-09-04 13:50) [19]
> Но вот на этих контактах не возможно поставить 1-0
На всякий случай:
The SetCommBreak function suspends character transmission for a specified communications device and places the transmission line in a break state until the ClearCommBreak function is called.
BOOL SetCommBreak(
HANDLE hFile // handle of communications device
);
← →
pasha_676 (2003-09-04 17:14) [20]Хм. Интересно. Правда практической ценности не имеет. Но вдруг понадобиться.
← →
Keith Flint (2003-09-04 19:28) [21]ЛЮДИ, всё просто, все виндовые API и DELPHI"овые функции могут посылать/получать БАЙТЫ, а мне надо посылать/получать БИТЫ, что совсем разные весчи (аж в 8 раз). pasha_676, если ты сомневаешься в том, знаю ли я что такое вообще программирование, типа я разницу между com1 и com2 не знаю?! Объясняю, Паша, РАСПАЙКА у них разная, вот, полюбуйся:
RS232/9:
1 N/A 6 DSR
2 RXD 7 RTS
3 TXD 8 CTS
4 DTR 9 N/A
5 GND
RS232/25:
1 N/A 14 N/A
2 TXD 15 N/A
3 RXD 16 N/A
4 RTS 17 N/A
5 CTS 18 N/A
6 DSR 19 N/A
7 GND 20 DTR
8 DCD 21 N/A
9 N/A 22 RI
10 N/A 23 N/A
11 N/A 24 N/A
12 N/A 25 N/A
13 N/A
А требуется мне отправить определённый бит в com2 потамучто на com1 у меня висит модем Robotics Courier. Послал в com2 бит - получил 1 на определённой ноге порта (+5в). Так что паша я не только в программированиии соображаю, но ещё и в радиоэлектронике...
← →
ksa2002 (2003-09-05 05:28) [22]Пиши драйвер:)
← →
ksa2002 (2003-09-05 05:31) [23]На сколько я знаю в делфи нет переменой типа бит или я ошибаюсь ?
← →
Verg (2003-09-05 07:23) [24]
> РАСПАЙКА у них разная, вот, полюбуйся:
Ну, и?
И это отличие com1 и com2?:)
Ты правда так считаешь?
Значит если на мамке моего компъютера оба com-а имеют DB9, то я, по твоей логике имею два COM1? :))))
← →
pasha_676 (2003-09-05 09:36) [25]
> Объясняю, Паша, РАСПАЙКА у них разная
Да ты что! Распайка разная. Комы с точки зрения компа и системы отличаються не распайкой. С точки зрения АПИ они отличадються именем (см. хелп по createfile). Матери бывают и с двумя 9-пиновыми дибами. Не в распайке дело. Распайка - дело отдельных конкретных матерей и реализации девайсов. Ничто не мешает спаять (купить) переходник. Ни что не мешает применять экзотические разъемы. Они одинаковые по сути.
Еще раз. Для тех кто в бронепоезде.
Прочти тут http://www.delphimaster.ru/articles/comport2/index.html
Управление отдельными битами на ком портах - функции GetCommModemStatus и EscapeCommFunction. Первая читает состояние ног, вторая выставляет.
> Послал в com2 бит - получил 1 на определённой ноге порта
> (+5в).
EscapeCommFunction - то что тебе надо. Кстати +-12 В (причем 1 помоему -12 В - но это точно не помню), а не пять (хотя слышал, что есть и порты с ТТЛ уровнями, но это уже вроде отклонение от стандарта).
> Так что паша я не только в программированиии соображаю,
> но ещё и в радиоэлектронике...
По правде тебе скажу - я не считаю что я соображаю в программировании (и чем больше программирую - тем кажется меньше соображаю) и не смотря на то что закончил училище радиоэлектроники не считаю что соображаю в радиоэлектронике. Тут я полный лох, но уж наименование контактов прочитать у меня ума обычно хватает (кстати с чего это вдруг знание распайки разъемов причислено к знаниям по радиоэлектроники).
← →
pasha_676 (2003-09-05 09:40) [26]
> На сколько я знаю в делфи нет переменой типа бит или я ошибаюсь
> ?
А на что это влияет если есть логические операции? Ты что не можеш манипулировать битом в байте? Тогда тебе сюда. Кроме шуток очень рекомендую - http://www.baseprogram.narod.ru/
← →
-=Vlad=- (2003-09-05 11:07) [27]>Di.ma2002@mail.ru (04.09.03 10:33) [17]
>>у так я ж работаю с компортом !!!:)))
Прикольно однако ты работаешь 8) и большой опыт? много реализованных прог? И что ты далаешь когда тебе устройство гонит непрерывно через порт данные, а тебе надо их обработать, а буфер же не резиновый, даные затираются?
>Keith Flint (04.09.03 19:28) [21]
8^) Порадовал глубокими знаниями как программирования так и радиоэлектроники. Ну главное не знание, а желание к познаванию, просто не высказывай вещей в которых не уверен на 100%. Спрашивай, тебе все объяснят. Слушай pasha_676 он все правильно говорит
>pasha_676
Молодец мне терпения не хватило бы.
← →
Di.ma2002@mail.ru (2003-09-05 11:12) [28]Вот как раз устройство у меня и гонит данные непрерывно :))
Опыт большой сам разработал радиомодем, сам запрогромировал ему ПИК, сам написал прогу для отправки \ приема сообщений в порт !!
← →
Alexander Vasjuk (2003-09-05 11:16) [29]Di.ma2002@mail.ru (05.09.03 11:12) [28]
Какой ты молодец!
← →
pasha_676 (2003-09-05 11:33) [30]2Di.ma2002@mail.ru
Еще раз. Я затрудняюсь ответить со сколькими самопальными, согласующими и стандартными устройствами на коме я работал и под сколько из них написал программы (радиоприемники, измерители растояний, роботы, радиостанции, стереоочки - это что на память взбрело). Но я с уверенностью могу утверждать только одно - я не знаю всех функций и особенностей порта. То что ты создал модем и написал прогу к нему не говорит о том, что ты знаешь все компортах. О чем собственно и свидетельствуют твои посты.
← →
Di.ma2002@mail.ru (2003-09-05 11:36) [31]> что ты знаешь все компортах
Разве я это утверждал, вообще то я конкретно о своём случае рассказывал
← →
ksa2002 (2003-09-05 11:41) [32]> А на что это влияет если есть логические операции?
Ясен перец что неначто но как ты можешь перекиуть 1 бит ?
Чтоб вот именно a=1 и его переслать ?
← →
Di.ma2002@mail.ru (2003-09-05 11:41) [33]2Keith Flint и вообще если разговор о компанетах то лучше заглянуть сюда !! http://www.torry.net/modems.htm
Здесь можно многое найти, если ты конечно тут не был !!
← →
pasha_676 (2003-09-05 12:13) [34]
> Ясен перец что неначто но как ты можешь перекиуть 1 бит
> ?
В данном конкретном случае о котором идет реч, на контакте ком-порта, еще раз, для тех кто окончательно не вылез из бронепоезда и так и не удосужился заглянуть в хелп на EscapeCommFunction и в статью пишу - EscapeCommFunction(CommHandle, SETDTR); Ножка DTR устанавливается в "1".
Для пересылания одного бита информации по обычному контакту передачи данных разрабытывается протокол передачи. Физически передается конечно минимум один байт, а согласно протоколу может и один бит (ну или 8). Это уж как сам протокол сделаешь.
← →
Verg (2003-09-05 12:23) [35]
> pasha_676 © (05.09.03 12:13) [34]
Э-э, не увлекайся.
Смотря что является битом в контексте конкретного протокола.
Если бит - это то или иное значение потенциала, то ты прав
Если же бит, например, - это импульс той или иной строго определенной длительности, возможность реализации такого еще под очень большим вопросом для простого смертного приложения в Win32. Может понадобится спец-драйвер уровня ядра.
← →
jack128 (2003-09-05 12:38) [36]
> . Кстати +-12 В (причем 1 помоему -12 В - но это точно не
> помню), а не пять (хотя слышал, что есть и порты с ТТЛ уровнями,
> но это уже вроде отклонение от стандарта).
ИМХО стандарт говорил(лет 10 назад по крайней мере) 0 - (+3)-(+12В) 1 - (-3)-(-12В) Другое дело что на компах обычно действительно (-12)-(+12), но бывает и другие варианты..(Просто сам недавно наткнулся... 2 недели разбирался в чем дело..)
← →
pasha_676 (2003-09-05 12:58) [37]
> Если же бит, например, - это импульс той или иной строго
> определенной длительности,
То его можно реализовать опять же с помощью EscapeCommFunction. С определенной точностью конечно. Ничто не мешает выставить сигнал на определенный период времени, а потом сбросить. Согласен - что все эти проблеммы упираются в разработку протокола. Но вопрос разрешимый без драйверов уровня ядра (ну может в ряде случаев, типа низкая длительность импульса, они конечно и понадобятся).
> 0 - (+3)-(+12В) 1 - (-3)-(-12В)
Что не совпадает с ТТЛ (Хотя когда то был случай - срабатывало, но это из области риска). Однако за пояснения пасибо.
← →
-=Vlad=- (2003-09-05 13:29) [38]Народ если вам необходимо через компорт выдавать импульсы определенной длительности варируйте таким параметром как частота, именно она отвечает за длительность одного бита. Не забывайте, что UART не может работать с одиночными импульзами. Всегда будет стартовый бит, от 5 до 8 бит данных и минимум 1 стоповый. Бит четности можно отменить. И никак иначе потому как это устройство асинхроное и никакие протоколы и драйвера этого не изменят. Если задача серьезная поройте в документациях по синхронному обмену данных. Раньше были такие платы как SDLC, в руках не держал только гдето про нее читал. Вот так.
← →
-=Vlad=- (2003-09-05 13:32) [39]ЗЫ а EscapeCommFunction может выставить DTR и RTSные ноги в ноль или единицу и держать этот уровень до его отмены, так что ни про какую длительность не может быть и речи 8)
← →
Verg (2003-09-05 13:34) [40]Не, ну чес-слово, ну по 25-му кругу уже понесло....
> -=Vlad=- © (05.09.03 13:29) [38]
Ну может он выдать одиночный импульс, может:
SetCommBreak(HCFile);
Sleep(500);
ClearCommBreak(HCfile);
Заряди себе на тачку и увидишь импульс длительностью 500 мс на выводе Tx!
Страницы: 1 2 вся ветка
Форум: "Система";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.032 c