LPT не по назначению

Модератор: Модераторы

LPT не по назначению

Сообщение ostrog17 » 27.07.2011 19:31:05

Пытаюсь через порт ЛПТ поморгать светодиодом. Не получается поряду причин
1. Не работает метод открытия файла принтера f:=TFileStream.Create('/dev/parport0',fmOpenReadWrite)
Уже и права выставлял все что можно. Я так понимаю чтот при пересылке данных в файл принтера, размер файла должен изменится, а у меня ноль.
Помогите плиз
ostrog17
незнакомец
 
Сообщения: 6
Зарегистрирован: 27.07.2011 19:10:48
Откуда: г. Харьков

Re: LPT не по назначению

Сообщение Brainenjii » 27.07.2011 19:41:08

Тоже когда-то моргал светодиодом ^_^
Код: Выделить всё
program project1;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes, ports, x86, sysutils, Crt
  { you can add units after this };

{$R *.res}

Var
  i, j: Integer;
  aTime: TDateTime;

begin
  fpIOperm($9c00, 8, 1);
  For i := 0 To 10 Do
    Begin
      aTime := Now;
      For j := 1 To 50 + (10 - i) * 10 Do
        Begin
          port[$9c00] := 255;
          Sleep(i);
          port[$9c00] := 0;
          Sleep(5);
          If KeyPressed Then
            Begin
              Port[$9c00] := 0;
              Break;
            End;
        End;
      WriteLn(FormatDateTime('ss:zz', Now - aTime));
      WriteLn('Step: ' + IntToStr(i));
    End;
  For i := 9 DownTo 0 Do
    Begin
      aTime := Now;
      For j := 1 To 150 + (10 - i) * 10 Do
        Begin
          port[$9c00] := 255;
          Sleep(i);
          port[$9c00] := 0;
          Sleep(5);
          If KeyPressed Then
            Begin
              Port[$9c00] := 0;
              Break;
            End;
        End;
      WriteLn(FormatDateTime('ss:zz', Now - aTime));
      WriteLn('Step: ' + IntToStr(i));
    End;
  fpIOperm($9c00, 8, 0);
end.


// у меня это был второй LPT в системе, у первого адрес другой
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: LPT не по назначению

Сообщение ostrog17 » 28.07.2011 00:26:22

Да выдал такую ошибку
project1.lpr(57,5) Error: Can't open resource file: /tmp/project1.res

Может у меня что с прогой не так.
LAZARUS Версия #: 0.9.26.2-2 beta
Дата 2009-06-08
Версия FPC: 2.2.4
Ревизия SVN:18898
i386-linux-gtk 2 beta

На машине линукс 9.10
может чего то не хватает?
---------------------------------------------------------
мои шаги
При запуске нового проэкта выбираю "Программа"
стер все что там было и вставил Ваш код
изменил номер порта принтера на 0378
при запуске выдал ошибку
P.S просто мигнуть диодом - такой головняк
( в чистом DOS - нет проблем, а здесь)
не откажите провести за ручку через дорогу.
ostrog17
незнакомец
 
Сообщения: 6
Зарегистрирован: 27.07.2011 19:10:48
Откуда: г. Харьков

Re: LPT не по назначению

Сообщение sign » 28.07.2011 04:47:22

ostrog17 писал(а):LAZARUS Версия #: 0.9.26.2-2 beta
Дата 2009-06-08
Версия FPC: 2.2.4
Ревизия SVN:18898

:shock: :shock: :shock:
Заляните сюда, скачайте посвежей версию
sign
энтузиаст
 
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Re: LPT не по назначению

Сообщение v-t-l » 28.07.2011 11:13:08

ostrog17 писал(а):project1.lpr(57,5) Error: Can't open resource file: /tmp/project1.res

Удалите строчку:
Код: Выделить всё
{$R *.res}
v-t-l
энтузиаст
 
Сообщения: 733
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: LPT не по назначению

Сообщение serg_iv » 28.07.2011 16:31:16

serg_iv
постоялец
 
Сообщения: 276
Зарегистрирован: 15.10.2005 18:45:46
Откуда: Миасс

Re: LPT не по назначению

Сообщение ostrog17 » 30.07.2011 12:40:15

Установил версию 0.9.30. Вро ди бы стала нормально. При попытке запустить код первый раз пишет что не доступен файл /dev/parport0 Устанавливаю права через магнитик командер на чтение и запись файлу, идет компиляция, запускается форма и какое бы число не вводил диод как молчал так и молчит
P.S. посмотрел nano /proc/ioports за паралельный порт отвечает именно parport0.
Начинает жаба давить гдеже у меня глюк. очень хочется докопатся.
---------------------------------------------------------------------------------------------------
var
Form1: TForm1;
f:TfileStream ;//
n, g:integer;
ch, a:byte;

implementation

{ TForm1 }

procedure TForm1.Timer1Timer(Sender: TObject);
begin
n:=$378;
ch:=strtoint(edit1.Text);
f:=TFileStream.Create('/dev/parport0',fmOpenReadWrite); // открываем файл для записи и чтения
f.Seek(n, soFromBeginning);// смещаемся на величину n
f.Write(ch,1);// записываем в порт величину введенную в edit1
f.Seek(n+1, soFromBeginning);// смещаемся еще на 1 относительно n
f.Read(a,1);// читаем байт по адресу n+1
f.Free; // освобождаем память
edit2.Text:=inttostr(a);// в edit2 пишем значения байта по адресу n+1
end;
ostrog17
незнакомец
 
Сообщения: 6
Зарегистрирован: 27.07.2011 19:10:48
Откуда: г. Харьков

Re: LPT не по назначению

Сообщение Sergei I. Gorelkin » 30.07.2011 13:56:46

В примере по ссылке используется /dev/port, а не /dev/parport0.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1405
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: LPT не по назначению

Сообщение serg_iv » 30.07.2011 16:04:39

и устройство /dev/port доступно только от суперпользователя.
в убунте это судо путь к программе
в других линуксах su а потом путь к программе.
Хотя может я чего то и упустил.
serg_iv
постоялец
 
Сообщения: 276
Зарегистрирован: 15.10.2005 18:45:46
Откуда: Миасс

Re: LPT не по назначению

Сообщение ostrog17 » 31.07.2011 11:07:45

Большое спасибо за понимание и помощь.
Все получилось. Программу нужно с правами админа SUDO. Теперь бы вот настроить сам лазарь на запуск с правами админа (что бы режим отладки был с правами супер) а то не получается виполнить пошагово. И второе как настроить скомпилированную программу (которую написал), что бы запускалась с правами админа. А то каждый раз через консоль весьма не удобно. А так все норм. Теперь пойдет. Хочу еще также разобрать гейм порт. Весьма отличная штука для контроля состояния различных датчиков.
P.S. Сам лет 10 назад прошел микроконтроллеры на асме, а вот связывать с компом приходится сейчас.

Да чуть не забыл: при чтении данных с порта все время почему то 127 ??? Кто может прокоментировать почему?
ostrog17
незнакомец
 
Сообщения: 6
Зарегистрирован: 27.07.2011 19:10:48
Откуда: г. Харьков

Re: LPT не по назначению

Сообщение Kitayets » 04.08.2011 15:10:18

не надо работать в лазарус от root'а.

настройте свой линукс таким образом:
1. создайте новою группу
2. с помощью chown сделайте новою группу - группой владельца файла .dev/port
3. с помощью сhmod дайте группе разрешение на чтение/запись в dev/port
4. включите своего пользователя в созданную группу

----------
небольшая проблема, с тем что в современных GNU/Linux системах, файлы устройств создаются динамически при загрузке системы с помощью системы UDEV, таким образом изменение прав на устройство нужно прописывать в конфигах этого самого UDEV, иначе после перезагрузки системы права опять будут принадлежать root:root.
Kitayets
постоялец
 
Сообщения: 171
Зарегистрирован: 05.05.2010 21:15:24

Re: LPT не по назначению

Сообщение ostrog17 » 10.08.2011 00:15:48

Большое спасибо за очень дельные советы.
Есть интересный вопрос: у меня на порту LPT висит 8 светодиодов (пока имитируют исполнительные устройства). Так вот при старте системы ubuntu 9.10 происходит инициализация всех восьми линий порта (может и остальные тоже), при окончательной загрузке на порту остается код 04 тоесть горит один диод. Ситуация не совсем приятная по причине безконтрольного включения агрегатов. Может кто знает как этот недостаток побороть. Буду весьма признателен за ответ.
ostrog17
незнакомец
 
Сообщения: 6
Зарегистрирован: 27.07.2011 19:10:48
Откуда: г. Харьков

Re: LPT не по назначению

Сообщение serg_iv » 10.08.2011 14:20:01

я использую сторожевой таймер на трех транзисторах, но он отъест один пин.
serg_iv
постоялец
 
Сообщения: 276
Зарегистрирован: 15.10.2005 18:45:46
Откуда: Миасс

Re: LPT не по назначению

Сообщение ostrog17 » 13.08.2011 00:17:53

Уважаемый serg_iv если не трудно чуть по подробнее о сторожевом таймере (принцип действия). Как это у Вас организовано.
ostrog17
незнакомец
 
Сообщения: 6
Зарегистрирован: 27.07.2011 19:10:48
Откуда: г. Харьков

Re: LPT не по назначению

Сообщение serg_iv » 13.08.2011 15:02:19

Дык оно все в открытом доступе на сайте:
http://www.freepascal.ru/article/raznoe/20070808002100/
serg_iv
постоялец
 
Сообщения: 276
Зарегистрирован: 15.10.2005 18:45:46
Откуда: Миасс


Вернуться в Отчеты, работа с принтером

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Рейтинг@Mail.ru