[C] elke keer opnieuw karakter lezen : probleem met struct
Hallo iedereen,
Ik ben een programma aan het schrijven om de seriële poort aan te sturen. Het moet dan ook de status printen van de 8kanalen die ik aanstuur in de microcontroller waar ik dit naartoe stuur. Het komt erop neer dat ik telkens een letter stuur naar een microcontroller met bv a voor hoog en q voor laag voor kanaal1. Nu is het probleem dat ik telkens ik een letter induw, het lijkt alsof mijn variabele output direct wordt gewijzigd. Weet iemand de oplossing? Alvast bedankt.
Dieter
Hallo iedereen,
Ik ben een programma aan het schrijven om de seriële poort aan te sturen. Het moet dan ook de status printen van de 8kanalen die ik aanstuur in de microcontroller waar ik dit naartoe stuur. Het komt erop neer dat ik telkens een letter stuur naar een microcontroller met bv a voor hoog en q voor laag voor kanaal1. Nu is het probleem dat ik telkens ik een letter induw, het lijkt alsof mijn variabele output direct wordt gewijzigd. Weet iemand de oplossing? Alvast bedankt.
Dieter
Code:
char kanaal1;
char kanaal2;
char kanaal3;
char kanaal4;
char kanaal5;
char kanaal6;
char kanaal7;
char kanaal8;
void buttons_print(){ //print welke toetsen nodig zijn om de status te veranderen
printf("kanaal1: a = hoog, q = laag, w = puls\n");
printf("kanaal2: z = hoog, s = laag, x = puls\n");
printf("kanaal3: e = hoog, s = laag, c = puls\n");
printf("kanaal4: r = hoog, d = laag, v = puls\n");
printf("kanaal5: t = hoog, g = laag, b = puls\n");
printf("kanaal6: y = hoog, h = laag, n = puls\n");
printf("kanaal7: u = hoog, j = laag, , = puls\n");
printf("kanaal8: i = hoog, k = laag, ; = puls\n");
printf("Druk op m en enter om af te sluiten\n");
printf("\n");
}
void status_print(char output){ //variabele kanaal blijft verandert
if (output == 'a' || 'q') kanaal1 = output; //leest welk kanaal is veranderd en welke toestand dit heeft gekregen
if (output == 'z' || 's') kanaal2 = output;
if (output == 'e' || 'd') kanaal3 = output;
if (output == 'r' || 'f') kanaal4 = output;
if (output == 't' || 'g') kanaal5 = output;
if (output == 'y' || 'h') kanaal6 = output;
if (output == 'u' || 'j') kanaal7 = output;
if (output == 'i' || 'k') kanaal8 = output;
if(kanaal1 == 'a') printf("kanaal1 = hoog\n"); //print de toestand van elk kanaal
if(kanaal1 == 'q') printf("kanaal1 = laag\n");
if(kanaal2 == 'z') printf("kanaal2 = hoog\n");
if(kanaal2 == 's') printf("kanaal2 = laag\n");
if(kanaal3 == 'e') printf("kanaal3 = hoog\n");
if(kanaal3 == 'd') printf("kanaal3 = laag\n");
if(kanaal4 == 'r') printf("kanaal4 = hoog\n");
if(kanaal4 == 'f') printf("kanaal4 = laag\n");
if(kanaal5 == 't') printf("kanaal5 = hoog\n");
if(kanaal5 == 'g') printf("kanaal5 = laag\n");
if(kanaal6 == 'y') printf("kanaal6 = hoog\n");
if(kanaal6 == 'h') printf("kanaal6 = laag\n");
if(kanaal7 == 'u') printf("kanaal7 = hoog\n");
if(kanaal7 == 'j') printf("kanaal7 = laag\n");
if(kanaal8 == 'i') printf("kanaal8 = hoog\n");
if(kanaal8 == 'k') printf("kanaal8 = laag\n");
}
int main(){
kanaal1 = 'q';//zorgt ervoor dat elk kanaal bij het begin laag is
kanaal2 = 's';
kanaal3 = 'd';
kanaal4 = 'f';
kanaal5 = 'g';
kanaal6 = 'h';
kanaal7 = 'j';
kanaal8 = 'k';
char output = 0;
char output_copy = 0;
_Bool invalid_hComm;
HANDLE hComm;
hComm = CreateFile("COM1", GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); //opent de com-poort voor non-overlapped I/O met schrijftoegang
if (hComm == INVALID_HANDLE_VALUE){ //als hComm niet kan openen
invalid_hComm = 1;
abort;
}
while(output != 'm'){
if (invalid_hComm == 1) printf("kan COM1 niet openen\n\n"); //print dat hComm niet geopend kan worden als er geen seriële poort aanwezig is
buttons_print(); //print welke toetsen waarvoor dienen
while (output_copy == output || output_copy == ' '){ //leest welk karakter wordt ingelezen
output = getchar();
}
WriteFile(hComm, &output, 1, NULL, NULL); //schrijft de variabele output naar hComm met als grootte van 1byte
output_copy = output;
system("cls"); //wist het scherm
status_print(output_copy); //print de status
buttons_print(); //print welke toetsen waarvoor dienen
};
return 0;
}
Laatst bewerkt: