fdevopen,usart,atmega1280,c,sms (pdu)

Gast #1232155
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?
Gast
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
Gast
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.