Senden einer SMS

OP #4780771
Lesenswert?

Hallo zusammen,

ich schaffe es nicht von meinem GSM Modul (GT864 E mit Telit GE864 Quad) 
über hterm eine SMS zu versenden.

Ich gebe folgende Kommandos ein:

Kommando           Antwort:
AT                           OK
AT+CPIN=0000    OK
AT+CMGF=1         OK
AT+CMGS="+491735....." Ok und Einhabezeichen >
Text und Enter drücken. Leider bleibe ich dann im Eingabemodus hängen. 
Nach jedem Enter kommt das Eingabezeichen >

Was kann das sein?
OP #5140264
Lesenswert?

Ich habe jetzt ein bisschen weiter getestet und kann vom Mikrocontroller 
die AT Kommandos bis einschließlich des Textes absenden. 
Atmel-Beispielvideo sei Dank:-)
1
char String_CPIN[]="AT+CPIN=6674\r";
2
char String_CMGF[]="AT+CMGF=1\r";
3
char String_CSCS[]="AT+CSCS=\"GSM\"\r";
4
char String_CMGS[]="AT+CMGS=01234567890\r";
5
char String_TEXT[]="Test77\r";
Gesendet mit:
1
void GSM_init(void)
2
{
3
  n++;
4
  USART0_putstring(String_CPIN);
5
  _delay_ms(200);
6
  USART0_putstring(String_CMGF);
7
  _delay_ms(200);
8
  USART0_putstring(String_CSCS);
9
  _delay_ms(200);
10
  USART0_putstring(String_CMGS);
11
  _delay_ms(200);
12
  USART0_putstring(String_TEXT);
13
  _delay_ms(200);
14
  USART0_putstring(String_TEXT_ENDE);
15
  _delay_ms(200);
16
  n++;
17
}
1
void USART0_putstring(char* String)
2
{
3
  while(*String != 0x00)
4
  {
5
    USART0_Transmit(*String);    //Using the simple send function we send one char at a time
6
    String++;
7
  }                                //We increment the pointer so we can read the next char
8
}
1
void USART0_Transmit(unsigned char data)
2
{
3
  unsigned char tmphead;
4
  
5
  /* Calculate buffer index */
6
  tmphead = (USART0_TxHead + 1) & USART_TX_BUFFER_MASK;
7
  /* Wait for free space in buffer */
8
  while (tmphead == USART0_TxTail);
9
  /* Store data in buffer */
10
  USART0_TxBuf[tmphead] = data;
11
  /* Store new index */
12
  USART0_TxHead = tmphead;
13
  /* Enable UDRE interrupt */
14
  UCSR0B |= (1<<UDRIE0);
15
}

Wie kann ich jetzt in den Hex-Wert 0x1A als String bzw. char absenden um 
den Sendevorgang abzuschließen?

char String_TEXT_ENDE[]="????";

Vielen Dank.

Gruß

Datatom

--

Ich glaube nicht, daß Du hier eine Telephonnummer veröffentlichen 
willst.

-rufus
Gast #5140444
Lesenswert?

Warum nicht einfach nach dem Texts USART0_Transmit(0x1A); ?

Bei manchen Modulen musst du noch den Zeichensatz auf GSM umstellen:
AT+CSCS="GSM"

Wenn ich mich an meine Entwicklungen mit dem GT864-PY erinnere, ist das 
AT+CSCS-Kommando dort nicht notwendig, weil standardmässig GSM 
eingestellt ist... Ich könnte mich aber auch irren.

Ich empfehle dir, zwecks Vereinfachung den PIN mit einem alten 
Nokia-Handy  auszuschalten, falls es eine Prepaid-SIM ist...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren