int main(void) { RCC_Configuration(); RCC_ClocksTypeDef RCC_Clocks; RCC_GetClocksFreq(&RCC_Clocks); EnableClock(); //LCD_GLASS_Configure_GPIO(); //LCD_GLASS_Init(); SysTick_Config((RCC_Clocks.SYSCLK_Frequency / 2) / 1000); // Cannot exceed 16,777,215 /* Set SysTick Preemption Priority, it's a system handler rather than a regular interrupt */ //NVIC_SetPriority(SysTick_IRQn, 0x04); lcdInit(); lcdClear(); lcdXY( 2, 5 ); lcdStr( "Test"); //lcdBender(); // init rtc RTC_InitTypeDef rtcInit; rtcInit.RTC_HourFormat = RTC_HourFormat_24; rtcInit.RTC_AsynchPrediv = 0x7F; rtcInit.RTC_SynchPrediv = 0xFF; RTC_Init(&rtcInit); RTC_TimeTypeDef RTC_TimeStructure; RTC_DateTypeDef RTC_DateStructure; usart_init(); SetRTCClock(); GPIO_InitTypeDef gpio_btn; gpio_btn.GPIO_Pin = GPIO_Pin_0; gpio_btn.GPIO_Mode = GPIO_Mode_IN; gpio_btn.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOA, &gpio_btn); int prevSecond = -1; while (1) { //uint8_t __status = GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0); if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 0x00 && !_sent) { _sent = 1; mini_snprintf( strDisp, 22, "20%02d/%02d/%02d %02d:%02d:%02d Hallo !!!", RTC_DateStructure.RTC_Year, RTC_DateStructure.RTC_Month, RTC_DateStructure.RTC_Date, RTC_TimeStructure.RTC_Hours, RTC_TimeStructure.RTC_Minutes, RTC_TimeStructure.RTC_Seconds); SendSMS("0836325001",strDisp); } if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) != 0x00 && _sent) { _sent = 0; } RTC_GetTime(RTC_Format_BIN, &RTC_TimeStructure ); RTC_GetDate(RTC_Format_BIN, &RTC_DateStructure); if ( RTC_TimeStructure.RTC_Seconds != prevSecond ) { lcdClear(); mini_snprintf( strDisp, 11, "20%02d/%02d/%02d", RTC_DateStructure.RTC_Year, RTC_DateStructure.RTC_Month, RTC_DateStructure.RTC_Date); lcdXY( 0, 0 ); lcdStr( strDisp); mini_snprintf( strDisp, 10, "%02d:%02d:%02d", RTC_TimeStructure.RTC_Hours, RTC_TimeStructure.RTC_Minutes, RTC_TimeStructure.RTC_Seconds ); lcdXY( 0, 1 ); lcdStr( strDisp); //LCD_GLASS_Clear(); //LCD_GLASS_DisplayString( strDisp ); prevSecond = RTC_TimeStructure.RTC_Seconds; } /*if ( usart_available() ) // data available { //usart_print( "Data Available: " ); uint8_t ch = usart_read(); //usart_write(ch); //usart_print( "\r\n" ); SendSMS("836325001","Wynand"); }*/ } return 0; }
/* *拆分短信发送 */ bool CNewSmsWnd::SendSMS_Wrapper(IN CMzString& Number) { bool SendFlag = false; CMzString NewNumber ; if(Number.C_Str()[0] ==L'1') { NewNumber = L"+86"; NewNumber += Number; } else { NewNumber = Number; } CMzString SMS_Content = m_SmsMsgEdit->GetText().C_Str(); int length = SMS_Content.Length(); if( length <= 69 ) { SendFlag = SendSMS(NewNumber.C_Str(), m_SmsMsgEdit->GetText().C_Str()); HRESULT hr = smsInsert( NewNumber.C_Str(), m_SmsMsgEdit->GetText().C_Str() ); if (FAILED(hr)) { return false; } } else { for(int i = 0; i < length; i+=69) { int count = ((length - i) < 69 ? (length-i): 69); CMzString Single_Content =SMS_Content.SubStr(i,count); SendFlag = SendSMS(NewNumber.C_Str(), Single_Content.C_Str() ); } HRESULT hr = smsInsert( NewNumber.C_Str(), SMS_Content.C_Str() ); if (FAILED(hr)) { return false; } } return SendFlag; }
void SendSMSMessage(int battery, int signalPercent, LPTSTR number) { TCHAR gpszMessage[160]; if(battery == 255){ _sntprintf(gpszMessage, sizeof(gpszMessage), TEXT("Battery life: UNKNOWN, Signal Strength: %d percent"), signalPercent ); } else{ _sntprintf(gpszMessage, sizeof(gpszMessage), TEXT("Battery life: %d percent, Signal Strength: %d percent"), battery, signalPercent ); } LPTSTR gpszServer = (LPTSTR)L""; LPTSTR gpszRecipient = number; SendSMS(false, true, gpszServer, gpszRecipient, gpszMessage); /* MessageBox(NULL, L"Message Sent", L"Sent", MB_OK); */ }
void CDisplayGPSData::SendSMSMessage() { TCHAR gpszMessage[160]; _sntprintf(gpszMessage, sizeof(gpszMessage), TEXT("http://maps.google.com/maps?q=%2.6f,%2.6f Alt%2.2f Speed%3.1f Heading%3.2f H-Quality%3.1f V-Quality%3.1f Satel%d"), best_GPS_Position.dblLatitude, best_GPS_Position.dblLongitude, best_GPS_Position.flAltitudeWRTSeaLevel, best_GPS_Position.flSpeed, best_GPS_Position.flHeading, best_GPS_Position.flHorizontalDilutionOfPrecision, best_GPS_Position.flVerticalDilutionOfPrecision, best_GPS_Position.dwSatelliteCount); LPTSTR gpszServer = (LPTSTR)L""; LPTSTR gpszRecipient = number; SendSMS(false, true, gpszServer, gpszRecipient, gpszMessage); /* MessageBox(NULL, L"Message Sent", L"Sent", MB_OK); */ }
void CDisplayGPSData::SendSMSError() { TCHAR gpszMessage[160]; _sntprintf(gpszMessage, sizeof(gpszMessage), TEXT("GPS timed out.")); LPTSTR gpszServer = (LPTSTR)L""; LPTSTR gpszRecipient = number; SendSMS(false, true, gpszServer, gpszRecipient, gpszMessage); }
int main(void){ init(); usart0_init(); sei(); for(uint8_t delay=0; delay<3; delay++) _delay_ms(1000); while(AtOk()) //Проверяем готовность модуля командой AT. { PORT_SIM|= (PWR_KEY); _delay_ms(2000); PORT_SIM&= ~(PWR_KEY); _delay_ms(5000); PORT_SIM|= (PWR_KEY); } while(ConfigGsmModules()) _delay_ms(1000); _delay_ms(500); while(GsmReg()) _delay_ms(2000); // START_TIMER0; _delay_ms(1000); //SimIMEI(u); //!!!And IMEI_NUM_ENABLE while(SignalQualityReport(u)) _delay_ms(2000); while(SendSMS("+79119008502", "Hello GSM SIM300!")) _delay_ms(2000); //while(UnstructuredSupplementaryServiceData("#102#", u)) _delay_ms(2000); while(1){ //PORT_OUT|=BUZ; PORT_OUT&=~BUZ; PORT_OUT&=~BUZ; PORT_OUT&=~BUZ; } }
static void SendTheSMS(DmOpenRef db, gb2312_table& table, const char* pszTo, const char* pszCompose) { Err err = SendSMS(table, "+8613800100500", pszTo, pszCompose); // err = SendSMS(table, "+8613800100500", pszTo, testStr); if (!err) { UInt8 state = 0; SendPref spref; ReadSendPreference(spref); if (spref.requestReport) RequestReport(state); NewRecordInCategory(db, pszTo, pszCompose, CAT_SENT, state); SortSMS(db); } else { FrmCustomAlert(AlertCustom, "Alert", "Message send failed.", ""); } }
/********************************************************** Method sends SMS to the specified SIM phonebook position sim_phonebook_position: SIM phonebook position <1..20> message_str: pointer to the SMS text string return: ERROR ret. val: --------------- -1 - comm. line to the GSM module is not free -2 - GSM module didn't answer in timeout -3 - specified position must be > 0 OK ret val: ----------- 0 - SMS was not sent 1 - SMS was sent an example of usage: GSM gsm; gsm.SendSMS(1, "SMS text"); **********************************************************/ char SMSGSM::SendSMS(byte sim_phonebook_position, char *message_str) { char ret_val = -1; char sim_phone_number[20]; ret_val = 0; // SMS is not send yet if (sim_phonebook_position == 0) return (-3); if (1 == gsm.GetPhoneNumber(sim_phonebook_position, sim_phone_number)) { // there is a valid number at the spec. SIM position // => send SMS // ------------------------------------------------- ret_val = SendSMS(sim_phone_number, message_str); } return (ret_val); }
uint8_t MODEM_SendSMS(const uint8_t *recipient, uint8_t *data) { // uint8_t buf[161]; // uint16_t len; // len = strlen((char *)data); // while(len) // { // if(len > 160) len = 160; // strncpy((char *)buf, (char *)data, len); // data += len; // buf[len] = 0; data[160] = 0; MODEM_Info("\r\nGSM->SMS:%s\r\n",data); if(SendSMS(recipient, data)) return 0xff; // len = strlen((char *)data); return 0; }
static int send_sms (const char *phone, const char *text) { return SendSMS(gsm_modem, phone, text); return -1; }