Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > LPT порт.


Автор: rcdimon 10.3.2005, 22:06
Мне необходимо работать с LPT портом. Раньше я делал это на Visual Basic, а с переходом на Linux прямо даже не знаю. Помогите, пожалуйста.

Автор: Sun 11.3.2005, 11:14
Могу обрадовать, что в Linux работать с портами ввода/вывода значительно проще, чем в Windows. Фактически все сводится к работе с файлами - запись и чтение. Здесь подробнее
http://www.linuxcenter.ru/lib/articles/programming/io_port_prog_minihowto.phtml

Автор: rcdimon 11.3.2005, 20:25
Огромное спасибо, все отлично работает. Но фигня в другом.

В KDevelop эта штука не компилится. Матерится но все подряд. Приходится компилить из консоли с помощью gcc. Но в нем у меня по чему то не работают команды cout и cin. Говорит что они не объявлены. Они находятся в iostream.h. Когда я его присоединяю #include<iostream.h> он говорит что этот файл не найден. Я и полный путь к нему прописывал и копировал этот файл куда надо, но когда он его находит он требует другие, а с ними еще и еще. Что делать? Как сделать что бы cout и cin работали?

Автор: Ni@m 12.3.2005, 12:20
Пробовал
Код

using namespace std;
?

А то, что не хочет компилиться из KDevelop, то это в настройках надо порыться.

Автор: rcdimon 12.3.2005, 15:19
Пробовал. Материться на все три слова. Разве что точку с запятой не ругает. smile

Автор: Ni@m 14.3.2005, 17:15
Попробуй при компиляции указывать -I /path/to/iostream.h
И если не поможет, то покажи как он матерится!

Автор: falcon39 7.11.2010, 12:55
вот код, он компилируется но не работает
Код

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <dev/ppbus/ppi.h>
#include <dev/ppbus/ppbconf.h>

static int ppi_fd;
static u_int8_t val;

static void do_int(void)
{
    char port[] = "/dev/ppi0";

    ppi_fd = open(port, O_RDWR);
    if(ppi_fd < 0)
    {
    printf("Error \n");
        perror(port);
        exit(1);
    }
}

static void do_out(unsigned long outval)
{
    int val = outval, n;

    n=ioctl(ppi_fd, PPISDATA, &val);
//    printf(n);
    if(n < 0)
    {
//    printf("Error OUT \n");
    perror("ioctl PPISDATA");
    exit(1);
    }
}

static unsigned long do_in(void)
{
    int val,n;

    n=ioctl(ppi_fd, PPIGSTATUS, &val);
    if(n<0)
    {
    printf("Error IN \n");
    perror("ioctl PPIGSTATUS");
    exit(1);
    }
    return val;
}
int main()
{
do_out(1<<2);
usleep(5000);
return(0);
}


выдает
Код

ioctl PPISDATA: Inappropriate ioctl for device

операционная система freebsd 7.2
помогите пожалуйста я новичек

Автор: svlary 8.11.2010, 06:34
Цитата

помогите пожалуйста я новичек


Почитайте хорошую статейку (для новичков) в журнале "Linux forman" (Август 2010) :

Цитата

Программируем периферию:
Взяв в руки паяльник и компилятор, вы легко превратите компьютер с Linux в мозг «умного дома» – а эта статья поможет вам подключить к нему различные датчики через порты COM, LPT и джойстика.


Вот здесь :

http://www.linuxformat.ru/anons134.phtml

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)