Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Теоретические вопросы _ Проблемка с COM-портом

Автор: Geo 10.04.2003 16:54

Такая ситуация...
Есть устройство, с 25-pin serial выходом, при этом распайка по пинам абсолютно не стыкуется со стандартной.
Есть COM-порт компьютера, через который хочется связать его с железякой.
Есть еще собственноручно спаяный переходник между железякой и портом.
Есть прога на паскале, которая должна бы считывать то, что у нас приходит с порта.
Результат - вся эта конструкция вместе не работает. :'(

А теперь собственно вопросы ???
Как правильно юзать порт - с использованием PortW, вызовом прерывания, assign-ом (как где-то на этoм форуме предлагали) или еще как?

И где есть человеческое описание протокола RS-232, то есть не только названия сигналов и по каким проводам, а когда какой из них выставляется и когда спадает и какой результат они вызывают?

Thx a lot!

Автор: AlaRic 12.04.2003 16:06

Мне интересно как порт юзается с помощью assign?

Автор: GLuk 12.04.2003 16:53

Цитата
Мне интересно как порт юзается с помощью assign?


А на каком форуме - ему это предлагали? В принципе - это возможно, если переписать проц. Assign.  :)
А по поводу описаловки RS посмотри в поисковиках, инфы море...

Автор: trminator 12.04.2003 21:27

По поводу assign - это мог написать я... За что купил - за то и продаю. Цитирую дословно из книги Епанешникова:
Связь с внешними устройствами в языке Паскаль осуществляется также через файловые переменные.
В TP существует два типа внешних устройств: устройства ОС и текстовые устройства.
Устройства ОС, с которыми осуществляется обмен информацией, могут быть описаны как файлы со стандартными именами. Эти имена следующие:
<...>
COM1, COM2 - имена двух портов
<...>


Если честно, то сам не пробовал - не на чем :-[ Но за что купил - за то и продаю.

Автор: GLuk 13.04.2003 1:30

А что это за чувак - Епанешников и какого года книга?

Автор: AlaRic 13.04.2003 23:13

Цитата
В принципе - это возможно, если переписать проц. Assign.  

Да, тут выход один!

Автор: trminator 14.04.2003 20:31

А. М. Епанешников, В. А. Епанешников, "Программирование в среде Turbo Pascal 7.0", 4-е изд, М., Диалог-МИФИ, 2000.

Опять же говорю - сам не пробовал, т. к. не на чем - ни на com, ни на lpt ничего не висит. Компилятор не ругается. Может, кто проверит - мне самому интересно?

Автор: GLuk 14.04.2003 21:50

Цитата
А. М. Епанешников, В. А. Епанешников, "Программирование в среде Turbo Pascal 7.0", 4-е изд, М., Диалог-МИФИ, 2000.

Опять же говорю - сам не пробовал, т. к. не на чем - ни на com, ни на lpt ничего не висит. Компилятор не ругается. Может, кто проверит - мне самому интересно?


Попробую, если с'ассигнит на LPT, может и выведу что на принтер..

Автор: GLuk 14.04.2003 23:22

Const
    a:array[1..12] of Char = ('A','B','C','D','E','F','G','H','I','J','K','L');
Var
  F:File;
Begin
    Assign(F,'LPT1');
    Reset(F);
    BlockWrite(F,a,12);
    Close(F);
End.

ЭТО выводит на принтер (если, конечно, он висит на LPT1) начало англ.  алфавита + кучу всякой хрени. В принципе это же стандартный ДОС stdout!!!

Автор: Geo 15.04.2003 17:16

Попробовал запустить програмку - с началом англ алфавита - оно отвечает, что Error 160: Device Write Fault. Кстати, кажется там должно быть Rewrite вместо Reset

На PortW[$2f8]:=$AA не ругается, но осциллограф, присобаченый к выходам порта, не показывает ничего..... >:(

Автор: GLuk 15.04.2003 20:49

Доки по интерфейсу с RS читал??

Автор: Geo 17.04.2003 13:30

в точности того, что мне нужно - не нашел, но кое-что полезное есть.

Автор: GLuk 19.04.2003 8:08

Тебе нужен интерфейс с RS или распайка кабеля?

Автор: Geo 21.04.2003 15:13

Распайка кабеля у меня есть. Мне нужны временные диаграммы этих сигналов. Интересует, например, когда спадает сигнал готовности к приему - после первого переданного бита даных или после последнего, ну и в таком роде...

А вообще-то основная проблема - заставить пахать порт! Он упорно притворяется нерабочим.

Автор: Geo 22.04.2003 18:46

Нет, это просто маразм... >:(

Все сосотяния портов 2F8-2FE меняются так, как будто все посылается. Реально же на осциллографе я не вижу ничего!  :o

Может, у кого-нибудь есть идея, даже самая дурацкая? Очень нужно!

Автор: Леонид 29.04.2003 15:12

Вообще-то COM - дволольно сложная в управлении железяка, кроме как по служебным линиям DTR - DSR и RTS - CTS напрямую вывести/прочитать ничего нельзя. Перед тем, как с ним работать, надо его запрограммировать - поставить формат обмена и установить делитель скорости. Под чем ты пытаешься его использовать - под DOS или "форточками" (разница глобальная)? Как тебе нужно организовать обмен - произвольной последовательностью сигналов или в формате RS-232? Скинь мне ответы на мыло. Я давно занимаюсь управлением всяким нестандартным хардом через COM, попробую помочь.
Леонид.