Probleme mit der seriellen Kommunikation

Gast #179324
Hi,
ich sende Daten (Zahlen) als char array zuwischen PC und Atmega 16 hin
und her.
Die Zahlen werden als Bytes verpackt d.h. ich müsste Zahlen im Bereich
0-255 bzw -128-127 pro Byte senden können.
Leider kommen Zahlen größer als 127 nur als 63 an. also 0011_1111.
Ich finde den Fehler nicht. Leider ist das mit dem debug bei der
Seriellen Kommunikation ncith so leicht, aber bevor es an die UART im
MC geht lasse ich den Wert über die LEDs ausgeben und da stimmt der
Wert noch. Auf dem PC kommt leider im Empfangspuffer(ich nutze die C#
express beta, weil das die sereielle Schnittstelle recht einfach zu
beherrschen ist).

Hier mal meine Uart sendemethoden. Sind die üblichen halt nochn bissel
für mich angepasst.

void USART_transmit (unsigned char c) {
  while (!(UCSRA & (1<<UDRE))) {}
  UDR = c;
}

void USART_transmit_string (unsigned char *string,unsigned char lenght)
{
    while (!(UCSRA & (1<<UDRE))) {}
  for(int i=0;i<lenght;i++)//while ( *string!=0x00)//while ( *string)
    USART_transmit (*string++); //geht im string weiter und gibt zeichen
für zeichen aus
}

wen es wundert, dass ich die Läng mit angebe, das liegt daran, dass ich
den gesammten Wertebereich eines Bytes brauche ich kann also nicht auf
null oder enter oder ähnlich abfragen.

Ich wär Euch für schnelle Hilfe oder Denkanstöße dankbar

Gruß

Steffen
Gast #179325
Ich habe jetzt direkt in der UART:Transmit Methode eine 255 übertragen
also ohne Parameterübergabe. Resultat ist, dass auch eine 63 auf dem pc
erkannt wird. Eventuell liegt das Problem am C# :(
Ist als ob er Daten die ausserhalb des 7-bit ascii bereiches einfach 63
setzt.
Gast #179327
Es liegt nicth am MC die Daten kommen am PC einwandfrei an. das Problem
muss also in meinem C# Programm sein.
Die einstellungen für die serielle-Schnittstelle hab ich schon x mal
kontrolliert....:(

gruß

steffen
Gast #179328
Ich habs

es lag an dieser Zeile. Bwziehungsweise an deren nicht VOrhandeinsein.


sp.Encoding = System.Text.Encoding.GetEncoding("iso-8859-9");
Gast #179330
Was willst du denn wissen?
Das ist sozusagen die c# auskopplung aus dem, hoffendlich dieses Jahr
erscheinendem, Visual Studio 2005.
Es nutzt das Framework 2.0 beta. Der Vorteil(für mich im moment
wichtig) zum aktuellen 1.1 Framework ist, dass es eine Klasse
SerialPort gibt. Hier kann ich sehr einfach alles Parametrieren. Es
gibt events die ausgelöst werden, wenn der PC etwas empfangen hat.
Auf dem framework 1.1 muss man sehr viel mehr 'drumherum'
programmieren. Ich fand das zu aufwändig. Zumal ich mich ja nicht
primär um die Entwicklung einscher Schnittstellenkommunikation kümmere
sondern diese nur nutzen will.

Die beta kannste bei MS herunterladen. Auch das komplette Visual Studio
2005 beta. Andernfalls kannst du es auch für 5 Euro auf DVD nach hause
geschickt bekommen.

Steffen

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 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.