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