1 | ISR(USART_RXC_vect)
|
2 | {
|
3 | unsigned char nextChar;
|
4 |
|
5 | nextChar = UDR; // Daten aus dem Puffer lesen
|
6 | if( uart_str_complete == 0 ) // wenn uart_string gerade in Verwendung, neues Zeichen verwerfen
|
7 | {
|
8 | // Daten werden erst in uart_string geschrieben,
|
9 | // wenn nicht String-Ende/max Zeichenlänge erreicht ist/string gerade verarbeitet wird
|
10 | if( nextChar != '\n' &&
|
11 | nextChar != '0x0D' &&
|
12 | uart_str_count < UART_MAXSTRLEN - 1 )
|
13 | {
|
14 | uart_string[uart_str_count] = nextChar;
|
15 | uart_str_count++;
|
16 | }
|
17 | else
|
18 | {
|
19 | uart_string[uart_str_count] = '\0';
|
20 | uart_str_count = 0;
|
21 | uart_str_complete = 1;
|
22 | }
|
23 | }
|
24 | }
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 | void msg_bearbeiten(const char *s) // Nachricht in Hexzeichen Umwandeln
|
31 | {
|
32 | char Buffer[20];
|
33 | while (*s)
|
34 | {
|
35 | // so lange *s != '\0' also ungleich dem "String-Endezeichen(Terminator)"
|
36 | uart_puts(itoa( (*s), Buffer, 16 ));
|
37 | s++;
|
38 | }
|
39 | uart_putc(0x0D); // "Enter"
|
40 | }
|
41 |
|
42 | void text_ausgeben ()
|
43 | {
|
44 | #define MAX_TEXTAUSGABELAENGE 30
|
45 |
|
46 | char msg[MAX_TEXTAUSGABELAENGE] = "Hallo Welt";
|
47 | char s[5];
|
48 | int msglen = 0;
|
49 | int hexanzahl = 0;
|
50 | char Buffer_0[20];
|
51 |
|
52 | msglen = strlen(msg); //Wie viele Hex-Pakete werden (ohne ESC) gesendet ?
|
53 |
|
54 | hexanzahl = msglen + 14;
|
55 |
|
56 |
|
57 | // Echo Ausschalten
|
58 | uart_puts("ATE0");
|
59 | uart_putc(0x0D);
|
60 |
|
61 | // Handy "Vorbereiten"
|
62 | uart_puts("AT^SSTK=");
|
63 | uart_puts(itoa( hexanzahl, Buffer_0, 10 ));
|
64 | uart_puts(",0"); // 0 da single command
|
65 | uart_putc(0x0D);
|
66 |
|
67 | // Intialisierungssequenz
|
68 | uart_puts("D0");
|
69 | hexanzahl = hexanzahl - 2;
|
70 | uart_puts(itoa( hexanzahl, Buffer_0, 16 ));
|
71 | uart_puts("8103012180820281028D");
|
72 |
|
73 | // Ab hier Erstellen der Textnachricht
|
74 | uart_puts("04");
|
75 | uart_puts(itoa( msglen, Buffer_0, 16 )); //Nacchtrichtenlänge in Hex senden
|
76 | msg_bearbeiten(msg); //Text Umwandeln und Senden
|
77 | }
|
Ich habe Das Programm testenkönnen, da ich feststellen musste,
dass mein handy nicht Kompertiebel ist :-(
Der Code Basiert u.a. auf dem Code von Niels Keller der in Basic
geschrieben ist.
LG