RS232 - Übertragung



  • psYkomaN schrieb:

    Wo könnte der Fehler liegen?

    Gegenfrage: Welche Ausgaben macht das Programm?



  • Hallo Michael,

    wie ich dir schon per Mail geschrieben habe, ist der Rückgabewert -2 durchaus richtig, nur hatte ich ihn damals nicht dokumentiert. Er bedeutet, dass der angegebene COM-Port nicht verfügbar ist (der FAQ-Eintrag ist auch schon aktualisiert).

    Die richtige IRQ-Nummer solltest du über das BIOS deines DOS-Rechners herausbekommen oder auch entsprechend setzen können.

    Warum das Programm jetzt nicht funktioniert?

    Du initialisierst deine Variable comport mit com[0]. Das ist falsch. comport sollte eine Zahl zwischen 0 und MAX_COM - 1 sein (0 = COM1, 1 = COM2, ...).

    Wie genau sieht deine Verkabelung eigentlich aus? Sind die COM-Ports der beiden Rechner gleich eingestellt?

    Am Ende deiner main() solltest du noch deinitcomport() aufrufen, sonst kann es zu unerwünschtem, ungewöhnlichem Verhalten kommen.

    Deine main() passt auch noch nicht:

    int main(void)
    

    Das void vor main() wird zwar von MS-Compilern akzeptiert, ist aber, was den Standard angeht, falsch. Außerdem ist der Aufrufer oftmals froh, wenn er weiß, ob das aufgerufene Programm richtig gearbeitet hat oder nicht.

    Grüße

    AJ



  • Hallo zusammen,

    ich habe genau das gleiche Problem wie der Kollege und bringe den Code einfach nicht zum Laufen. Kann mir jemand den fertigien Code mailen, mit folgenden Einstellungen:

    9600, 8 datenbits, keine Paritaet, 1 Stopbit und kein Handshake...

    Danke



  • Für DOS?

    Für XP und Co. versuch's mal damit:
    http://www.transistornet.de/download.php?id=1126



  • Der Link geht nicht, auch nicht wenn man sich durch die Registrierung gequält hat.

    Unter Windows XP muss man doch sowieso einen Kernel-Mode Treiber schreiben um auf die Ports zugreifen zu können, oder?
    Oder man hat eine dll die das für einen macht, zB die port.dll von Herrn Kainka und Berndt, siehe http://www.b-kainka.de/schnitt.htm

    Auf der Seite gibt es sie auch (irgendwo) zum runterladen. Einfach mal googeln.
    Das Problem mit der DLL: Sie kann keine Interrupts an mein C-Programm weitergeben. 😞


Anmelden zum Antworten