C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Как использовать COM порт вместе с другой прогой?
Евгений
Отправлено: 10.08.2003, 02:59


Не зарегистрирован







На СОМе сидит PC Remote Control (читает с IR датчика)-использует порт на чтение, мне надо в этот же порт писать — есть ли возможность так сделать? Винда-ХР.
Георгий
Отправлено: 10.08.2003, 12:33


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



если другая прога открыла порт в эксклюзивном режиме, то обход этого видится мне настолько трудоёмким, что не стоит напрягаться.
Евгений
Отправлено: 11.08.2003, 00:48


Не зарегистрирован







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

Ну хоть ради интереса — как то же это можно сделать? — помню есть такая прога WinIO — она же как то распоряжается портами по своему усмотрению — может можно так же — или еще лучше — нельзя ли использовать ее саму? — может кто-нибудь знает где про это ясно и понятно написано?


sprinter
Отправлено: 11.08.2003, 08:31


Ученик-кочегар

Группа: Участник
Сообщений: 14



Одновременно читать и писать, конечно, не получится. Но если PC Remote Control читает порциями (т.е. порт не постоянно занят), то в промежуток, видимо, можно всунуться. А на мультикарту особых надежд нет — для каждого порта тебе придется выделить прерывание и адрес. Если с адресом более-менее ясно, то с прерыванием сложнее. Поставишь на одно два порта и работа сними может быть только по очереди... А уж как винда с ними будет работать...
Да, кстати, я не понял — хочешь работать с двумя разными устройствами (но как их подключать к одному порту без паяльника) или с одним и тем же ?
Георгий
Отправлено: 11.08.2003, 11:32


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



Можно сделать свой драйвер физического COM порта, который показывает 2 логических и выполняет объединение потоков данных на запись в порт, а вот с чтение будет сложнее — как различить в какой логический порт писать данные прочитанные с одного физического?
Но я считаю, что эта затея с использованием одного физического порта не стоит усилий — купи PCI COM порт, тогда и конфликтов по прерываниям не будет. Хотя и с обычной ISA мульти картой на современных машинах проблем не будет — её прерывание будет идентифицироваться как ISA прерывание, в то время, как со встроенного COM порта как PCI прерывание и стандартный виндусовый драйвер должен разобраться кто его по беспокоил.
А по поводу записи в порт, куда инфакрасный приёмник записан — а зачем туда писать???
Евгений
Отправлено: 12.08.2003, 02:12


Не зарегистрирован







Разъясняю подробнее:
с некоторый пор стал я значит, увлекаться электро-радио-схемотехникой и от того, что чешуться руки собираю очередную приблуду для компа — в данном случае — индикатор температуры проца на системном блоке на двух семисегментных индикаторах. Его можно конечно в три раза проще повесить на LPT но там само-разумеется уже висит принтер — поэтому удел индикатора — ком порт. Записывать устройство в порт само-собой ничего не станет — ему в принципе нужна только TD и GROUND. Ком портов у меня два. Один — Курьер USRовский, а второй — мой инфракрасный приемник — ну чтобы не поднимая попы фильм паузить, громкость убавлять и прочее. ИР приемник из порта ничего не читает — он туды пишет. Соответсвенно TD линия свободна, как нам и надо. Осталось тока програмно до нее достучаться. Можно конечно написать свою прогу для распознавания сигналов пульта — но чтобы сделать что-то хоть отдаленно такое же функционально удобное как PC Remote Control 4.0, который собственна и читает с ИР приемника, мне понадобится месяца два-три. Поэтому и пытаюсь использовать порт вместе с PC Remote Control.

Георгий — а подробнее насчет драйвера мона? А может вообще лучше без драйвера — можно же как то получить такой приоритет, чтобы в порт писать без спросу — собственно всё равно это мешать никому не будет. НЕ помню точно — но что-то типа Ring 0 надо поиметь. В нем проги по-моему все могут — только никогда не мог понять — как в этот Ринг нуль попасть. Хотя мож я вообще не в ту сторону думаю. Помогайте.
Георгий
Отправлено: 12.08.2003, 09:38


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



если вся эта затея ради +5В, от почему её не взять с БП? Там на любом отростке с питанием есть +5 и +12, и земля — выбирай что хочешь. Нагрузка у индикатора я думаю не большая (хотя кто тебя знает — ещё на лампах дневного света сделаешь) и с помошью куска медного провода эти 5В можно куда угодно завести.
Евгений
Отправлено: 13.08.2003, 00:28


Не зарегистрирован







Георгий, без обид, но Вы — ГЕНИЙ!
Так и сделаю. Только вот не совсем ясно — откуда две микросхемы К176ИЕ4 будет брать информацию для отображения на индикаторах? Если серьезнее — я через порт посылать буду информацию на сумматор-дешифратор для семисегментного дисплея. Планирую делать так — читаем либо прямо с микрухи(ну это если узнаем по какому порту она температуру пишет), либо с MBM берем, и отсылаем значение на ком порт — там микросхема отображает это на индикаторе(точнее — две микрухи на двух индикаторах). Стопудовый выход — это конечно мультикарта — но это ТАК НЕ СПОРТИВНО, что просто заподляк. USB мне пока не по зубам.
Георгий
Отправлено: 13.08.2003, 02:29


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



На счёт без обид согласен, только ты не сказал, зачем тебе туда писать, а я подумал, что ты питание так завести хочешь, а то один мой приятель управлял шаговым двигателем через COM порт (питание, направление движение, импульс движения — всё через линии COM порта).

Т.е. ты хочешь показания встроенного термодатчика (Intel — термодиод в кристалле, AMD — некоторые Epox показывают с термодиода, а остальные с подсоккетного датчика)? А ты учёл, что он показывает не температуру, а попугаев? И что будет у тебя проблема с работай с микросхемой, которая позволяет считывать эти показания — по changelog к MBM они регулярно добавляют корректную поддержку различных датчиков.

Не проще ли поставить поближе к основанию радиатора термодиод, АЦП, а всё остальное как и раньше хотел. Тогда не придётся удивляться почему с новой версией BIOS упала температура... Кстати на форуме overclockers.ru обсуждалиcь такие примочки — именно полностью аппаратные.

А мучиться с портом, потом с микросхемой или пытаться из другой проги выдрать температуру — по моему это слишком через ж*** (Какая хирургическая операция у нас самая сложная? Удаление гланд! Эээ А почему? Потому что делают через ж***!). По крайней мере займёт значительно больше времени, чем присобачить термодиод к радиатору.

Но если решишь делать програмно, то написание драйверов для MS Windows2000 я видел на wasm.ru,а по теме ничего больше сказать не могу.
Евгений
Отправлено: 13.08.2003, 03:19


Не зарегистрирован







С термодиодом — отстой, ибо там и делать то ничего не придется — через порт поинтереснее. Мы же руки чешем. Кстати, по поводу термодиоад — попробуйте на досуге засунуть его под процессор...А насчет несовместимостей — всё равно делаю ТОЛЬКО для себя и только под свой комп — на все остальные мат платы мне насрать. Спасибо за ссылку — будем пытаться.
Кстати, статью про подобные девайсы я увидел уже после того, как нашел применение старому индикатору и обрисовал в голове схему.

Вернуться в Вопросы программирования в C++Builder