Tidigare så frågade jag efter ett enkelt sätt att styra COM-porten i C.
Valet föll på bibloteket "SPort", som fungerar utmärkt!
( Den tråden)
Nu har jag börjat skriva ett terminalprogram som senare ska kommunicera med bla en robot.
Problemet ligger dock inte i kommunikationen med COM-porten utan i kommunikationen med användaren.
Koden här under skapar variabler som inehåller inställningar, mm för COM-porten.
Standardinställningar läggs in direkt.
Sedan ska användaren få fylla i sina egna inställningar.
(Det är här det går fel, mer längre ner)
Slutligen så ska inställningarna sparas i en fil.
Det här är dock inte hela programmet, men resten fungerar utmärkt.
Det enda som inte fungerar är scanf() funktionerna i den här kodsnutten.
Första gången användaren ska bli tillfrågad så syns ingen text, men man kan skriva in ett värde.
Sedan ignoreras alla scanf(), ingen text, man får ingen möjlighet att skriva in värden.
Slutligen skrivs "Settings Ok" ut....
Varför blir det så?!?
(ALL annan kod har testats separat och fungerar utmärkt!)
Kod: Markera allt
#include <stdio.h>
#include <stdlib.h>
#include <IO.h>
int main(int argc, char * argv[])
{
int COM_nr = 2; //Variabler för inställningarna till comporten
long int baudrate = 9600;
int nr_stop_bit = 1;
int parity = 0;
int IO_nr = 760;
int IRQ_nr = 3;
int databits_nr = 8;
int save_yes_no = 0;
//-------------------Här börjar problemen----------------------
scanf("IRQ number [3]: %i", &IRQ_nr); //Denna scanf() skriver inte ut sin text, man kan bara fylla i ett värde
if(IRQ_nr<0)
{
printf("IRQ can't be under 0!");
return 6;
}
scanf("IO number [760]: %i", &IO_nr); //Helt ignorerad, kan inte fylla i ett värde
if(IO_nr<0)
{
printf("IO value must be over 0!");
return 7;
}
printf("Settings Ok!\n"); //Denna är allt som skrivs ut under hela körningen
scanf("Would you like to save your settings? Y/N: %c", &save_yes_no); //Även denna är helt ignorerad
//--------------------Och här slutar dom----------------
if(save_yes_no=='Y' || save_yes_no=='y')
{
FILE *settings_file;
if( (settings_file=fopen("terminal_settings.txt","w+")) == NULL)
{
printf("Cannot open the file to save settings in!\n");
exit(1);
}
fprintf(settings_file, "%i %li %i %i %i %i %i",COM_nr,baudrate,nr_stop_bit,parity,IO_nr,IRQ_nr,databits_nr);
fclose(settings_file);
printf("Settings has been saved, you can next time load these settings\n");
}
if(save_yes_no=='N' || save_yes_no=='n')
{
printf("Don't save new settings.\n");
}
return 0;
}