serielle Schnittstelle [ERLEDIGT]

Sonstiges (nicht kategorisierbar)

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

serielle Schnittstelle [ERLEDIGT]

Beitrag von Manfred »

Hi,

ich stehe vor einem kleinen Problem. Wie schon woanders hier berichtet, habe ich einen Datenzufluß über eine serielle Schnittstelle. ToolsIII zum programmieren habe ich. Aber ich habe leider Gottes kein Gerät, was mir die Daten dazu liefert, weil das fest eingebaut ist. Jetzt möchte ich gerne ein kleines Programm schreiben, mit dem ich die Daten zumindest abfangen und am Bildschirm anzeigen kann, damit ich sehe ich bin auf der richtigen Spur.

Hat vielleicht jemand eine Idee, wie man sowas simulieren kann, wenn man kein serielles Gerät dafür hat. Im Moment fällt mir nichts ein, was man heute noch hat für die serielle Schnittstelle, das auch Daten zum PC senden würde.
Zuletzt geändert von Manfred am Fr, 18. Jun 2010 13:16, insgesamt 1-mal geändert.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2934
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: serielle Schnittstelle

Beitrag von Wolfgang Ciriack »

Versuch doch einfach 2 PCs über die serielle Schnittstelle zu verbinden. M.E. sollte das mit einem Nullmodemkabel funktionieren.
Frag mich jetzt aber nicht nach der Verkabelung :wink:
Viele Grüße
Wolfgang
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: serielle Schnittstelle

Beitrag von Manfred »

Jaja,

da hast Du recht, daran habe ich nicht gedacht. Aber ich glaube ich habe keinen 2.PC mehr. Aber wenn ich genau nachdenke..... irgendwo im stillen Kämmerlein.

Sowas blödes, liegt direkt vor der Tür, sagt nichts und wird auch nicht gesehen.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2934
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: serielle Schnittstelle

Beitrag von Wolfgang Ciriack »

Hallo Manfred,
evtl. könntest du dir auch einen USB-Seriell Adapter besorgen, dann serielle Schnittstelle mit dem Adapter verbinden und Daten mit demselben Programm über z.B. Com1 senden und von Com2 lesen.
Viele Grüße
Wolfgang
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: serielle Schnittstelle

Beitrag von Manfred »

Wolfgang,

Deine Idee war schon eigentlich goldrichtig. Ich habe hier gerade noch einen PC gefunden mit 2 seriellen Schnittstellen und etliche Kabel, mit Kreuz und Quer Adapter und Nullmodem Adapter aus alten Zeiten. Das werde ich mal austesten, ob das so klappt, wie ich es gerne hätte.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: serielle Schnittstelle

Beitrag von Manfred »

Hi,

das Grundkonzept klappt. Software, die beliebiges über die ser. Schnittstelle schickt, das man dann auf der 2. auffangen und verarbeiten kann.

Jetzt gibt es ein weiteres Problem, hat jemand Erfahrung mit den Tools und den Funktionen für die ser. Schnittstelle?

Code: Alles auswählen

PROCEDURE main()
          LOCAL cEingabe := ""
          LOCAL cText    := ""
          LOCAL cZeichen
          LOCAL lInit
          LOCAL lStatus
          LOCAL nPort    := 1                                                   // COM Schnittstelle
          LOCAL nZaehler := 0

          lStatus := Com_Open(nPort,2000)
          lInit   := Com_Init(nPort,9600)
          DO WHILE lStatus .AND. lInit                                          // wenn nicht zu öffnen ging, dann Ende
             cZeichen := Com_Read(nPort,1)                                      // immer nur 1 Zeichen lesen
             IF Empty(cZeichen)
                LOOP
             ENDIF
             IF StrToHex(cZeichen) = "C3"                                       // hier muß konvertiert werden
                cZeichen := Com_Read(nPort,1)                                   // nächstes Byte einlesen um zu wissen wohin konvertiert werden muß
                IF StrToHex(cZeichen) = "71"
                   cEingabe += "02"
                ELSEIF StrToHex(cZeichen) = "72"
                   cEingabe += "03"
                ELSEIF StrToHex(cZeichen) = "73"
                   cEingabe += "C3"
                ENDIF
                cEingabe += Space(1)
                Loop
             ELSEIF StrToHex(cZeichen) = "03"                                   // Ende des Datensatzes
                ? Time() + " -> " + cEingabe                                    // Anzeige am Bildschirm
                cText += cEingabe + CRLF                                        // Anhängen an den Textstring
                cEingabe := ""
             ELSE
                IF StrToHex(cZeichen) <> "02"
                   cEingabe += StrToHex(cZeichen) + Space(1)
                ENDIF
                Loop
             ENDIF
             IF ++nZaehler > 100                                                // Schleife wild von mir gesetzt
                EXIT
             ENDIF
          ENDDO
          MemoWrit("..\download\seriell.txt",cText)
          Com_Close(nPort)
          RETURN
Irgendwie werde ich das Gefühl nicht los, als wenn sich irgendwann die Daten wiederholen, so als ob der Puffer wieder von vorne ausgelesen wird, wenn er durch ist.

Der Parameter lNichtLöschen ist in den Tools für xbase++ nicht mehr dabei. Muß ich jetzt irgendwas selbst machen mit dem Buffer? Ich kann so direkt nichts finden im Handbuch, was ich direkt verstehen würde. Leider habe ich nicht so viel Erfahrung mit ser. Schnittstellen, bzw. es ist schon verdammt lange her, dass ich die benutzt habe. Mein damaliger Quellcode existiert nicht mehr und somit weiß ich auch nicht, wie ich damals das Problem angegangen bin.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2934
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: serielle Schnittstelle

Beitrag von Wolfgang Ciriack »

Hallo Manfred,
ich mache immer vorm Senden und nach dem Lesen einen COM_FLUSH(comport).
Viele Grüße
Wolfgang
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9358
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: serielle Schnittstelle

Beitrag von Tom »

Möglich auch, dass der Sender irgendeine Quittung erwartet.
Herzlich,
Tom
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2934
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: serielle Schnittstelle

Beitrag von Wolfgang Ciriack »

Du solltest natürlich vorher mit COM_COUNT prüfen, ob noch Zeichen zu lesen sind.
Wäre es nicht sowieso besser, nicht nur ein Zeichen von der Schnittstelle zu lesen, sondern gleich mehrere und dann über eine Stringverarbeitung die Zeichen zu extrahieren ?
Viele Grüße
Wolfgang
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: serielle Schnittstelle

Beitrag von Manfred »

@Wolfgang,

Com_Flush() kann ich jetzt im Moment nicht einordnen. Es kommen laufend Daten. Es handelt ich hier nur um Empfang. Würde ich damit nicht die nachfolgenden Daten killen?

Ich hatte das mit den einzelnen Zeichen deshalb so gewählt, um es einfacher weiterverarbeiten zu können. Vielleicht sollte ich es mal ändern.

@Tom,

das wäre jetzt noch zu prüfen, denke ich aber nicht.


Ich wollte nur erstmal wissen, ob etwas grundsätzliches falsch läuft. Also noch ein wenig experimentieren.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: serielle Schnittstelle

Beitrag von Manfred »

Kommando zurück,

ich habe das Programm im Livesystem laufen lassen und da klappt es. Scheint also nicht so ganz zu klappen mit dem "Combeschickungsprogramm".
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Antworten