Форум: "Система";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.21;
Скачать: [xml.tar.bz2];




Вниз

Com Port 


VitalyU   (2001-12-09 06:06) [0]

Подскажите как программно подать на какую-либо ножку ком-порта напряжение и потом программно выключить?



Digitman   (2001-12-09 14:37) [1]

Никак. Состояние физ.линий выходной интерфейсной шины стандартных COM-устройств управляет UART-контроллер по определенной (а не произвольной) логике.



ComPort   (2001-12-09 14:38) [2]

Ну если токмо на DTR или RTS.



Satrap   (2001-12-13 09:58) [3]

procedure SetPort(addres,Value:word);
begin
Value:=trunc(Value and 255);
asm
push ax
push dx
mov ax,addres
mov al,Value
out ax,al
pop dx
pop ax
end;
end;

У меня вот так работает.



Satrap   (2001-12-13 10:08) [4]

Извините коллега, я торопился и ошибся, правильно вот так:

procedure SetPort(Addres,Value:Word);
var
bValue:byte;
begin
bValue:=trunc(Value and 255);
asm
// тут все то же самое, только mov al,bValue
end;
end;

На всякий случай, нужно ведь еще знать базовые адреса портов. для com1 обычно 3f8H, для com2 2f8h. Но эти адреса можно и изменить в настройках
BIOS



Digitman   (2001-12-13 10:18) [5]

>Satrap
Это ты так замечательно "на ножки напряжение подаешь" ?)))))



OlegY   (2001-12-13 14:49) [6]

Никак. Состояние физ.линий выходной интерфейсной шины стандартных COM->устройств управляет UART-контроллер по определенной (а не произвольной) >логике.

Посмотри EscapeComFunction()



ComPort   (2001-12-14 01:59) [7]

Bravo Satrap! Токмо "Извините коллега, я торопился и ошибся", надо было бы указывать во всех Ваших ответах!
Тише едешь - дальше будешь.



Satrap   (2001-12-14 11:52) [8]

Вы друзья, как всегда предельно лоялны в оценках, хотя, что вас конкретно не устраивает не ясно. Конечно, эта процедура не позврляет подавать на ноги ком порта какое вздумается напряжение, а только лог 0 или 1
Короче, что не так?



Digitman   (2001-12-14 14:35) [9]

>OlegY
Ну и где ты там увидел (в EscapeCommFunction), что можно произвольно манипулировать напряжением на вых.линий порта ?



Digitman   (2001-12-14 14:46) [10]

"какая-либо ножка" - читай : произвольно выбранная вых.физ.линия разъема порта.

Из 9-ти линий сразу "выкидываем" линии SG и PG - они вообще неуправляемые.

Линия TxD недоступна для непосредственной установки состояния - она управляется микроконтроллером UART синхронно с тактовым генератором.

Линии CTS, DCD, DSR - входные.

Остаются линии DTR и RTS (, ). Но это же, согласитесь, далеко не "любая ножка" !!!!!



gek   (2001-12-14 14:48) [11]

Satrap прав только 0 или 1
У меня например так все и работает на порту



Digitman   (2001-12-14 14:51) [12]

>gek
А что, кто-либо здесь усомнился, что COM-порт не дискретное, а аналоговое устройство ?)))



gek   (2001-12-14 15:45) [13]

>> Digitman ©
Ты меня не совсем верно понял



Digitman   (2001-12-14 16:09) [14]

>gek
А как ьебя еще понимать, если ты такие комментарии приводишь, будто кроме 0 и 1 на линях дискретного устр-ва может что-то еще присутствовать ?)



ComPort   (2001-12-15 02:12) [15]

А я уже совсем запутался пытаясь выполнить
out ax,al см. Satrap (13.12.01 09:58)
по адресу 3F8H см. Satrap (13.12.01 10:08)
Один черт разберется что и куда нужно передать или выставить!
Ну а насчёт произвольного потенциала на выводах, готов дать ссылку на фирму (отечественную), которая производит классные устройства для вывода и/или считывания аналоговой информации с/в компьютер.



Mbo   (2001-12-15 07:09) [16]

ну дай ссылку -
есть потребность в АЦП 20-разрядном или лучше,
скорость не особенно важна.
Все лепят в основном шустрые 14-разрядные...



ComPort   (2001-12-15 17:14) [17]

Держи http://www.lcard.ru



MBo   (2001-12-16 07:47) [18]

Знаю такую контору. У них нет того, что мне нужно, только один 24-х разрядный АЦП, но внешний и дорого.



CommPort   (2001-12-17 05:48) [19]

Ну извини. Но твои запросы "весьма не ординарные". Если ты когда нибудь работал с "физическими" устройствами и цифровыми вольтметрами, к примеру, то мог бы увидеть как это сложно. Там пятый знак (в большинстве случаев) скачет как псих, а уж про следующие и разговоров нет. И это при том, что там используются максимальные способы подавления помех. Т.е. я хочу сказать, что "такие приборы" - обязательно "внешние" и, имхо, "дорогие". Иначе никак.



Satrap   (2001-12-17 14:47) [20]

Хотелось бы ответить ComPort. Я вхожу в интернет с работы, тут очередь на интернет,и она
действует мне на нервы, так что если я написал out ax,al, я опять ошибся, прошу пардону.
Правильно out dx,al. В dx адрес в al данные, команда out подает данные непосредственно
на порт процессора. Но ты ComPort кое что еще сделал не так:

1. 3f8 это базовый адрес Com1. Скорей всего, у тебя там мышь.
2. Я не говорил, что надо пользоваться 3f8 или 2f8 это только базовые адреса, указывать
надо не их. Адрес DTR если не ощибаюсь,базовый адрес+4 , RST не помню.
3. Порт перед использованием надо открыть(захватить) с помощью CreateFile. Объяснять как это
делается мастерам дельфи я даже не решаюсь.

Клянусь богом, аллахом и ветром, я написал две программы, используя данную процедуру, одна
опрашивает сеть MicroLane, другая читает данные EEPROM, и все безубойно работает.



Com Port   (2001-12-18 03:20) [21]

2 Satrap
Ну во-первых, ВСЕ адреса работают только в линейке 9х.
Во-вторых, "Адрес DTR" или "Адрес RTS" - это НОНСЕНС. Есть порт, "Base address +4" ,(т.е. для 3F8Н - это 3FC,) установка бита 0 в единицу -означает установку DTR в единицу, а установка бита 1 - соответственно RTS.
Далее, использование 32-битной функции "CreateFile" сводит на нет ВСЕ предыдущие высказывания о портах. Либо То, либо ЭТО.
Насчет клятв - спорить не собираюсь. Просто верю, что это правда. Но в описании программы - ???



Digitman   (2001-12-18 13:49) [22]

>ComPort
Ты , может, пояснишь, для чего тебе все это нужно ? Ты хочешь нестандартно использовать COM-port что ли ? Типа - использовать только выходные линии RTS и DTS (имея некоторую возможность управлять их состоянием непосредственно) для управления неким устройством, несовместимым с RS-232 ?



Comm Port   (2001-12-18 14:57) [23]

2 Digitman
Я то и так использую их нестандартно, а именно для питания некоего преобразователя и иногда RTS для переключения режима работы оного. Но Вы ошиблись не я автор вопроса. Автор давно уже ушел.



Digitman   (2001-12-18 15:14) [24]

>Comm Port
Н-да, действительно). Вопрос "Com port" и НИК "Comm Port" слишком пересекаются.
Не чудил бы ты с НИКом. Вроде с головой-то "дружишь", и - неплохо, а уподобляешься разным клоунам местным, испытывающим порой оргазм от изобретательства совершенно дурацких НИКов ... извини уж) ...



Someone   (2001-12-18 15:29) [25]

2 Digitman
Может Вы и правы.



Digitman   (2001-12-18 15:44) [26]

>Someone
Рискуя запустить очередной флейм, всен же спрошу - в чем прав ? По сабжу ? Вас, сударь, в этой дискусии как-то не наблюдалось ...



Someone   (2001-12-18 18:03) [27]

Сорри. Забыл приписать Comm Port -> Someone. Флейма не надо.




Форум: "Система";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.21;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.77 MB
Время: 0.027 c
3-66729           Demon ltd             2002-02-20 17:19  2002.03.21  
работа с сортировкой в dbgreed е


4-67038           AlexGO                2002-01-21 10:59  2002.03.21  
File sockets under Win2000


6-66939           Muxec                 2002-01-03 20:31  2002.03.21  
Internet components


3-66800           Demon ltd             2002-02-24 22:18  2002.03.21  
Удаление из нескольких баз по указанному запросу


3-66748           Alex Laza             2002-02-19 10:40  2002.03.21  
Как получить доступ к .dbf Налоговой отчетности за 2001 г. (версия 2.1)?