Hi! Ich habe hier einen Atmega1280 und möchte gern eine SMS versenden. Hierzu habe ich mir den SMS-Quellcode von Ulrich Radig als Basis genommen. Ulrich gibt fdevopen eine Uart_putchar und macht die Ausgaben dann weiter mit printf. Das funktionierte bei mir nicht. Darum habe ich so ziemlich alles zeichenweise über uart_putc ausgegeben. Funktioniert auch alles und sieht gut aus. Bis auf die Nachricht selbst. Nachdem sie gemäß Radig so ins PDU-Format codiert wurde: //erzeugen des Nachrichten Strings while (nachricht[tmp1] != 0){ nachrichtneu[tmp2] = (nachricht[tmp1]&0x7F)>>shift; if (shift != 0){ nachrichtneu[tmp2-1] |= (nachricht[tmp1]&((1<<shift)-1))<<(8-shift); }; shift++; tmp1++; if (shift == 8){ shift=0; } else{ tmp2++; }; }; nachrichtneu[0]= tmp1; Gibt er sie so aus: //Senden Nachrichten String for (tmp1 = 0;tmp1<tmp2;tmp1++){ printf("%02X", nachrichtneu[tmp1]); }; Hier liegt mein Problem. Wenn ich nachrichtneu einfach zeichenweise mit putc ausgebe kommt nur Müll auf der seriellen an. Ulrich Radig gibt die Zeichen hier aber ja auch als unsigned hex (X) aus. Da liegt vermutlich der Hund begraben, oder? Kann ich das irgendwie über die serielle Schnittstelle bringen ohne fdevopen zu benutzen?
Hallo Henning, was meinst Du mit "es kommt nur Müll an"? Die PDU Nachricht kannst Du nicht mehr sinnvoll lesen. Sie ist Müll! Genau wie der gesamte PDU Mode. Wer sich den ausgedacht hat dürfte mir Nachts nicht in einer dunklen Gasse begegnen! Wenn Du irgendwie kannst mach es im Textmode. Ich habe die PDU - SMS Nachricht auch als einzelne Zeichen ausgetaktet. Bei mir hat das funktioniert. Leider nur SMSe bis maximal 15 Zeichen. Ich habe aber nicht rausbekommen warum. Ich bin dann auf den Textmode umgestiegen. Der funktioniert wunderbar. Ich hoffe Dir mit meiner sehr emotionalen und fachlich fragwürdigen Antwort trotzdem geholfen zu haben ;-) Ich habe mich einfach zu lange mit dem PDU Mode rumgeschlagen. Gruß Florian
Danke, danke. Mit Müll meinte ich Müll. Also keine in Zeichen darstellbaren Bitmuster mehr. Ich habe das Problem aber gelöst. Vermutlich hat eine der von mir genutzten Libs vorher schon ein fdevopen auf einen anderen Kanal gemacht. So gehts jetzt: FILE* me=fdevopen (uart3_putc, NULL); for (tmp1 = 0;tmp1<tmp2;tmp1++){ fprintf(me,"%02X", nachrichtneu[tmp1]); }; Na mal sehen, wanns das nächste Mal hakt ;) Grüße!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.