Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2009, 12:47   #11
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
как я понял, чтобы разобраться в твоём сообщении, нужно разобраться с содержимым файла raport.pas
- а что вам тут неясно?
Цитата:
1 strobe O 0-бит (BA+1) INV
14 auto fd O 1-бит (BA+1) INV
16 init O 2-бит (BA+1)
17 slct in O 3-бит (BA+1) INV

15 error I 3-бит (BA+2)
13 slct I 4-бит (BA+2)
12 pe I 5-бит (BA+2)
10 ack I 6-бит (BA+2)
11 busy I 7-бит (BA+2) INV
1)
Цитата:
послать, допустим, в адрес 37А число в десятеричной системе исчисления и чтобы в этом адресе(если что, извиняйте за корявую терминологию) в итоге была картина типа '0100' - т.е. "зажечь" 16-ый пин.
- черным по-белому: FOutByte($379,data), где data: byte
data= $04 (второй бит, 16 контакт)

3)
Цитата:
Производственный процесс показал, что мне следует сменить библиотеку inpout32.dll на WinIO.dll
- вообще на производстве не используют чужие драйвера, т.к. это чревато, а делают свои, например есть такой пакет- windriver (analog devices и bitware используют в своих процессорных платах и т.д.)
а вообще:
http://mastershome.net.ru/vbfaq/c07.htm
http://www.internals.com
... кстати winio делает тоже самое, что и giveosys
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 02.11.2009, 18:04   #12
Karp_13
Всё знать хотяка!
Пользователь
 
Аватар для Karp_13
 
Регистрация: 21.04.2009
Сообщений: 67
По умолчанию

И снова я тут %))
Свободное время неумолимо стремится к нулю, время сдачи моего самодельного проекта приближается... а я, чъорт побери, никак не могу сдвинутся с мёртвой точки с вывеской "забавный LPT" ...))))
Много пробелов, так что многое не могу вдуплить.... И так, разрешите попробовать вернуться к небольшому нулю:

Кто нибудь может провести полный инструктаж по WINIO на русском доступном языке . Я обкопал пол инета - НИГДЕ ТАКОГО НЕТ. Пожалуйста, на первый раз, распишите все функции и процедуры, которые даёт WINIO и их параметры.
Я буду очень благодарен, правда. Помогите, плиз. Любая литература, которую я находил, улыбаясь, повествовала мне о диодах и как их зажигать... я уже видить их не могу О_О ...

ЗЫ: и между делом ответьте на вопрос, который просто вызрывает мне мозг, не щадя черепную коробку: я написал прогу на inpout32.dll, которая, используя стандартные функции этой библиотеки, считывала каждую милисекунду состояние на порту(какие пины горят, какие нет)... ПОЧЕМУ КОГДА ВКЛЮЧИЛИ ПРОГУ НА WINIO И ДЕВАЙС(РОБОТ под управлением сишной проги на WinIO) НАЧАЛ ДВИГАТЬСЯ - МОЯ ПРОГА НА ПОРТУ НЕ ЗАСЕКЛА НИКАКИХ(!!) ИЗМЕНЕНИЙ? О_о
Я вредный и нервный, но бдобр.
Karp_13 вне форума Ответить с цитированием
Старый 03.11.2009, 14:43   #13
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

А чем Вам библиотека inpout32.dll не нравится. Всего две функции и плюс функция преобразования десятичного числа в двоичное (я уже приводил ее) и Вы имеете полный доступ к регистрам порта для считывания или записи как "словами" так и побитово. Ну еще иногда надо обратное преобразование (из двоичного в десятичный).
Я во всяком случае работаю именно с этой библиотекой ( в Дельфи) и не с простыми светодиодами, а вполне нормальные проекты управления производственными установками (фасовочный автомат, термопласт автомат, дозирующие станции и т.п.).
Привлекает, что помимо управления на дисплее можно выводить фунуциональные мнемосхемы технологических процессов, удобно изменять и настраивать параметры.Есть возможность хранить в файлах настройки для разных режимов и видов продукции, сохранение всех изменений от оператора и т.п.
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Старый 04.11.2009, 23:48   #14
Karp_13
Всё знать хотяка!
Пользователь
 
Аватар для Karp_13
 
Регистрация: 21.04.2009
Сообщений: 67
По умолчанию

Просто нужно разобраться с WINIO... Потом может если всё будет круто - перейду на inpout32.dll - она мне тоже понравилась... но нужно разобраться с WINIO ...

Итак, в топку старые вопросы - ответы на них я уже нашёл)).
Вот новые:

1) Какого чёрта вылетает вот такая ошибка?!?!


при нажатии на батон2 при исполнении вот такого кода:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Bevel1: TBevel;
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
 //Объявляем функции
  function InitializeWinIo:longbool; stdcall; external 'WinIo.dll';
  procedure ShutdownWinIo; stdcall; external 'WinIo.dll';
  function GetPortVal(wPortAddr:WORD; pdwPortVal:LongWord;
                    bSize:BYTE):longbool; stdcall; external 'WinIo.dll';
  function SetPortVal(wPortAddr:WORD; dwPortVal:DWORD;
                    bSize:BYTE):longbool; stdcall; external 'WinIo.dll';
  function InstallWinIoDriver(pszWinIoDriverPath:PChar;
                   IsDemandLoaded:longbool):longbool; stdcall; external 'WinIo.dll';
  function RemoveWinIoDriver():longbool; stdcall; external 'WinIo.dll';

implementation

{$R *.dfm}

//Открываем, ставим, инициализируем, проверяем, идём дальше...
procedure TForm1.FormCreate(Sender: TObject);
var Result:integer;
begin
result:=0;
if not InstallWinIoDriver(PChar('C:\WinIo.sys'),false) then
  begin
  Result:=1;
  if result=1 then label3.Caption:='                  ERROR';
  exit;
  end;                   
if not InitializeWinIo() then
  begin
  Result:=2;
  if result=2 then label4.Caption:='                  ERROR';
  exit;
  end;                      
  if result=0 then label1.Caption:='Ok!';
end;

//Записываем в порт... Всё работает отлично
procedure TForm1.Button1Click(Sender: TObject);
begin
SetPortVal($378, 2, 1);
end;

//Читаем с порта.... ААААА!!! ОШИБКА!!! АААА!!!!
procedure TForm1.Button2Click(Sender: TObject);
var a:LongWord;
begin
GetPortVal($378,a,1);
end;

//Закрываемся, уходим...
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if Win32Platform=VER_PLATFORM_WIN32_NT then
 begin
 ShutdownWinIo;
 RemoveWinIoDriver();
 end;
end;

end.
Записывает всё правильно, круто... Проверяю - записывает круто... А вот с считыванием чтот нето... Либо я не правильно установил эту библиотеку(куда-то что-то недокопировал... либо с типами данных ошибаюсь.... но чёрт, что делать?)

2) Лёгкий вопрос на засыпку:
Ответьте в двух словах по русски что делает вот такая строчка на C++ ?:
SetBit(&ConfigByte, RD)
И на что влияет значок "&"?

Заранее громадное спасибо! -_-
Я вредный и нервный, но бдобр.
Karp_13 вне форума Ответить с цитированием
Старый 04.11.2009, 23:57   #15
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

1)
Код:
function GetPortVal(wPortAddr:WORD; pdwPortVal:LongWord;
                    bSize:BYTE):longbool; stdcall; external 'WinIo.dll';
Код:
GetPortVal($378,a,1);
- усе нормально?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 05.11.2009, 00:09   #16
Karp_13
Всё знать хотяка!
Пользователь
 
Аватар для Karp_13
 
Регистрация: 21.04.2009
Сообщений: 67
По умолчанию

Цитата:
- усе нормально?
Если это правда вопрос, а не опечатка(или не намёк на ошибку, которую я должен заметить), то ответ "нет" - вылетает ошибка. Почему нигде найти не могу, понять тоже. Впадаю в депрессию -_-
Я вредный и нервный, но бдобр.
Karp_13 вне форума Ответить с цитированием
Старый 05.11.2009, 00:21   #17
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Код:
GetPortVal($378,a,1)
вы знаете, у меня такое даже не компилируется... может $a ?
...даже если принять последнее, вы по адресу $378 задаете 10, почему?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 05.11.2009 в 01:17.
raxp вне форума Ответить с цитированием
Старый 05.11.2009, 01:24   #18
Karp_13
Всё знать хотяка!
Пользователь
 
Аватар для Karp_13
 
Регистрация: 21.04.2009
Сообщений: 67
По умолчанию

Цитата:
вы знаете, у меня такое даже не компилируется...
Это всё из библиотеки WINIO

Цитата:
даже если принять последнее, вы по адресу $378 выдаете 10, почему?
Где 10? Зачем 10? О_о
Майне нихфирштейн о чём вы%((
Если вы об этом:
Цитата:
SetPortVal($378, 2, 1);
То здесь я просто посылаю в 378 порт двойку и тем самым зажигаю второй пин

Всё, ответ найден: в объявлении функции нужно было VAR поставить перед переменной pdwPortVal. Я просто грубо тупанул)))
Всё, поползу дальше разбираться с WINIO))
Я вредный и нервный, но бдобр.

Последний раз редактировалось mihali4; 18.11.2009 в 20:38.
Karp_13 вне форума Ответить с цитированием
Старый 05.11.2009, 20:57   #19
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Вот можно почитать Статья о работе через LPT-порт
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Старый 07.11.2009, 02:04   #20
Karp_13
Всё знать хотяка!
Пользователь
 
Аватар для Karp_13
 
Регистрация: 21.04.2009
Сообщений: 67
По умолчанию

DeKot, я тя обожаю ^_^ ! Очень классная статья, на многое открыла мои линзы))))) Спасибо громадное))))

Итак, снова я. Думал, что перешагнул барьер непонимания в треугольнике я, машина, LPT, но опять спасительный мини-триуфм убежал на линию горизонта.

Так, попорядку:
Сначала была прога и писалась она на моём компе для девайся, присоединённого к другому компу. Я бегал каждый день с написанной прогой к тому компу(да простят меня за корявость) и тестировал свои наработки. Наконец, я смог управлять девайсом и считывать с него данные, и понимать что он всё таки подключён.
Сегодня этот девайс отдали мне на личные испытания. Я подключил его к своему компу, иииии... Управлять им я могу, т.е. посылать данные на порт... но считывать что либо комп отказывается на отрез - не только не считывает, но и не видит, что девайс подключён(и там и там используется процедура считывания данных - так что думаю чтот не так именно в ней.).

Кто нибудь может помочь в решении данной проблемы - почему на одном компе всё офигительно считывалось с LPT, а на другом чтения нихт!?!? О_о ;((

(зы: статью DeKot'а я сохранил на комп, но полностью в ней не копался... вечером думаю закопаюсь потщательней, может ответ найду там... или вообще по инету... но был бы рад вашей помощи..)))
Я вредный и нервный, но бдобр.

Последний раз редактировалось mihali4; 18.11.2009 в 20:38.
Karp_13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Управление LPT портом nikleb Паскаль, Turbo Pascal, PascalABC.NET 5 27.05.2010 19:40
Управление LPT портом Kuzmichinishe Помощь студентам 3 28.09.2009 11:07
Не получается управлять LPT-портом NikVE Общие вопросы C/C++ 3 06.04.2009 12:50
Работа с LPT портом chingiz Паскаль, Turbo Pascal, PascalABC.NET 1 17.11.2007 21:21