omdannelse af et c program til grafisk fremstilling helst med GTK
Jeg ved ikke helt hvor mit spørgmål høre hjemme. Jeg er radioamatør oz6oh og har lavet et lille c program til min 2 meterstation. Det omdanner 144.000 til port 128 146 til port 208 ialt 80 forskellige portoutput. Det kører fint i terminalmode i LINUX//program sourcenavn er freq.c
#include <stdio.h>//In use
#include <termios.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdlib.h>// In use
#include <sys/io.h>//In use
#define base 0x378 /*Here is Port defined*/
float x = 144.000;
int value = 0;
int s = 0x01;
int kbhit(void)
{
struct termios oldt, newt;
int ch;
int oldf;
tcgetattr(STDIN_FILENO, &oldt);
newt = oldt;
newt.c_lflag &= ~(ICANON | ECHO);
tcsetattr(STDIN_FILENO, TCSANOW, &newt);
oldf = fcntl(STDIN_FILENO, F_GETFL, 0);
fcntl(STDIN_FILENO, F_SETFL, oldf | O_NONBLOCK);
ch = getchar();
tcsetattr(STDIN_FILENO, TCSANOW, &oldt);
fcntl(STDIN_FILENO, F_SETFL, oldf);
if(ch != EOF)
{
ungetc(ch, stdin);
return 1;
}
return 0;
}
int int_round(double n) // Round n
{
return (n > 0.0) ? (n + 0.5) : (n -0.5);
}
void setfrq() {
if ((x>=144.000) && (x<=146.000)) {
value = int_round((x - 140.8) * 40.0); /* Calculation */
printf("\nPortout= %d", value); /* Show Output on Led's */
outb(value, base);
} else printf("\nInvalid input.");
}
void getfrq() {
outb(0x01, base+2);
printf("\nInput frequency as 144.000 in Step 25KHz.: ");
scanf("%f",&x);
setfrq();
}
void togg_tx() {
if (s==0x01) s=0x00; else s=0x01;
char c = (char) (s+48);
printf("\nStrobe=%c",c);
outb(s, base+2);
}
void initmsg() {
printf("\n------\nPress:");
printf("\n\"f\" - to input frequency,");
printf("\n\"q\" - to exit program,");
printf("\n<space> - to toggle transmitter");
}
main(int argc, char **argv)
{
// Main starting here
printf("\nProgram Started-");
if (ioperm(base, 3, 1)) { perror("ioperm"); printf("\nError"); exit(1); } // Use sudo !
printf("\nPort open");
outb(s, base+2);
setfrq();
initmsg();
while(1)
{
if (kbhit()) {
char ch = getchar();
if ((ch == 'Q') || (ch == 'q')) {
outb(0x01, base+2);
printf("\nProgram Terminated.");
exit(0);
}
if ((ch == 'F') || (ch == 'f')) getfrq();
if (ch == ' ') togg_tx();
initmsg();
}
usleep(500);
}
}
Prøv det selv gcc freq.c -o freq og kør det som sudo ./freq
Dette program ville jeg meget gerne have til at køre ligesom en regnemaskine der jo vises grafisk i de fleste tilfælde. Er der nogen her der kan hjælpe mig med GTK Håber ikke spørgsmålet er dumt her
Venligst Ole Hasselbalch der søger medspillere.