V.24 Schnittstelle



  • Hallo,
    ich bin newby und habe ein ziemlich grosses Problem mit dem Übersetzten eines alten Turbo C++ Codes!
    In diesem älternen Programm werden Daten mit einer DOS-Applikation über die serielle Schnittstelle an ein externes Gerät geschickt, welches als Antwort ebenfalls Daten zurückgibt.
    z.B. Senden:

    unsigned send ( char ch )
    byte buf[2];
    int int_ch;
    int_ch = ch;
    send14_std ( &int_ch, ss );

    void send14_std (int *value, int channel)
    {
    union REGS r;
    r.x.ax = *value;
    r.h.ah = 1;
    r.x.dx = channel;
    int86 (0x14, &r, &r);
    *value = r.x.ax;

    daneben wird dann noch syncronisiertund aufs Echo gewartet!

    Mein Problem ist, das ich nicht verstehe, was, wann und welche Zeichen bzw. Zahlen über die Schnittstelle geschickt werden! Mein Hyperterminal zeigt irgendwie nichts gescheites an!
    Kann mir jemand weiterhelfen oder ein Tipp geben um das ganze zu verstehen?
    Hab leider keine Beschreibung für den Controller im externen Gerät; außer die Anforderungen an Baud, Stopbits usw.
    Bin über jeden Hinweis dankbar.
    Liebe Grüsse
    Danni



  • 1. Um in Windows die serielle Schnittstelle zu benutzen, schau dir mal die Konsolen-FAQ an

    2. Ohne Beispiel-Quellcode kann zumindest ich dir nicht erklären was die Funktion bzw. der Interrupt-Aufruf genau macht. Eigentlich ist mir nur unklar was die Variable channel auszusagen hat. In value steht vermutlich das Zeichen, das übertragen werden soll.

    Mit der Klasse in der FAQ, mit der du auf die serielle Schnittstelle zugreifen kannst wirst du dich sicher leichter tun. Im Endeffekt brauchst du die gewünschte Schnittstelle nur initialisieren (Baud, Stopbits, ...; wie bisehr wohl auch ;)) und dann deinen "Text" (Protokollsatz, ... 😕 ) einer Methode übergeben, die das dann über die Schnittstelle rausschickt. Mit einer anderen Methode kannst du dann die empfangene Antwort(en) holen.



  • Danke erstmal für deine schnelle Antwort!
    Wie man die serielle Schnittstelle in Windows bedient ist mir bekannt. Das Problem besteht nur darin, zu verstehen, was das alte Dos-Konsolenprogramm an Daten über die serielle Schnittstelle sendet bzw. auf was der Controller im externen Gerät reagiert oder antwortet. Hab, wie schon erwähnt, versucht, das mitteln HyperTerminal usw. herauszubekommen -leider ohne Erfolg ...
    bräuchte also noch einen Tip 😕
    Danke Daniel



  • Eine einfache Möglichkeit wäre mit einem Leitungsüberwacher, d. h. ein 3. PC, an dessen Schnittstellen die Daten des PC und die Daten des Geräts zu empfangen. Dazu bräuchtest du aber auch eine kleine Änderung an der Hardware, speziell am Verbindungskabel zwischen PC und Gerät. Bei den Pins zum Senden müsstest du jeweils eine Abzweigung einbauen, die dann jeweils an einem Port des Zwischenrechners gehen. Ich hoffe ich habe es einigermaßen verständlich rübergebracht. Allerdings befürchte ich wirst du damit nicht viel anfangen können :(.

    Gibt es denn keine Protokollbeschreibung im Internet oder beim Hersteller zu dem Gerät?? Das wär natürlich am einfachsten. 😉

    Vielleicht bekomm ich es einigermaßen mit einer Zeichnung hin, was ich mit dem Leitungsüberwacher meine:

    /----\ _________________________ /-------\
    |    | _________________________ |       |  //andere Leitungen
    | PC | _________________________ | Gerät |
    |    | _________________________ |       |  //Sendeleitung: Grät
    \----/ _______________|_________ \-------/  //Sendeleitung: PC
                     |    |
                  /---------\
                  |         | //empfängt am einen Port die Sendedaten vom PC
                  | Wächter | //und am anderen die Antworten vom Gerät
                  |         |
                  \---------/
    


  • danke für den Tipp und die Mühe, versuche es aber gerade mit dem Demo: advanced serial port Monitor. Leider bekomm ich im Moment nur folgende Zeilen als Ausgabe:

    ÿ™«Ô00«Õ01«Ö00«^2D«À01§0002§0000§t01§uFF§v02§w84§x9C§y00§zFF§{1F§|DE§}04§~00§03§€00§XX§‚XX§Ø00§Ù00§Ú00§Û00§Ü00§Ý00§Þ01§â00§ã00§å00§æ00§ì01§í00§ö00
    usw.

    eigentlöich wird ja nur ein zeichen an der seriellen Schnittstelle ausgegeben? Naja, vielleicht liegt es ja an den Einstellungen 😕

    Versuche es mal weiter .....



  • Ja das liegt eindeutig an den Einstellungen. Weißt du denn überhaupt welche Baudrate, Stopbits, usw. du einstellen musst? Wenn nämlich nur eine einzige Einstellung anders ist, dann bekommt man solche Hyroglyphen.


Anmelden zum Antworten