Tomsk Sysadmins Forum
Unix => Программирование => Topic started by: FireWall on October 05, 2008, 10:48:44
-
Есть код
#include <sys/io.h>
#define BASEPORT 0x378
int main ()
{
ioperm(BASEPORT, 8, 1);
outb(0,BASEPORT);
return(0);
}
Как я понимаю сначала открываю 8 портов для доступа, потом пишу в 0x378 значение 0, так ли?
Как отключить например 9ю ножку? а лучше все? На LPT висят вентиляторы, необходимо их отключить програмно.
Перечитал кучу инфы, ничего не выходит. Мб кто подскажет где я не дочитал?
-
Вроде как через /dev/lp* надо.
Можешь посмотреть исходники uisp
-
Вроде как через /dev/lp* надо.
Можешь посмотреть исходники uisp
Давно уже все сделал. Не надо через /dev/lp, надо через outb.
Тем более темка то устарела ) В простейщем варианте это выглядит так
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <asm/io.h>
main(int argc, char **argv)
{
int par_data;
int PORT;
if (argc!=3).
printf("USAGE: [PORT] [DATA]"), exit(1);
sscanf(argv[1],"%i",&PORT);
if ((par_data<0) || (par_data>255))
fprintf(stderr, "ERROR: DATA must be between 0 and 255"), exit(1);
if (ioperm(PORT,1,1)).
fprintf(stderr, "ERROR: Can't gain access to port %x", PORT), exit(1);
outb((unsigned char)par_data, PORT);
}