Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 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.033 c
6-41870
TButton
2003-09-05 20:50
2003.11.13
Сокеты


4-42238
Dmitry V. Averuanov
2003-09-17 11:12
2003.11.13
Как запустить свою программу как сервис NT


4-42232
Evgeniy_K
2003-09-01 12:23
2003.11.13
Сохранение картинки из буфера в файл


1-41251
DimaK
2003-10-25 13:01
2003.11.13
Запись в файл


4-42272
Olfi
2003-09-11 23:43
2003.11.13
раскладка клавиатуры





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский