Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.13;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.041 c
1-41496
adif
2003-10-28 14:42
2003.11.13
Архивирование файлов


3-41108
alexay
2003-10-23 09:20
2003.11.13
SQL monitor


1-41324
qwe
2003-10-30 17:59
2003.11.13
Классы


14-42015
Кен
2003-10-15 05:57
2003.11.13
Посоветуйте, какой нибудь хороший форум по Спутниковому ТВ ?


14-42052
coder_AK
2003-10-16 00:44
2003.11.13
Получение прав администратора