Автор Гілка: Як писати значення в LPT порт ?  (Прочитано 3003 раз)

Відсутній Jaroslav

  • Новачок
  • *
  • дописів: 4
  • Карма: +0/-0
  • I Love YaBB 2!
Хто може допомогти розібратися з програмуванням на FreeBSD 5.3,
Потрібно посилати в порт LPT $378 значення 0 або FF в інтернеті
знайшов тільки таку інформацію. Але чомусь це не працює.
Допоможіть будь ласка розібратися.

#define ZERO_DVA    0xff
main()
{
open("/dev/lpt0", "w");
write("/dev/lpt0", ONE_DVA);
}

Відсутній Михайло Даниленко

  • Адміністратор ЩОДО
  • Літератор
  • *****
  • дописів: 1262
  • Карма: +0/-0
  • [Debian Stretch]
Re: Як писати значення в LPT порт ?
« Відповідей #1 : 2006-07-14 14:51:03 »
Слухайте, у вас якась дуже дивна програма... :)
Вона взагалі, компілюється?
Я, звичайно, не спец в BSD, але мани що гугль видає співпадають з лінуксовими.
Отже man 2 open, man 2 write, man fopen, man fwrite

Відсутній Jaroslav

  • Новачок
  • *
  • дописів: 4
  • Карма: +0/-0
  • I Love YaBB 2!
Re: Як писати значення в LPT порт ?
« Відповідей #2 : 2006-07-14 15:14:56 »
Взагалі то компілюється, але портом не управляє.
Може хтось допоможе написати працездатний код???
Був би дуже вдячний.

Відсутній Михайло Даниленко

  • Адміністратор ЩОДО
  • Літератор
  • *****
  • дописів: 1262
  • Карма: +0/-0
  • [Debian Stretch]
Re: Як писати значення в LPT порт ?
« Відповідей #3 : 2006-07-14 16:56:05 »
Добре, попрацюю man-ом трохи. ;)

Якщо "w" - то fopen()
Якщо fopen() - то й fwrite()
Якщо fwrite() - то fwrite(value_ptr,sizeof_val,1,stream_ptr)

Якщо не "w" - то O_WRONLY, можливо іще O_FSYNC
А також write(file_desc,val_ptr,sizeof_val)

Отже вищенаведений шмат, мабуть, має виглядати так:

#include <stdio.h>

#define ZERO_VAL 0x00
#define FF_VAL   0xFF

int main()
{
char val = ZERO_VAL;
FILE *devstr = fopen("/dev/lpt0", "w");
        fwrite(&val, sizeof(char), 1, devstr);
        fclose(devstr);
        return 0;
}

Або так:

#include <fcntl.h>
#include <sys/types.h>
#include <sys/uio.h>
#include <unistd.h>

#define ZERO_VAL 0x00
#define FF_VAL   0xFF

int main()
{
char val = ZERO_VAL;
int fd = open("/dev/lpt0", O_WRONLY|O_FSYNC);
        write(fd, &val, sizeof(char));
        close(fd);
        return 0;
}

P.S. Але я специфіку BSD не знаю, може й ваша правда...
P.P.S. А мани я таки раджу прочитати.
P.P.P.S. Опс. Помилився в назві файлу - виправив.
« Змінено: 2006-07-14 17:43:01 від ISBear »

Відсутній Михайло Даниленко

  • Адміністратор ЩОДО
  • Літератор
  • *****
  • дописів: 1262
  • Карма: +0/-0
  • [Debian Stretch]
Re: Як писати значення в LPT порт ?
« Відповідей #4 : 2006-07-14 23:57:20 »
Знайшов оце.
Там є devtest.c (робота з файлом пристрою) та toggle.c (робота безпосередньо з портами).
« Змінено: 2006-07-15 14:27:09 від ISBear »

Відсутній Jaroslav

  • Новачок
  • *
  • дописів: 4
  • Карма: +0/-0
  • I Love YaBB 2!
Re: Як писати значення в LPT порт ?
« Відповідей #5 : 2006-07-15 14:39:44 »
Нажаль таких файлів я не знайшов в FreeBSD,
Та вище наведені приклади чомусь також не
працюють хоча і компілюються.

Відсутній Михайло Даниленко

  • Адміністратор ЩОДО
  • Літератор
  • *****
  • дописів: 1262
  • Карма: +0/-0
  • [Debian Stretch]
Re: Як писати значення в LPT порт ?
« Відповідей #6 : 2006-07-15 14:59:57 »
Те що я написав - це лише переклад того що ви писали - воно записує нуль в файл /dev/lpt0. Причому взагалі без будь-яких перевірок значення що повертається - себто без виявлення помилок (наприклад, воно не змоголо відкрити файл - записати туди йому тим паче нічого не вдасться).

Там у слові "оце" є посилання :). А там - сторінка з заготовкою драйверу LPT під FreeBSD. Сам драйвер вам, звісно, не треба, а от після нього (в кінці сторінки) наведений текст вказаних мною файлів. Їх можна використати як приклад для написання того що вам треба.

Відсутній Jaroslav

  • Новачок
  • *
  • дописів: 4
  • Карма: +0/-0
  • I Love YaBB 2!
Re: Як писати значення в LPT порт ?
« Відповідей #7 : 2006-07-17 21:41:46 »
Дякую саме те що потрібно.
Дуже вдячний вам за допомогу.

Відсутній G

  • Новачок
  • *
  • дописів: 16
  • Карма: +0/-0
  • Що новенького?
Re: Як писати значення в LPT порт ?
« Відповідей #8 : 2006-07-19 16:55:28 »
писав такий невеличкий проект для більярдного клубу... дивися сорси, там є писання в порт через порти. може пригодиться. :)
« Змінено: 2006-07-19 16:55:57 від G »