Serielle Schnittstellen



  • Hallo,

    kennt sich einer von euch mit der Programmierung mit den seriellen Schnittstellen speziell über die Hardwareports (Funktionen in C: inp(), outp()) aus?

    Ich hab da nämlich ein schwerwiegendes Problem.



  • Ich hab da nämlich ein schwerwiegendes Problem.

    Dann erklär uns doch bitte einfach das Problem, anstelle eine dumme Vor-Frage zu stellen :o



  • @kingruedi
    Ok auf deine Verantwortung 😉

    Also, ich habe da ein Programm, dass Dateien von einem Rechner auf den anderen übertragen soll über die serielle Schnittstelle (Y-Modem-Protokoll). Beim Speichern der übertragenen Datei treten aber immer Fehler auf. Diese wären:

    1. Die Datei wird verstümmelt gespeichert, d. h. mitten in der Datei fehlen auf einmal Daten.

    2. Die Datei zum Speichern lässt sich nicht öffnen. Grund vom System (über die Variable errno): Nicht genügend Speicher (Festplattenspeicher ist genügend vorhanden). Ich habe mir dann auch mal den freien Speicher über die Funktion coreleft() ausgeben lassen. Dabei kam raus, dass ich vor dem Öffnen z. B. 96.000 Byte frei habe. Danach plötzlich nur noch 160 Byte 😕 Teilweise kommt der Fehler nicht, dann hab ich nach dem Öffnen noch über 95.000 Byte frei.

    3. Teilweise tritt das Speicherproblem erst nach der kompletten Übertragung auf.

    Wie ich nun darauf komme, dass es an der Programmierung für die serielle Schnittstelle liegt? Ich habe das Programm mit einem anderen Modul getestet, dass auch die serielle Kommunikation macht. Da läuft es einwandfrei. Leider kann ich dieses Modul aber nicht hernehmen für das was ich brauche.
    Daher hab ich selbst ein Modul für die serielle Kommunikation geschrieben anhand von vorgegebenen Code. Aber anscheinend stimmt da irgendwas nicht, sonst würden nicht diese groben Fehler auftauchen. Jetzt bräuchte ich also etwas Unterstützung dabei, weil ich nicht mehr weiter weiß und leider auch keine richtigen Quellen dazu finden kann, da es ja doch schon eine etwas überaltete Programmierung ist. Wie schon gesagt, das Ganze wird über die Hardwareports gesteuert (In C geht das über die Funktionen inp() und outp()).



  • Was ich noch vergessen hab:
    Die serielle Kommunikation läuft natürlich zusätzlich noch mit Interrupts (sonst würden hohe Geschwindigkeiten nicht funktionieren ;)).



  • Problem hat sich erledigt.

    Man sollte hald doch öffters nachschauen wieviel Speicherplatz man für einen bestimmten Datentyp allociert 🙄


Anmelden zum Antworten