The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Запись в LPT"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Запись в LPT"
Сообщение от Grayich emailИскать по авторуВ закладки(ok) on 09-Авг-04, 19:22  (MSK)
Нужно записать значение в порт LPT, т.е. засветить 2 контакт и погасить когда надо, или 3 4 5 и т.д.
Как это реализовать ? и можно ли обойтись без Си ?
если на Си
то вот код откапал на этом форуме

#include<iostream>
#include<sys/io.h>
#include<sys/perm/h>
#include<stdio.h>
#include<stdlib.h>
main()
{
unsigned char x;
if(ioperm(0x378,3,1)) //open lpt port
{
printf("error opening lpt");
exit(1);
}
x=inb(0x379);//read from lpt port
outb(x,0x378); write to lpt
if(ioperm(0x378,3,0)) //close lpt port
{
printf("error closing lpt");
exit(1);
}
}

будет ли он рабоать и как его откомпилить ? :)

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Запись в LPT"
Сообщение от Vadim Искать по авторуВ закладки(??) on 11-Авг-04, 20:20  (MSK)
Если линукс, то там есть /dev/port - юзать осторожно, но можно хоть откуда. Открываешь, сикаешь на нужный адрес (например 0x378), пишешь туда байтик и т.д. Понятно, что перед каждой операцией чтения/записи важно стоять на правильном месте, иначе можно тааакого понаписать.
Мигание битиком проще всего сделать, наверное, так:

in = inb(PORT);    //читаем
in ^= 1;           //переворачиваем первый битик
outb(in, PORT);    //пишем

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Запись в LPT"
Сообщение от Grayich emailИскать по авторуВ закладки(??) on 12-Авг-04, 13:15  (MSK)
Вот склероз :( забыл ОС указать
FreeBSD 5.2
/dev/port необнаружен


  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Запись в LPT"
Сообщение от hatta emailИскать по авторуВ закладки(ok) on 12-Авг-04, 13:49  (MSK)
Насколько я понимаю, то, что вам нужно - это ppi. Он обеспечивает доступ к порту безо всяких там дурацких inb() и outb().
man 4 ppi
  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Запись в LPT"
Сообщение от Grayich emailИскать по авторуВ закладки(??) on 12-Авг-04, 13:59  (MSK)
>Насколько я понимаю, то, что вам нужно - это ppi. Он обеспечивает
>доступ к порту безо всяких там дурацких inb() и outb().
>man 4 ppi

:) меня уже тыкали в ppi носом , но или я неправильно понял или это облегчитель для работы с порами на СИ.

     #include <dev/ppbus/ppi.h>
     #include <dev/ppbus/ppbconf.h>

а в Си я по дуб дубом

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Запись в LPT"
Сообщение от hatta emailИскать по авторуВ закладки(ok) on 12-Авг-04, 14:05  (MSK)
>:) меня уже тыкали в ppi носом , но или я неправильно
>понял или это облегчитель для работы с порами на СИ.

Дело в том, что ppi - это файловый интерфейс, жесткой привязки к C здесь нет. На каком языке вы пишете? Если он дает вам доступ к нативным read/write/ioctl, то нужно всего лишь перенести нужные определения из ppi.h.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "Запись в LPT"
Сообщение от Grayich emailИскать по авторуВ закладки(??) on 12-Авг-04, 14:13  (MSK)
>Дело в том, что ppi - это файловый интерфейс, жесткой привязки к
>C здесь нет. На каком языке вы пишете? Если он дает
>вам доступ к нативным read/write/ioctl, то нужно всего лишь перенести нужные
>определения из ppi.h.

если-бы писал на хоть 1 Си подобном языке, то незадавал бы таких глупых вопросов :)
Хотя скоро прийдется осваивать Perl, ......... кстати под Perl вроде куча модулей есть, а нет ли случайно модуля для работы с портами ? Просто я плохо представляю что такое модули для Perl, толи тотже Perl, толи вкрапления на других языках.

P.S.
Мдя и почему языки высокого уровня так плохо работают с железом на прямую, толи дело ASM

  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "Запись в LPT"
Сообщение от qq Искать по авторуВ закладки(ok) on 12-Авг-04, 14:20  (MSK)
>>Дело в том, что ppi - это файловый интерфейс, жесткой привязки к
>>C здесь нет. На каком языке вы пишете? Если он дает
>>вам доступ к нативным read/write/ioctl, то нужно всего лишь перенести нужные
>>определения из ppi.h.
>
>если-бы писал на хоть 1 Си подобном языке, то незадавал бы таких
>глупых вопросов :)
>Хотя скоро прийдется осваивать Perl, ......... кстати под Perl вроде куча модулей
>есть, а нет ли случайно модуля для работы с портами ?
>Просто я плохо представляю что такое модули для Perl, толи тотже
>Perl, толи вкрапления на других языках.
>
>P.S.
>Мдя и почему языки высокого уровня так плохо работают с железом на
>прямую, толи дело ASM
>

вот эту мессагу смотрел?
http://www.opennet.me/openforum/vsluhforumID9/1386.html#7

  Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "Запись в LPT"
Сообщение от Grayich emailИскать по авторуВ закладки(ok) on 12-Авг-04, 14:32  (MSK)
>вот эту мессагу смотрел?
>http://www.opennet.me/openforum/vsluhforumID9/1386.html#7

Огромное спасибо !!!

блин. а ведь полдня убил на поиски прежде чем сюда писать :((


  Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "Запись в LPT"
Сообщение от hatta emailИскать по авторуВ закладки(ok) on 12-Авг-04, 14:38  (MSK)
С perl'ом по идее все должно работать... там есть ioctl, и не надо передавать структуры. Ее описание есть в мане perlfunc. Для конвертации заголовка ppi.h можно воспользоваться h2ph или h2xs.
К сожалению, я не нашел в CPAN готового решения, есть только модуль Device::ParallelPort, работающий под линуксом и win32.

На мой взгляд C в данном случае гораздо удобнее.

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру