Hello, I am a novice in C language and have been trying to find a method of reading/scanning input from GSM, then comparing it against a text (e.g OK or ERROR). Then if true set a break. I have tried scanf with no avail. I have also tried reading string which works but am unsure how to compare with my text.Has anyone any advice with what function would be useful? Any replies greatly appreciated. Andy
"reading/scanning input from GSM, then comparing it against a text (e.g OK or ERROR)." These textual messages - OK, ERROR, CONNECT, RING, etc - are designed for use by a human operator sitting at a terminal and typing commands; they are not intended for machine interpretation. You will make you life very much more difficult by trying to read & parse these human-oriented messages in your software. These messages are known as the "Verbose" (or "Verbal") forms; there is also a "Terse" (or "Numeric") mode - intended specifically for machine-oriented interactions. In "Terse" mode, the modem gives simple numeric code responses - much easier to handle in software! Look for ATV in your modem's Manual
I tried using the section of code below to read a string and then compare it. I get 3 warnings and this may be why I am not getting correct results. If i type ok press carriage return the result will be zero which is what I am looking for. If i type anything else it is not zero which is fine but when i then try to type OK it still gives error. Any ideas if this is due to warnings? I may try _getchar , is this a better method of getting input? { char arr[50]; printf("Enter up to 50 characters, with spaces\n"); gets(arr); printf("\nInput read into array was:\n"); puts(arr); } { char *string[1] = {"OK"} ; int result; char *arr = puts(arr); result = strcmp(string[1], puts(arr)); printf("Result comparing OK to input is %d\n", result); }
Should:
result = strcmp(string[1], puts(arr));
result = strcmp(string[0], puts(arr));
View all questions in Keil forum