"IScharwaiting()" funktioniert nur sinnvoll, wenn auch "config serialin=buffered" angegeben ist.
Hast du das ?
"IScharwaiting()" funktioniert nur sinnvoll, wenn auch "config serialin=buffered" angegeben ist.
Hast du das ?
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Wenn Du es Dir leicht machen willst. Ich verwende diese fertige Cpp-Klasse für die Kommunikation der RS232: http://www.hackchina.com/en/cont/16482
Sie lässt sich sehr leicht einbinden und bedienen, ist aber c++. Vielleicht trotzdem hilfreich für Dich?!
PS: Du brauchst aus dem Zip im Prinzip nur die Serial.cpp und Serial.h - der Rest hilft zum testen
Einbindung:
#include "Serial.h"
CSerial MySerial;
...
//Call
MySerial.Open(4,38400); // COM,Boud
CString test = "xyz";
MySerial.SendData(test,test.GetLength());
char EOL[] = {0x0d};
MySerial.SendData(EOL,1); // Für Bascom
MySerial.Close();
Im Serial.cpp wird dann bei Bedarf noch 8N1 umgestellt, ist aber default 8N1
wsprintf( szComParams, "COM%d:%d,n,8,1, nPort,nBaud);
Lesen dann respektive> int CSerial::ReadData(void xbuffer, int limit);
Auf share würde ich den COM-Port nicht stellen, sondern wie gesagt in Deinem Programm die Ausgabe anzeigen lassen - notfalls im Debugger. Also ohne zusätzliches Terminal Programm.
Geändert von pin117 (19.04.2012 um 13:19 Uhr)
Danke Dir pin, nett dass du mir den Vorschlag machst!
Ich habe den Fehler gefunden! Und jetzt wird es interessant: Der Fehler lag weder an meinem Programm, noch an meinem µC oder am Terminal oder iwelchen Zeichen, die nicht gesendet werden.
Achtung:
Mit rs232.h bekommt man eine wirklich ausreichende Library+Header für die Ansteuerung der COM. Sehr einfach und daher leicht anzuwenden.
ABER: Die Initalisierung des Ports klappt nicht, denn in der rs232.c - Datei, die von rs232.h verwendet wird und die Funktionen enthält, steckt ein Bug!
Der Fehler steckt zw. Zeile 280 und 300, bei der Definition der Funktion int OpenComport(COM,baud)
Hab gerade die Datei nicht zur Hand, da ich nicht zuhause bin, aber hier ein ungefährer Auszug:
Das return(0) muss weg!!!Code:/*GANZ VIEL CODE/* if(OpenComport(com,baud)){ printf("unable to open comport"); return(1);} else{ return(0);} /*GANZ VIEL CODE/*
Wenn das weg ist, dann wird die Funktion auch weiter abgearbeitet und nicht kurz vor BuildCommDCBA() abgebrochen.
Naja =) Jetzt klappts!
Danke euch allen!!!
Das return(x) ist ja nur für die Fehlerbehandlung in Deinem Call. Also der Rückgabewert, mit dem Du prüfen kannst, ob OpenComport(com,baud) geklappt hat oder nicht. Wenn er 0 postet, dann weil es nicht geklappt hat. Wenn Du die 0 löscht klappt es aber immer noch nicht bzw. macht die nichts, ausser Dich informieren?!?
Lesezeichen