Помощь - Поиск - Пользователи - Календарь
Полная версия: Проблемка с COM-портом
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
Geo
Такая ситуация...
Есть устройство, с 25-pin serial выходом, при этом распайка по пинам абсолютно не стыкуется со стандартной.
Есть COM-порт компьютера, через который хочется связать его с железякой.
Есть еще собственноручно спаяный переходник между железякой и портом.
Есть прога на паскале, которая должна бы считывать то, что у нас приходит с порта.
Результат - вся эта конструкция вместе не работает. :'(

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

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

Thx a lot!
AlaRic
Мне интересно как порт юзается с помощью assign?
GLuk
Цитата
Мне интересно как порт юзается с помощью assign?


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


Если честно, то сам не пробовал - не на чем :-[ Но за что купил - за то и продаю.
GLuk
А что это за чувак - Епанешников и какого года книга?
AlaRic
Цитата
В принципе - это возможно, если переписать проц. Assign.  

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

Опять же говорю - сам не пробовал, т. к. не на чем - ни на com, ни на lpt ничего не висит. Компилятор не ругается. Может, кто проверит - мне самому интересно?
GLuk
Цитата
А. М. Епанешников, В. А. Епанешников, "Программирование в среде Turbo Pascal 7.0", 4-е изд, М., Диалог-МИФИ, 2000.

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


Попробую, если с'ассигнит на LPT, может и выведу что на принтер..
GLuk
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
Попробовал запустить програмку - с началом англ алфавита - оно отвечает, что Error 160: Device Write Fault. Кстати, кажется там должно быть Rewrite вместо Reset

На PortW[$2f8]:=$AA не ругается, но осциллограф, присобаченый к выходам порта, не показывает ничего..... >:(
GLuk
Доки по интерфейсу с RS читал??
Geo
в точности того, что мне нужно - не нашел, но кое-что полезное есть.
GLuk
Тебе нужен интерфейс с RS или распайка кабеля?
Geo
Распайка кабеля у меня есть. Мне нужны временные диаграммы этих сигналов. Интересует, например, когда спадает сигнал готовности к приему - после первого переданного бита даных или после последнего, ну и в таком роде...

А вообще-то основная проблема - заставить пахать порт! Он упорно притворяется нерабочим.
Geo
Нет, это просто маразм... >:(

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

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