muffe Skrevet 21. januar 2004 Del Skrevet 21. januar 2004 Har en HAUK, og linux. Har derfor lastet med LinHAUK'en til Morten Albrigtsen (tusen takk til ham). Den fungerer egentlig kjempeflott, men er litt upraktisk til mott bruk. Nå er det slik at du starter programmet, du får se status, og du kan taste inn et tall etterfulgt av enter, så vil den aktuelle kanalen gå av/på. Er det mulig å modifisere dette slik at du starter og styrer programmet slik: bash-2.05b# LinHAUK 30 51 61 Dette skal sette port 3 til lav (0), og port 5 og 6 til høy (1). Deretter avsluttes programmet. Her er koden: #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <asm/io.h> #define PORT 0x378 main() { if (ioperm(PORT, 3, 1)) {perror("ioperm"); exit(1);} int inbc; inbc=inb(PORT); int d1=0, d2=0, d3=0, d4=0, d5=0, d6=0, d7=0, d8=0; int sum; /* We use this to get the current status of the port */ sum=inbc; if(sum%2==1) { sum=sum-1; d1=1; } if(sum>127) { sum=sum-128; d8=1; } if(sum>63) { sum=sum-64; d7=1; } if(sum>31) { sum=sum-32; d6=1; } if(sum>15) { sum=sum-16; d5=1; } if(sum>7) { sum=sum-8; d4=1; } if(sum>3) { sum=sum-4; d3=1; } if(sum==2) { sum=sum-2; d2=1; } system("clear"); printf("\n\n"); printf(" +------------------------[ LinHAUK v0.2 ]-----------------------+\n"); printf(" | |\n"); printf(" | Channel nr. | Status |\n"); printf(" | ----------------*------------------ |\n"); printf(" | 1. CPU Fan | "); if(d1==1) { printf("Inactive"); } else { printf("Activated"); } printf(" |\n"); printf(" | 2. PSU Fan | "); if(d2==1) { printf("Inactive"); } else { printf("Activated"); } printf(" |\n"); printf(" | 3. Case fan | "); if(d3==1) { printf("Inactive"); } else { printf("Activated"); } printf(" |\n"); printf(" | 4. HDD Fan | "); if(d4==1) { printf("Inactive"); } else { printf("Activated"); } printf(" |\n"); printf(" | 5. Ext 1 | "); if(d5==1) { printf("Activated"); } else { printf("Inactive"); } printf(" |\n"); printf(" | 6. Ext 2 | "); if(d6==1) { printf("Activated"); } else { printf("Inactive"); } printf(" |\n"); printf(" | 7. Ext 3 | "); if(d7==1) { printf("Activated"); } else { printf("Inactive"); } printf(" |\n"); printf(" | 8. Ext 4 | "); if(d8==1) { printf("Activated"); } else { printf("Inactive"); } printf(" |\n"); printf(" | |\n"); printf(" | (0) Quit |\n"); printf(" | |\n"); printf(" +----------------[ by Morten Albrigtsen 2003 ]------------------+\n"); int i; printf("\n\tType the channel number for activating/deactivating channel.\t"); printf("\n\t\t Command:\t "); scanf("%d",&i); int out=0, change=0, a=0; if(i == 1) { out=1; change=1; a=d1; } if(i == 2) { out=2; change=1; a=d2; } if(i == 3) { out=4; change=1; a=d3; } if(i == 4) { out=8; change=1; a=d4; } if(i == 5) { out=16; change=1; a=d5; } if(i == 6) { out=32; change=1; a=d6; } if(i == 7) { out=64; change=1; a=d7; } if(i == 8) { out=128; change=1; a=d8; } if(i==0) { printf("\n\n\t\t\tBye bye...\n\n\n"); exit(1); } if(i>8) { main(); } if(change==1) { if(a==1) { int newout; newout=inbc-out; outb(newout, PORT); main(); } else { int newout; newout=inbc+out; outb(newout, PORT); main(); } } if (ioperm(PORT, 3, 0)) {perror("ioperm"); exit(1);} } Er ikke så "inne" i C programmering, så er det noen som kunne gi meg litt hjelp? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå