Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Textzeile Einlesen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Textzeile Einlesen (667 mal gelesen)
Ex-Mitglied
Niggemann
Mitglied



Sehen Sie sich das Profil von Niggemann an!   Senden Sie eine Private Message an Niggemann  Schreiben Sie einen Gästebucheintrag für Niggemann

Beiträge: 159
Registriert: 31.10.2003

Win 98 Se, ACAD 2004, XP Prof, ACAD 2004 und ACAD 2010

erstellt am: 23. Aug. 2006 23:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Rabbit 007 10 Unities + Antwort hilfreich

Hallo Rabbit007,
Welche Teile fehlen dir ??
Es wäre Nützlich dieses zuwissen.

Gruß
Niggemann

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



Sehen Sie sich das Profil von CAD-Huebner an!   Senden Sie eine Private Message an CAD-Huebner  Schreiben Sie einen Gästebucheintrag für CAD-Huebner

Beiträge: 9732
Registriert: 01.12.2003

One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11

erstellt am: 24. Aug. 2006 00:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Rabbit 007 10 Unities + Antwort hilfreich

Ich würde nicht mit read-line lesen, da ja immer nur bis cr+lf gelesen wird. Besser ist es, mit read-char zeichenweise zu lesen.
Aber binaer mit Lisp zu lesen ist mit Standardlisp nur eingeschränkt möglich.
Ich zitiere mal aus der Lisp-Online Hilfe und im speziellen auch die Aussage von Mapcar
Zitat:

... Ich habe ja nur vor dem Lesen von binären Streams gewarnt, da macht Lisp nämlich aus jedem Byte 0x0A ein 0x0D.

in diesem Beitrag: http://ww3.cad.de/foren/ubb/Forum54/HTML/011654.shtml#000018

------------------
Mit freundlichem Gruß

Udo Hübner

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Ex-Mitglied
spider_dd
Mitglied



Sehen Sie sich das Profil von spider_dd an!   Senden Sie eine Private Message an spider_dd  Schreiben Sie einen Gästebucheintrag für spider_dd

Beiträge: 1111
Registriert: 27.11.2003

Win 10Pro
Intel(R) Core(TM) i7-7700
NVIDIA Quadro P1000
ACAD, Civil-3D 2018

erstellt am: 24. Aug. 2006 13:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Rabbit 007 10 Unities + Antwort hilfreich

Hallo Rabbit,

hast Du Dir mal im einzelnen angesehen was Du einliest? Und dann sieh Dir Deine Datei mal in einem Hex-Editor an.
Bei mir endet die erste gelesene Zeile mit "Modemnˆ", in der Datei kommt danach ein 0x0D (= CR).
Die zweite gelesenen Zeile endet mit "uXm", in der Datei kommt danach ein 0x1A (= SUB) was auch immer das ist.
Danach werden bei mir keine weiteren Daten gelesen (read-line liefert nil)

Springt der Zeiger dort ans Dateiende?

Also wie Udo schon sagte, wahrscheinlich besser Zeichenweise lesen und Zeilentrennung manuell bei 0x0D oder/und 0x0A (=  LF) einfügen.

lg
Thomas

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Niggemann
Mitglied



Sehen Sie sich das Profil von Niggemann an!   Senden Sie eine Private Message an Niggemann  Schreiben Sie einen Gästebucheintrag für Niggemann

Beiträge: 159
Registriert: 31.10.2003

Win 98 Se, ACAD 2004, XP Prof, ACAD 2004 und ACAD 2010

erstellt am: 24. Aug. 2006 21:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Rabbit 007 10 Unities + Antwort hilfreich

@Rabbit
Ich sehe es wie Thomas es wird wohl der einfachste Weg sein, beim lesen hatte ich deinen Anhang nicht gesehen.

@Thomas
Wenn ich das richtig sehe hast du mit deinem "SUB" recht
eine Erklärung gibt es hier:
[URL=http://de.wikipedia.org/wiki/Steuerzeichen][/URL]

@Udo
Hab mir deinen Link angesehen und etwas geblättert und bin auf etwas gestoßen was mich intressiert, Daten aus einem Messgerät über eine Com-Schnittstelle einzulesen. Probiert habe ich einiges rausgekommen ist nur das ACAD komplett stehen bleibt sobald ich vom COM lesen will.
Das Messgerät muß nicht angesprochen werden, es sendet auf Knopfdruck die Daten, lt. Hersteller reine Ascii Zeichen. Meine Frage Iniziallisierst du die Com-Schnittstelle oder hast du eine Idee was ich verkehrt mache.

Gruß
Niggemann

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



Sehen Sie sich das Profil von CAD-Huebner an!   Senden Sie eine Private Message an CAD-Huebner  Schreiben Sie einen Gästebucheintrag für CAD-Huebner

Beiträge: 9732
Registriert: 01.12.2003

One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11

erstellt am: 24. Aug. 2006 22:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Rabbit 007 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Niggemann:
[B... Meine Frage - initialisierst du die Com-Schnittstelle oder hast du eine Idee was ich verkehrt mache.

Gruß
Niggemann[/B]


Tja - was machst du denn?
Also die Com-Ansteuerung aus Autolisp heraus ist sehr beschränkt. Datenrate und dergleichen stelle ich über die Systemsteuerung bzw. auf der Windows Console mit dem Mode Befehl ein, so dass es zum Messgerät passt.
Dann wird mit

Code:

...
((WHILE (/=  10 (SETQ char (READ-CHAR comread))) ; 10 ist das <CR>
...


so lange gelesen, bis ein Zeichen  ASCII 10 kommt. Das muss natürlich auch kommen, damit die Schleife beendet werden kann.
Klappt denn der Datenempfang mit z.B. Hyperterminal problemlos?

------------------
Mit freundlichem Gruß

Udo Hübner

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

spider_dd
Mitglied



Sehen Sie sich das Profil von spider_dd an!   Senden Sie eine Private Message an spider_dd  Schreiben Sie einen Gästebucheintrag für spider_dd

Beiträge: 1111
Registriert: 27.11.2003

Win 10Pro
Intel(R) Core(TM) i7-7700
NVIDIA Quadro P1000
ACAD, Civil-3D 2018

erstellt am: 25. Aug. 2006 08:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Rabbit 007 10 Unities + Antwort hilfreich

Hallo Rabbit,

Zitat:
Original erstellt von Niggemann:
@Thomas
Wenn ich das richtig sehe hast du mit deinem "SUB" recht
eine Erklärung gibt es hier:
[URL=http://de.wikipedia.org/wiki/Steuerzeichen][/URL]

Na da haben wir es doch!!

Zitat:
aus wikipedia
SUB  Substitute  Ersetzen
Steht als Ersatz für ein Zeichen, das ungültig oder fehlerhaft ist.
Dateiendezeichen (EOF, End of File) für Textdateien unter CP/M mangels bytegenauer Dateilängen, war anfänglich, obwohl unnötig, auch unter DOS üblich.

Dies wird offensichtlich von Lisp als Dateiende interpretiert und damit ist dann Schluss mit Einlesen.

lg Thomas

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Niggemann
Mitglied



Sehen Sie sich das Profil von Niggemann an!   Senden Sie eine Private Message an Niggemann  Schreiben Sie einen Gästebucheintrag für Niggemann

Beiträge: 159
Registriert: 31.10.2003

Win 98 Se, ACAD 2004, XP Prof, ACAD 2004 und ACAD 2010

erstellt am: 25. Aug. 2006 12:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Rabbit 007 10 Unities + Antwort hilfreich

Hallo Udo,
Ich öffne den Comport mit (setq COMRAED  (open "COM1:" "r")) und bekomme folgendes in Visual Lisp zurück:
#<file "COM1:">
{name} "COM1:
{mode} :INPUT
{position}0
{EOF}nil
nun prüfe ich mit dieser Zeile (setq CHAR (read-char COMREAD)) ohne die while zu benutzen und ACAD bzw. Visual Lisp steht, nichts geht mehr.
Der Datenfluß ist Gewährleistet da die zum Messgerät gehöhrende Software Einwandfrei arbeitet. Die Software ist mir nur zu Aufwändig und zu Umständlich in der Handhabung.

Gruß
Niggemann

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



Sehen Sie sich das Profil von CAD-Huebner an!   Senden Sie eine Private Message an CAD-Huebner  Schreiben Sie einen Gästebucheintrag für CAD-Huebner

Beiträge: 9732
Registriert: 01.12.2003

One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11

erstellt am: 25. Aug. 2006 17:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Rabbit 007 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Niggemann:
...Der Datenfluß ist gewährleistet, da die zum Messgerät gehörende Software einwandfrei arbeitet...Gruß
Niggemann


Meine Frage war aber:
Zitat:

Klappt denn der Datenempfang mit z.B. Hyperterminal problemlos?


Das nicht ohne Grund, denn viele Geräte im Vermessungsbereich (z.B. ältere Wild-Geräte) arbeiten mit einer Prüfung für den Datenempfang, wo die empfangende Software ein bestimmtes Zeichen zurücksenden muss, bevor (weitere) Daten gesendet werden.
Also zuerst mal bitte mit Hyperterminal testen.

------------------
Mit freundlichem Gruß

Udo Hübner

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



Sehen Sie sich das Profil von CAD-Huebner an!   Senden Sie eine Private Message an CAD-Huebner  Schreiben Sie einen Gästebucheintrag für CAD-Huebner

Beiträge: 9732
Registriert: 01.12.2003

One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11

erstellt am: 25. Aug. 2006 17:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Rabbit 007 10 Unities + Antwort hilfreich

Was gibt denn MODE COM1: auf der NT-COnsole für Einstellungen aus?
Die zum Messgerät gehörende Software kann diese Parameter ja selst auf die benötigten Werte überschreiben, LISP nicht.
Code:

C:\>mode com1:

Status von Gerät COM1:
----------------------
    Baudrate:        1200
    Parität:        None
    Datenbits:      7
    Stoppbits:      1
    Zeitlimit:      OFF
    XON/XOFF:        OFF
    CTS-Handshaking: OFF
    DSR-Handshaking: OFF
    DSR-Prüfung:    OFF
    DTR-Signal:      ON
    RTS-Signal:      ON



------------------
Mit freundlichem Gruß

Udo Hübner

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Niggemann
Mitglied



Sehen Sie sich das Profil von Niggemann an!   Senden Sie eine Private Message an Niggemann  Schreiben Sie einen Gästebucheintrag für Niggemann

Beiträge: 159
Registriert: 31.10.2003

Win 98 Se, ACAD 2004, XP Prof, ACAD 2004 und ACAD 2010

erstellt am: 25. Aug. 2006 20:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Rabbit 007 10 Unities + Antwort hilfreich

Hallo Udo,

mit Hyperterminal klappt es Problemlos, mußte das Programm aber erst installieren. Sollten es nicht mit Lisp Funktionieren ist es mit Hyperterminal eine Alternative an die Messdaten zukommen.
Das Ergebnis von "mode com1:"  ist bei mir folgendes:
Status für Gerät COM1:
-----------------------
RETRY=NONE

Die Einstellungen von Hyperterminal sin folgende:
Bits pro sec. = 2400
Datenbits = 8
Parität = keine
Stoppbits = 1
Protokoll = Hardware
Allso die Vorgaben, dieses gilt auch für die Erweiterten Einstellungen.
Bis auf die Bautrate sind es genau die selben Einstellungen für meinen Comport in der Systemsteuerung.

Gruß
Niggemann

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz