GSM модем и PIC16F877A
уважаемый господин,
Я связался с GSM-модемом (SIMCOMM300) от PIC16F877A и могу нормально отправлять и принимать SMS/звонки. Но, когда я выдаю команду AT+CLCC, когда GSM получает звонок, чтобы узнать номер вызывающего абонента, я могу получить ответ на команду "AT+CLCC", а также я могу обработать все команды, за которыми следует "AT+CLCC". Но проблема в том, что я не могу обработать еще один входящий звонок (звонок) или SMS. Программа зависает. Я не знаю, в чем проблема. Итак, я даю вам код здесь для вашего удобства. ПЛ идти беспересадочный код и поправьте меня, если есть какие-либо ошибки. Я буду очень благодарен и скромен всем, кто окажет мне помощь. Заранее благодарю.
#include <stdio.h> #include <htc.h> #include "usart.h" #include "lcd.h" #include "string.h" __CONFIG(HS & WDTDIS & UNPROTECT & LVPDIS); unsigned char gsmInput[60]; unsigned int i=0; unsigned int lenOfGSMInput = 0; bit OK; bit Error; bit Ring; void showGSM_DATA(char GSM_DATA[]){ //to show the GSM OUTPUT after eliminating the chars '\r' and '\n' if (strcmp(GSM_DATA, "OK") == 0){ OK = 1; } else if (strcmp(GSM_DATA, "ERROR") == 0){ Error = 1; } else if (strcmp(GSM_DATA, "RING") == 0){ Ring = 1; GSM_DATA[0] = '\x00'; puts("AT+CLCC"); putch(0x0D); } else{ lcd_clear(); lcd_goto(0); lcd_puts(GSM_DATA); } GSM_DATA[0] = '\x00'; } // end function showGSM_DATA void main(int argc, char* argv[]){ unsigned char input; INTCON=0; // purpose of disabling the interrupts. lcd_init(); // initiate LCD init_comms(); // set up the USART - settings defined in usart.h puts("ATE0"); putch(0X0D); puts("AT+CMGF=1"); putch(0X0D); while(1){ input = getch(); // read a response from the GSM switch(input){ case '\x0A': // if line feed detected in the GSM output i.e. '\n' break; case '\x0D': // if carriage return detected i.e. '\r' gsmInput[i] = '\x00'; lenOfGSMInput = strlen(gsmInput); if (lenOfGSMInput > 0){ i = 0; lenOfGSMInput = 0; showGSM_DATA(gsmInput); } break; case '\x3E': // if greater-sign (in order to send SMS) break; default: // if characters received gsmInput[i] = input; i++; break; }//end brace for switch } //end brace for while loop }//end brace for main</htc.h></stdio.h>
Toniyo Jackson
Добавлен предварительный тег для кода.
pmk_1969
спасибо. Я неопытен для форума. Еще раз спасибо.
Toniyo Jackson
Добро пожаловать