Ответ: Сильно ногами не пинать, написано в 2002 году
SMS лежит в strGSM
//******************************************************************************
char GSMmsgSend(void)
{
char *pnt;
unsigned char output,input;
unsigned int number;
StartGSMmsgSend:
WDTimerConst=WDT_GSMmsgSend;
pnt=(char*)strCMGS;
if (TrString2GSM(pnt)==0)
{//ошибка передачи
initATGSM();
goto StartGSMmsgSend;
}
do
{//дождаться приглашения
input=ReceiveByteGSM();
if(input==0)
{//ошибка передачи
initATGSM();
goto StartGSMmsgSend;
}
if(DebugPrint){TransmitBytePC(input);}
} while (input!=0x20);
pnt=(char*)strGSM;
if (TrString2GSM(pnt)==0)
{//ошибка передачи
initATGSM();
goto StartGSMmsgSend;
}
_NOP();
TransmitByteGSM(0x1A); //Закончить передачу
input=ReceiveByteGSM();
if(input==0)
{//ошибка передачи
_NOP();
initATGSM();
goto StartGSMmsgSend;
}
if(DebugPrint){TransmitBytePC(input);}
_NOP();
WDTimerConst=125;//12.5 секунд
do{
input=ReceiveByteGSM();
if(input==0)
{//ошибка передачи
initATGSM();
goto StartGSMmsgSend;
}
if(DebugPrint){TransmitBytePC(input);}
}while ((input!=\'K\')&&(input!=\'R\'));
_NOP();
WDTimerConst=WDT_GSMmsgSend;//нормальный тайм аут
do{
output=ReceiveByteGSM();
if(output==0)
{//ошибка передачи
initATGSM();
goto StartGSMmsgSend;
}
if(DebugPrint){TransmitBytePC(output);}
}while (output!=0x0A);
if (input==\'R\')
{
for (output = 40; output > 0; output--)
{//ошибка связи
LEDR_ON;
delay();
}
}
if (input==\'K\')
{//связь прошла без ошибок
LEDR_OFF;
}
// flagTxGSM=0;
// WDTimerConst=5;
return input;
}
//******************************************************************************