Einstiegsprobleme mit der seriellen Schnittstelle

OP #3629311
Lesenswert?
• ▲
▼
Hallo Forum,

ich bin momentan dabei ein Programm zu schreiben welches mit einem µC 
(MSP430) kommunizieren soll. Als PC-Ausgang soll dabei USB verwendet 
werden, als µC Eingang UART. Zu diesem Zwecke ist zwischen den beiden 
ein FT232RL verbaut.

Mit HTerm funktioniert die Kommunikation (beidseitig, also PC sendet und 
empfängt).

Ich versuche die Kommunikation aber in einem eigenen C-Programm zu 
schreiben, da ich die empfangenen Daten weiterverarbeiten muss und das 
mit HTerm nicht in gewünschter Weise möglich ist.

Im Anhang habe ich meine ersten 3 Versuche dargestellt. Ich hoffe ihr 
könnt mich auf meinen Fehler hinweisen und Lösungsvorschläge geben.

Zum Fehlerbild: Ich bekomme kryptische Antworten (beim Zeichenweise 
auslesen ist alles dabei zwischen 0 und ffffffff, der PC versucht mich 
auch mit Smileys zu beruhigen (hex = 02) ;-) ).

Das Programm sollte OS unabhängig sein, darum habe ich die Standardlibs 
nur eingebunden und weder <windows.h> noch <unistd.h> benutzt.

Zu den Anhängen: orig.c:      Das war der erste Versuch
                 c_kom_t1.c:  Der erste Versuch überarbeitet
                 c_kom_t2.c:  orig.c wurde überarbeitet um fopen einmal 
als read und einmal als write auszuführen, allerding ist es beim read 
sehr still geworden...
Angehängte Dateien:
#3629382
Lesenswert?
• ▲
▼
also hat dein Problem nix mit usb zu tun, sondern mit "wie benutze ich 
die serielle schnittstelle"

Ich hatte hier mal eine kleine lib eingestellt, die ich mir für meine 
Bedürfnisse gebaut hatte und sowohl auf der Fritzbox, als auch am PC 
funktionierte:

Beitrag "PortableSerialLib - Portable Serial Port Library"

(weiter unten ist eine neuere Version und ganz unten noch ein patch)
Gast #3641698
Lesenswert?
• ▲
▼
Er Se schrieb:
> Ich versuche die Kommunikation aber in einem eigenen C-Programm zu
> schreiben,...

ja, dein Code zum Öffnen des Ports sieht lausig aus. Ich poste dir mal 
nen funktionierenden Code, allerdings in Pascal. Aber das Essentielle 
solltest du daraus erkennen können.

{ Opens the COM port, returns True if ok }
function TComPort.Open: Boolean;
var
  sCom      : String;
begin
  result:= false;
                  { close port if open already }
  if hPort <> INVALID_HANDLE_VALUE then Close;

             { try to open the port }
  if nPort>=10
  then  sCom := '\\.\COM' + IntToStr(nPort)
  else  sCom := 'COM' + IntToStr(nPort);
  hPort := CreateFile(PChar(sCom),
                        GENERIC_READ or GENERIC_WRITE,
                        0,
                        nil,
                        OPEN_EXISTING,
                        FILE_ATTRIBUTE_NORMAL,
                        LongInt(0));

  if hPort = INVALID_HANDLE_VALUE then exit;

                  { set the baud rate and other parameters }
  if GetCommState(hPort, dcbPort)
  then begin
                  { fill in the fields of the structure }
         dcbPort.BaudRate := lBaud;
         dcbPort.ByteSize := 8;
         dcbPort.Parity := NOPARITY;
         dcbPort.StopBits := ONESTOPBIT;
         SetCommState(hPort, dcbPort);
       end;

                      { return True if handle is valid }
  result := (hPort <> INVALID_HANDLE_VALUE);
end;



W.S.

Antwort schreiben

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.

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.