mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik fdevopen,usart,atmega1280,c,sms (pdu)


Autor: Henning (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Henning (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.