Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

rs-232 и можно ли узнать запитан ли любой из его пинов? [D7, XP]


Страницы:   1 2

Zheksonz ©   (2013-08-23 19:19:00) 

Управление "железякой" осуществляется через контроллер на RS-232, который не имеет обратной связи, это создаёт определённые трудности, т.к. команды в порт уходят и счётчики замелькали, при этом юзверь вилку контроллера не воткнул и недоумевает, почему не работает программа.
Хотелось бы узнать, можно ли использовать незадействованные в передаче данных пины COM порта, и как при это их контролировать?


умный-преумный   (2013-08-24 21:52:00) [1]


> Германн ©   (24.08.13 21:21) [31]

Data Set Ready (DSR) – This is a signal turned on by the DCE to indicate to the
DTE that it is connected to the line.


Zheksonz   (2013-08-24 21:29:00) [2]

Удалено модератором
Примечание: Достаточно, ты успел много народу оскорбить.


Zheksonz   (2013-08-24 21:26:00) [3]


> умный-преумный   (24.08.13 21:13) [30]


У кого ещё какие версии что меня бесит и какие у меня комплексы? Если все считают так же, то может считать тему закрытой?


Германн   (2013-08-24 21:21:00) [4]


> сигнал готовности устройства - DSR

Хм.


умный-преумный   (2013-08-24 21:13:00) [5]


> Zheksonz   (24.08.13 20:30) [27]
>

нихрена ты не прочитал. если бы хоть что-то прочитал, то не стал бы здесь спрашивать, и не писал бы этот бред.

> if ModemStat and MS_DSR_ON <> 0 then
>      ShowMessage('The DSR (data-set-ready) is on.');


> нужно замкнуть контакты 7 и 8, RTS и CTS соответственно

как это между собой соотносится?
где учат такому дебильному (по-другому не назвать) совместному обозначению контактов (позиционным номер разъема, которые отличаются в разных типах, и наименованием сигналов)?
Выкини свои комплексы. Тебя бесит, что считают за глупого? Зря. Во-первых, за безграмотного, а во-вторых, ты такой и есть - совершенно безграмотный. И совершенно нечего этого стыдится, или раздражаться.
Я уже дал универсальный ответ, подходящий наибольшим образом под столь скудно озвученную задачу - ты игнорировал его, и полез в сторону. Но и там наломал дров, не изучив минимум стандарта rs-232: сигнал готовности устройства - DSR, логика единицы и ноля обеспечиваются напряжением от +-3 до +-15 вольт.
И как результат самонадеянности и необоснованной амбициозности - тупое решение


Zheksonz   (2013-08-24 21:01:00) [6]


> ProgRAMmer Dimonych ©   (24.08.13 20:55) [28]
Вы так ничего и не поняли, мсье.


Я даже отрицать не буду... Вы правы))


ProgRAMmer Dimonych   (2013-08-24 20:55:00) [7]

> Всё, прочитал! Вернее даже зазубрил!!! Теперь я могу считаться
> человеком, который умеет правильно задавать вопросы? Может
> теперь мне можно ехидничать и оскорблять тех кто что-то
> знает хуже меня, а заодно перейти на следующую стадию становления
> высокомерного человека? )))

Вы так ничего и не поняли, мсье.


Zheksonz   (2013-08-24 20:30:00) [8]


> умный-преумный   (24.08.13 20:02) [25]


Всё, прочитал! Вернее даже зазубрил!!! Теперь я могу считаться человеком, который умеет правильно задавать вопросы? Может теперь мне можно ехидничать и оскорблять тех кто что-то знает хуже меня, а заодно перейти на следующую стадию становления высокомерного человека? )))

А по теме, всем, кому понадобится использование RS-232 для передачи сигнала от устройства на компьютер, нужно замкнуть контакты 7 и 8, RTS и CTS соответственно, а считать на компьютере этот сигнал можно следующим образом:

procedure TForm1.Button1Click(Sender: TObject);
var
 CommPort : string;
 hCommFile : THandle;
 ModemStat : DWord;
begin
 CommPort := 'COM2';

 {Open the comm port}
 hCommFile := CreateFile(PChar(CommPort), GENERIC_READ, 0, nil,
 OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
 if hCommFile = INVALID_HANDLE_VALUE then
 begin
   ShowMessage('Unable to open '+ CommPort);
   exit;
 end;

 {Get the Modem Status}
 if GetCommModemStatus(hCommFile, ModemStat) <> false then
 begin
   if ModemStat and MS_CTS_ON <> 0 then
     ShowMessage('The CTS (clear-to-send) is on.');
   if ModemStat and MS_DSR_ON <> 0 then
     ShowMessage('The DSR (data-set-ready) is on.');
   if ModemStat and MS_RING_ON <> 0 then
     ShowMessage('The ring indicator is on.');
   if ModemStat and MS_RLSD_ON <> 0 then
     ShowMessage('The RLSD (receive-line-signal-detect) is on.');
 end;

 {Close the comm port}
 CloseHandle(hCommFile);
end;


ProgRAMmer Dimonych   (2013-08-24 20:28:00) [9]

> [18] zheksonz   (24.08.13 17:10)

Забавно, но именно благодаря такому стилю ответов Мастеров я лет 8 назад начал ощущать резкий прирост скиллов. И на сегодняшний день если и приходится задавать здесь вопросы, то они уже относятся не к конкретной реализации, а к общим вопросам. Потому что ответы на вопросы типа «Как включить лампочку?» всегда можно найти в гугле (все задачи уже кто-то когда-то решал), в документации лампочки или экспериментальным путём. А вот вопросы наподобие «Как лучше расположить лампочки, чтобы <…>?» могут быть действительно интересными и здешние Мастера обычно достаточно активно включаются в обсуждение и объём флуда в таких темах минимален.


умный-преумный   (2013-08-24 20:02:00) [10]


> Zheksonz   (24.08.13 19:21) [24]

http://segfault.kiev.ua/smart-questions-ru.html


Zheksonz   (2013-08-24 19:21:00) [11]


> Научись правильно задавать вопросы для начала


А что тебе не нравится в моём последнем вопросе?


turbouser   (2013-08-24 19:14:00) [12]


> Zheksonz   (24.08.13 18:57) [22]


> А как же тогда менять логическое состояние этого пина?

Научись правильно задавать вопросы для начала


Zheksonz   (2013-08-24 18:57:00) [13]

В общем рано я радовался... Думал, что логическое состояние на пине изменится, когда я CTS на "землю повешу", а не тут-то было(((

А как же тогда менять логическое состояние этого пина?


Zheksonz   (2013-08-24 18:54:00) [14]


> про "самоутвердится" за твой счет - смешно.


Вот и мне смешно))) Т.к. не за мой счёт, а в принципе и постоянно))


умный-преумный   (2013-08-24 17:33:00) [15]


> Anatoly Podgoretsky ©   (24.08.13 15:42) [17]

не прав. диагноз - это при болезни. тут болезнь отсутствует.


> zheksonz   (24.08.13 17:10) [18]

про "самоутвердится" за твой счет - смешно. самоутверждение возможно, подловив мастера на ошибке. в данном же случае...


Zheksonz   (2013-08-24 17:28:00) [16]

Кстати, на одном из сайтов в интернете нашёл следующий код:
var
 Status: Cardinal;
begin
 PortHandle:= CreateFile('COM1', GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
 if GetCommModemStatus(PortHandle, Status) then
   begin
     if Status and MS_CTS_ON <> 0 then ; // CTS is ON
     if Status and MS_DSR_ON <> 0 then ; // DSR is ON
     if Status and MS_RING_ON <> 0 then ; // RI is ON
   end;
 CloseHandle(PortHandle);


вот и весь ответ на вопрос ))


zheksonz   (2013-08-24 17:10:00) [17]


> И даже советовать замкнуть 2 и 3 на стороне железяки, чтобы
> получить возможность не только определить подсоединенность,
>  но и корректность прохождения данных (целостность кабеля)
> простейшим loopback тоже нет желания.


Да ладно, не было... вижу было))) Но суть не в том... Как после замыкания 2х, 4х или не важно скольки концов средствами Делфи определить что они замкнуты? Или любой из них "сел на землю"? Если есть ссылка где это расписано, то дайте плз. Только не нужно мне рассказывать, что это слишком глупый вопрос поэтому МАСТЕРА не снизойдут до того, чтобы рассказать где информация на то, как это делается. Лучше проигнорируйте, конечно если желание самоутвердиться вам позволит это сделать ; )


> В результате вышеперечисленного, нет желания, кроме как
> пофлудить.


Вот это чистая правда, и мизерное количество новичков ищущих здесь помощи лишь подтверждает эти слова.


> Это уже диагноз.


Анатолий, зачем тратить время на пустословие? Ну если ты доктор, иди лечи людей, если ты мастер, то учи их решать задачи... твой же конёк в каждой ветке, даже для новичков, называть задающих вопросы именами любимых героев... ну смысл в этом какой?


Anatoly Podgoretsky   (2013-08-24 15:42:00) [18]


> zheksonz   (24.08.13 14:01) [13]

Опять другие виноваты и только один Д'Артаньян.
Это уже диагноз.


умный-преумный   (2013-08-24 15:30:00) [19]


> turbouser ©   (24.08.13 14:21) [15]

не стоит.

неоднократно говорилось, что"помощь" и "сделать все" - разные вещи.
в данном случае, даже второе невозможно, из-за полностью отсутствующих исходных данных. Кроме того, поправка в терминологии вызывает у истца раздражительность, и он упорно настаивает на своей формулировке. Кроме того, информация по вопросу на 99,99% присутствует в интернете, находится на первом месте в поисковиках, и более того - на русском языке.
В результате вышеперечисленного, нет желания, кроме как пофлудить.
И даже советовать замкнуть 2 и 3 на стороне железяки, чтобы получить возможность не только определить подсоединенность, но и корректность прохождения данных (целостность кабеля) простейшим loopback тоже нет желания.


turbouser   (2013-08-24 14:21:00) [20]

Стоит ли упоминать, что тут отметились люди, которые в общении с железяками сцобаку скушали?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо