Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Befehle an COM1 senden

503 views
Skip to first unread message

Thomas Wildgruber

unread,
Jun 29, 2012, 4:29:44 AM6/29/12
to
Hi Group,

ich muss einen Beamer zeitgesteuert an- und wieder ausschalten und kann das
laut Manual über die serielle Schnittstelle tun. Das ganze Ein- und
Ausschalten funktioniert auch aus einem Hyperterminal schon mal problemlos.
Dazu muss ich die Kommandos POWR 1 oder POWR 0 absetzen. Zwischen dem
Kommando POWR und seinem Parameter {0|1} sind drei Leerzeichen zu tippen.

Wie kriege ich das jetzt zB in einer Commandshell hin, eines dieser
Kommandos an die serielle Schnittstelle COM1 zu senden? Das wäre nämlich
die Grundvoraussetzung für eine Batchdatei. Ich hab mal ganz naiv das
Kommando 'echo POWR 1 > com1' abgesetzt aber da erhalte ich ein Zugriff
verweigert zurück (CMD ist als Admin gestartet). Wenn ich das abzusetzende
Kommando in Gänsefüsschen schreibe, gibt mir zumindest der echo Befehl
diese auch mit aus und das wäre falsch. Welche Möglichkeit habe ich die
Leerzeichen im Kommando zu maskieren?

Und als zweites noch die Frage, ob ich die serielle Schnittstelle noch mit
dem mode Befehl initialisieren muss? Die Einstellungen sind Standard. Wenn
ich aber zB noch das Kommando 'mode com1:9600,n,8,1,r' zum initialisieren
der Schnittstelle benötige, wie hänge ich da noch meinen eigentlichen
Befehl dran?

Thx & Bye Tom
--
"Manches Gewissen ist nur rein, weil es nie benutzt wurde" (Robert Lembke)

Ralph Aichinger

unread,
Jun 29, 2012, 4:37:13 AM6/29/12
to
Thomas Wildgruber <excp...@web.de> wrote:
> Wie kriege ich das jetzt zB in einer Commandshell hin, eines dieser
> Kommandos an die serielle Schnittstelle COM1 zu senden? Das wäre nämlich
> die Grundvoraussetzung für eine Batchdatei.

Eine Möglichkeit (nur eine, bestimmt kann man das in PowerShell
oder ähnlichem genauso machen) wäre:

http://search.cpan.org/~bbirth/Win32-SerialPort-0.22/lib/Win32/SerialPort.pm

/ralph

Ralf Breuer

unread,
Jun 29, 2012, 5:17:24 AM6/29/12
to
Thomas Wildgruber <excp...@web.de> schrieb:

> ich muss einen Beamer zeitgesteuert an- und wieder ausschalten und kann das
> laut Manual über die serielle Schnittstelle tun. Das ganze Ein- und
> Ausschalten funktioniert auch aus einem Hyperterminal schon mal problemlos.
> Dazu muss ich die Kommandos POWR 1 oder POWR 0 absetzen. Zwischen dem
> Kommando POWR und seinem Parameter {0|1} sind drei Leerzeichen zu tippen.
>
> Wie kriege ich das jetzt zB in einer Commandshell hin, eines dieser
> Kommandos an die serielle Schnittstelle COM1 zu senden? Das wäre nämlich
> die Grundvoraussetzung für eine Batchdatei. Ich hab mal ganz naiv das
> Kommando 'echo POWR 1 > com1' abgesetzt aber da erhalte ich ein Zugriff
> verweigert zurück (CMD ist als Admin gestartet).

Welches Betriebssystem?
Gibt es com1? Wenn ja, ist com1 vielleicht gerade belegt von einem anderen
Programm?

Mit Windows 7 gerade gestestet klappt das echo auf einen com-Port
problemlos. Es muss nicht einmal ein Admin-cmd sein.

> Wenn ich das abzusetzende
> Kommando in Gänsefüsschen schreibe, gibt mir zumindest der echo Befehl
> diese auch mit aus und das wäre falsch. Welche Möglichkeit habe ich die
> Leerzeichen im Kommando zu maskieren?

Das ist nicht nötig. echo macht genau das, was Du schreibst, also auch 3
Leerzeichen.

> Und als zweites noch die Frage, ob ich die serielle Schnittstelle noch mit
> dem mode Befehl initialisieren muss? Die Einstellungen sind Standard. Wenn
> ich aber zB noch das Kommando 'mode com1:9600,n,8,1,r' zum initialisieren
> der Schnittstelle benötige, wie hänge ich da noch meinen eigentlichen
> Befehl dran?

Du kannst mit
mode com1
prüfen, ob die Parameter korrekt sind.
Wenn sie falsch sind, kannst Du sie mit mode einstellen.
Die eingestellten Parameter bleiben erhalten, bis sie verändert werden oder
bis zum Neustart.
Also kann im Batch-File stehen:

mode com1 .....
echo POWR 1 >com1

--
Gruß
Ralf

Jochen Wilberding

unread,
Jun 29, 2012, 6:45:42 AM6/29/12
to
Thomas Wildgruber schrieb:

> ich muss einen Beamer zeitgesteuert an- und wieder ausschalten und kann das
> laut Manual über die serielle Schnittstelle tun. Das ganze Ein- und
> Ausschalten funktioniert auch aus einem Hyperterminal schon mal problemlos.
> Dazu muss ich die Kommandos POWR 1 oder POWR 0 absetzen. Zwischen dem
> Kommando POWR und seinem Parameter {0|1} sind drei Leerzeichen zu tippen.
>
> Wie kriege ich das jetzt zB in einer Commandshell hin, eines dieser
> Kommandos an die serielle Schnittstelle COM1 zu senden? Das wäre nämlich

Du kannst doch in Hyperterminal Sitzungsdateien speichern und öffnen.
Diese kann man doch im Startmenü direkt aufrufen.
Das wäre doch schon das, was du willst.


bis die tage
jochen

--
PS: bitte melden Sie sich, wenn Sie diese Nachricht NICHT erhalten haben!


Thomas Wildgruber

unread,
Jun 29, 2012, 6:52:56 AM6/29/12
to
On Fri, 29 Jun 2012 11:17:24 +0200, Ralf Breuer wrote:

> Thomas Wildgruber <excp...@web.de> schrieb:
>> Wie kriege ich das jetzt zB in einer Commandshell hin, eines dieser
>> Kommandos an die serielle Schnittstelle COM1 zu senden? Das wäre nämlich
>> die Grundvoraussetzung für eine Batchdatei. Ich hab mal ganz naiv das
>> Kommando 'echo POWR 1 > com1' abgesetzt aber da erhalte ich ein Zugriff
>> verweigert zurück (CMD ist als Admin gestartet).
>
> Welches Betriebssystem?

Windows 7

> Gibt es com1? Wenn ja, ist com1 vielleicht gerade belegt von einem anderen
> Programm?

Ja COM1 gibt es und lässt sich über ein Hyperterminal problemlos
ansprechen. Die Fehlermeldung 'Zugriff verweigert' ist jetzt weg. Zuerst
dachte ich, nachdem ich dein Posting gelesen habe, dass das noch verbundene
Hyperterminal den Fehler ausgelöst hat aber ich habe das ganze mit
verbundenem Hyperterminal noch einmal getestet und dann kommt die
Fehlermeldung 'Gerät COM1 ist momentan nicht verfügbar'. Bei geschlossenem
Hyperterminal kommt keine Fehlermeldung mehr (Funktioniert aber trotzdem
nicht)

> Mit Windows 7 gerade gestestet klappt das echo auf einen com-Port
> problemlos. Es muss nicht einmal ein Admin-cmd sein.

Wie testest du das?

> [...]Du kannst mit
> mode com1
> prüfen, ob die Parameter korrekt sind.
> Wenn sie falsch sind, kannst Du sie mit mode einstellen.
> Die eingestellten Parameter bleiben erhalten, bis sie verändert werden oder
> bis zum Neustart.

Die Parameter haben nicht gestimmt, ich habe sie nun mit dem mode Kommando
auf die entsprechenden Werte eingestellt, wobei mir nicht ganz klar ist
welcher Parameter die Flußsteuerung darstellt. Nach dem Kommando:

mode com1:9600,n,8,1 bekomme ich folgende Konfiguration angezeigt:

---snip---
Status von Gerät COM1:

Baudrate: 9600
Parität: none
Datenbits: 8
Stoppbits: 1
XON/XOFF: off
CTS-Handshaking: off
DSR-Handshaking: off
DSR-Prüfung: off
DTR-Signal: on
RTS-Signal: on
---snap---

Zumindest die Baudrate, die Parität, die Datenbits und das Stoppbit wären
nun in vorgeschriebener Konfiguration. Lediglich ob die Flußkontrolle
deaktiviert ist, kann ich nur vermuten, die restlichen Parameter werden in
der Anleitung des Beamers nicht erwähnt.

> Also kann im Batch-File stehen:
>
> mode com1 .....
> echo POWR 1 >com1

Das funktioniert aber nicht, der Beamer bleibt stumm. Auch eine TXT-Datei
mit dem Befehl als Inhalt führt den Befehl nicht aus, wenn ich diese mit
dem Kommando 'copy on.txt COM1' auf den Beamer kopiere. Ich bekommte dabei
lediglich die Meldung, dass eine Datei erfolgreich kopiert wurde resp. bei
Verwendung von echo einfach wieder einen Prompt.

BTW: Ich führe die Befehle derzeit nicht in einer Batchdatei aus, sondern
in einer CMD.

Das etwas mit der Verkabelung oder der Kommandosyntax nicht stimmt, kann
ich eigentlich ausschließen, weil ich den Befehl problemlos und erfolgreich
über ein Hyperterminal absetzen kann.

Thomas Wildgruber

unread,
Jun 29, 2012, 7:21:16 AM6/29/12
to
On Fri, 29 Jun 2012 12:45:42 +0200, Jochen Wilberding wrote:

>> Wie kriege ich das jetzt zB in einer Commandshell hin, eines dieser
>> Kommandos an die serielle Schnittstelle COM1 zu senden? Das wäre nämlich
>
> Du kannst doch in Hyperterminal Sitzungsdateien speichern und öffnen.
> Diese kann man doch im Startmenü direkt aufrufen.
> Das wäre doch schon das, was du willst.

Die Sitzung kann ich speichern - ja. Aber wie setze ich da beim Starten der
Sitzung auch gleich ein Kommando mit ab? Im Moment werde ich zar noch beim
Starten des Hyperterminal mit ein paar lästigen Fragen bzw. zu
bestätigenden Hinweisen belästig, weil das Hyperterminal für Windows 7 eine
Shareware ist aber das würde sich vermutlich auch noch lösen lassen.

BTW: Ich kann über das Hyperterminal auch eine Texdatei senden. Ich habe
über das H-Terminal jetzt die gleiche Textdatei gesendet, wie über die CMD
und das klappt dann im H-Terminal auch nicht. Ich denke es liegt an der
Syntax der Textdatei. Das steht nur ganz simpel das Kommando: POWR 1

Thx & Bye Tom
--
"One good Whiskey a day, keeps the doctor away"

Ralf Breuer

unread,
Jun 29, 2012, 7:22:54 AM6/29/12
to
Thomas Wildgruber <excp...@web.de> schrieb:

>> Mit Windows 7 gerade gestestet klappt das echo auf einen com-Port
>> problemlos. Es muss nicht einmal ein Admin-cmd sein.

> Wie testest du das?

Mit 2 com-ports und einem Null-Modem-Kabel.
An einem Port lauscht ein Programm, den anderen beschicke ich mit echo.
Funktioniert.

> mode com1:9600,n,8,1 bekomme ich folgende Konfiguration angezeigt:
>
> ---snip---
> Status von Gerät COM1:
>
> Baudrate: 9600
> Parität: none
> Datenbits: 8
> Stoppbits: 1
> XON/XOFF: off
> CTS-Handshaking: off
> DSR-Handshaking: off
> DSR-Prüfung: off
> DTR-Signal: on
> RTS-Signal: on
> ---snap---
>
> Zumindest die Baudrate, die Parität, die Datenbits und das Stoppbit wären
> nun in vorgeschriebener Konfiguration. Lediglich ob die Flußkontrolle
> deaktiviert ist, kann ich nur vermuten,

Jegliche Flusskontrolle spielt bei den 12 Bytes keine Rolle. Deshalb passt
die Mode-Einstellung.

>> Also kann im Batch-File stehen:
>>
>> mode com1 .....
>> echo POWR 1 >com1

> Das funktioniert aber nicht, der Beamer bleibt stumm.

"Spüle" mal vorher die Leitung:

mode ...
echo. >com1
echo POWR 1 >com1

> BTW: Ich führe die Befehle derzeit nicht in einer Batchdatei aus, sondern
> in einer CMD.

Das geht schon.

> Das etwas mit der Verkabelung oder der Kommandosyntax nicht stimmt, kann
> ich eigentlich ausschließen, weil ich den Befehl problemlos und erfolgreich
> über ein Hyperterminal absetzen kann.

Dann mach das nochmal erfolgreich mit Hyperterminal und beende das
Programm. Danach "mode com1" ohne weitere Parameter zeigt die
funktionierende Einstellung.

--
Gruß
Ralf

Thomas Wildgruber

unread,
Jun 29, 2012, 8:06:02 AM6/29/12
to
On Fri, 29 Jun 2012 13:22:54 +0200, Ralf Breuer wrote:

> [...]
>> Das etwas mit der Verkabelung oder der Kommandosyntax nicht stimmt, kann
>> ich eigentlich ausschließen, weil ich den Befehl problemlos und erfolgreich
>> über ein Hyperterminal absetzen kann.
>
> Dann mach das nochmal erfolgreich mit Hyperterminal und beende das
> Programm. Danach "mode com1" ohne weitere Parameter zeigt die
> funktionierende Einstellung.

Hat geklappt, hat geklappt, hat geklappt :-)

Mein Fehler war, dass ich in der Textdatei nach dem eigentlichen Befehl
'POWR 1' kein Return eingegeben habe. Jetzt kann ich mittels 'copy on.txt
com1' den Beamer einschalten. Das ganze funktioniert jetzt auch aus einer
Batchdatei heraus mit integrierter Schnittstellenkonfiguartion, welche
einmal als Start- und einmal als Shutdownscript hinterlegt ist.

Klappt wunderbar, der Beamer schaltet sich beim Hochfahren ein und beim
Herunterfahren wieder aus. Jetzt bin ich ein ganzes Stück weitergekommen...

---snip Beamer_ON.bat---
@echo off
mode com1:9600,n,8,1
copy Beamer_ON.txt com1
---snap---

---snip Beamer_ON.txt---
POWR 1

---snip---

Gleiches zum Abschalten mit eben 'POWR 0' als Steuerbefehl.

BTW: Warum es aber aus der CMD heraus mit dem Copy-Befehl nicht geklappt
hat weiß ich jetzt auch nicht, weil da habe ich ja ein Return gedrückt.
Gibt es da noch ein Steuerzeichen oder eine EXC-Sequenz, welche vor dem
Enter eingegeben werden muss? das aber nur aus akademischen Interesse, denn
die eigentliche Problemstellung ist gelöst.

Thx & Bye Tom
--
"Der Retter der Welt ist ein Pinguin und Linus Torvalds ist sein Prophet "

Ralf Breuer

unread,
Jun 29, 2012, 8:19:20 AM6/29/12
to
Thomas Wildgruber <excp...@web.de> schrieb:

> Hat geklappt, hat geklappt, hat geklappt :-)

fein :-)

> BTW: Warum es aber aus der CMD heraus mit dem Copy-Befehl nicht geklappt
> hat weiß ich jetzt auch nicht, weil da habe ich ja ein Return gedrückt.
> Gibt es da noch ein Steuerzeichen oder eine EXC-Sequenz, welche vor dem
> Enter eingegeben werden muss?

Nein. Ich vermute ein Schmutzzeichen, dass sich vor dem POWR eingeschlichen
hat. Deshalb der Hinweis auf "Leitung spülen".
Falls es also nochmal Probleme geben sollte, beginne die txt-Dateien mit
einer Leerzeile.

--
Gruß
Ralf

Hans-Peter Matthess

unread,
Jun 29, 2012, 8:34:27 AM6/29/12
to
Ralf Breuer:

> Nein. Ich vermute ein Schmutzzeichen, dass sich vor dem POWR eingeschlichen
> hat. Deshalb der Hinweis auf "Leitung spülen".

Bist du Sanitärinstallateur? :o)

--
Scheinsicherheit und System-Zerstörung durch Virenscanner:
http://www.soehnitz.de/itsicherheit/virenscannersinnoderunsinn/index.html
Darum: http://www.soehnitz.de/itsicherheit/wassiewirklichbrauchen/index.html
Konfiguration einfach gemacht: http://home.arcor.de/skanthak/safer.html

Thomas Wildgruber

unread,
Jun 29, 2012, 8:53:28 AM6/29/12
to
On Fri, 29 Jun 2012 14:19:20 +0200, Ralf Breuer wrote:

>> BTW: Warum es aber aus der CMD heraus mit dem Copy-Befehl nicht geklappt
>> hat weiß ich jetzt auch nicht, weil da habe ich ja ein Return gedrückt.
>> Gibt es da noch ein Steuerzeichen oder eine EXC-Sequenz, welche vor dem
>> Enter eingegeben werden muss?
>
> Nein. Ich vermute ein Schmutzzeichen, dass sich vor dem POWR eingeschlichen
> hat. Deshalb der Hinweis auf "Leitung spülen".
> Falls es also nochmal Probleme geben sollte, beginne die txt-Dateien mit
> einer Leerzeile.

Okay, das mit der Leerzeile vor dem Kommando in der TXT-Datei funktioniert.
Jetzt kann ich auch aus einer CMD Shell heraus die TXT-Datei mit dem Beamer
Kommando erfolgreich auf den Beamer kopieren. Aber das eigentliche Kommando
(POWR {0|1}) aus einer CMD Shell heraus funktioniert immer noch nicht.
Wenn ich jetzt nur 'echo.' eingebe, bekomme ich in der CMD-Shell eine
Leerzeile angezeigt, dass war vermutlich das, was du damit erreichen
wolltest und was ja in der TXT-Datei auch tadellos funktioniert. Ich bastle
mich da jetzt noch mal ein wenig durch... Ich schau mal ob ich noch einen
Rechner mit zwei COM-Ports finde und schau mir das mal im Hyperterminal an.

Thx & Bye Tom
--
"Sie wissen, wir leben im Zeitalter der Abkürzungen. Ehe ist die Kurzform
für lateinische "errare humanum est" ("Irren ist menschlich")." (Robert
Lembke)

Stefan Kanthak

unread,
Jun 29, 2012, 8:35:52 AM6/29/12
to
"Thomas Wildgruber" <excp...@web.de> schrieb:

> Ich hab mal ganz naiv das Kommando 'echo POWR 1 > com1' abgesetzt

AUTSCH!
com1 ist ein Dateiname.
Wenn Du einen der reservierten Namen fuer Ports angeben willst, dann
verwende COM1:, oder gleich den NT-Geraetenamen \\.\COM1

> aber da erhalte ich ein Zugriff verweigert zurück (CMD ist als Admin
> gestartet). Wenn ich das abzusetzende
> Kommando in Gänsefüsschen schreibe, gibt mir zumindest der echo Befehl
> diese auch mit aus und das wäre falsch. Welche Möglichkeit habe ich die
> Leerzeichen im Kommando zu maskieren?

Brauchst Du nicht, CMD.EXE ist keine Shell, die die Kommandozeilen erst
zerlegt/interpretiert und dann an die aufgerufenen Kommandos uebergibt.
Du kannst natuerlich auch zwei Textateien mit Inhalt "POWR 1" und
"POWR 0" anlegen und diese per COPY <datei> COM1: an den Port senden.

> Und als zweites noch die Frage, ob ich die serielle Schnittstelle noch mit
> dem mode Befehl initialisieren muss? Die Einstellungen sind Standard. Wenn
> ich aber zB noch das Kommando 'mode com1:9600,n,8,1,r' zum initialisieren
> der Schnittstelle benötige, wie hänge ich da noch meinen eigentlichen
> Befehl dran?

Indem Du mehrere Befehle nacheinander ausfuehrst.

Stefan
[
--
Die unaufgeforderte Zusendung werbender E-Mails verstoesst gegen §823
Abs. 1 sowie §1004 Abs. 1 BGB und begruendet Anspruch auf Unterlassung.
Beschluss des OLG Bamberg vom 12.05.2005 (AZ: 1 U 143/04)


Ralf Breuer

unread,
Jun 29, 2012, 10:16:43 AM6/29/12
to
Thomas Wildgruber <excp...@web.de> schrieb:

> Okay, das mit der Leerzeile vor dem Kommando in der TXT-Datei funktioniert.
> Jetzt kann ich auch aus einer CMD Shell heraus die TXT-Datei mit dem Beamer
> Kommando erfolgreich auf den Beamer kopieren. Aber das eigentliche Kommando
> (POWR {0|1}) aus einer CMD Shell heraus funktioniert immer noch nicht.
> Wenn ich jetzt nur 'echo.' eingebe, bekomme ich in der CMD-Shell eine
> Leerzeile angezeigt, dass war vermutlich das, was du damit erreichen
> wolltest und was ja in der TXT-Datei auch tadellos funktioniert.

Du benutzt auch die Output-Umleitung?

echo. >com1

--
Gruß
Ralf

Thorsten Albrecht

unread,
Jun 29, 2012, 10:59:02 AM6/29/12
to
Thomas Wildgruber <excp...@web.de> wrote:

>ich muss einen Beamer zeitgesteuert an- und wieder ausschalten und kann das
>laut Manual über die serielle Schnittstelle tun. Das ganze Ein- und
>Ausschalten funktioniert auch aus einem Hyperterminal schon mal problemlos.
>Dazu muss ich die Kommandos POWR 1 oder POWR 0 absetzen. Zwischen dem
>Kommando POWR und seinem Parameter {0|1} sind drei Leerzeichen zu tippen.
>
>Wie kriege ich das jetzt zB in einer Commandshell hin, eines dieser
>Kommandos an die serielle Schnittstelle COM1 zu senden? Das wäre nämlich
>die Grundvoraussetzung für eine Batchdatei. Ich hab mal ganz naiv das
>Kommando 'echo POWR 1 > com1' abgesetzt aber da erhalte ich ein Zugriff
>verweigert zurück (CMD ist als Admin gestartet). Wenn ich das abzusetzende
>Kommando in Gänsefüsschen schreibe, gibt mir zumindest der echo Befehl
>diese auch mit aus und das wäre falsch. Welche Möglichkeit habe ich die
>Leerzeichen im Kommando zu maskieren?

Ich musste eine Kassenkomponente mal mit COM1 ansteuern. Aus XP habe
ich das nicht mit einer Batchdatei geschafft, wohl aber mit einem
kleinen QuickBasic-Programm, mit dem man ohne Probleme die seriellen
Schnittstellen ansteuern kann.

Thorsten

Thomas Wildgruber

unread,
Jun 30, 2012, 4:23:21 AM6/30/12
to
On Fri, 29 Jun 2012 16:16:43 +0200, Ralf Breuer wrote:

> Du benutzt auch die Output-Umleitung?
>
> echo. >com1

Jupp. Der Fehler kann aber nicht mehr allzuweit weg sein. Irgendeine
Kleinigkeit womöglich. Vielleicht braucht es eine Wartezeit zwischen zwei
Kommandos, ich probier das am Montag mal aus.

BTW: Ich brauch ja gar keinen Rechner mit zwei COM Ports, um das so zu
testen, wie du das machst. Ein zweiter Rechner mit COM Port tuts ja auch.
Ein Nullmodemkabel habe ich ja, was fast bis zum Mond reicht. Die Steuerung
vom Beamer steht ja auch im JWD... ;-)

Thx & Bye Tom
--

Thomas Wildgruber

unread,
Jun 30, 2012, 4:28:32 AM6/30/12
to
On Fri, 29 Jun 2012 16:59:02 +0200, Thorsten Albrecht wrote:

> Ich musste eine Kassenkomponente mal mit COM1 ansteuern. Aus XP habe
> ich das nicht mit einer Batchdatei geschafft, wohl aber mit einem
> kleinen QuickBasic-Programm, mit dem man ohne Probleme die seriellen
> Schnittstellen ansteuern kann.

Funktioniert jetzt zwar mit einer Batchdatei aber rein aus Interesse würde
mich deine Variante auch interessieren, hast du das Programm bei der Hand?
Ich bin leider keine Leuchte, wenn es ums programmieren geht. Die VB
Skripts, die ich gefunden habe und die sich mit dem Ansteuern der COM Ports
beschäftigen waren alles Monster Codes, die ich mit meinen rudimentären
Kenntnissen nicht mehr nachvollziehen konnte. Vielleicht ist ja deines
einfacher gestrickt... ;-)

Ralf Breuer

unread,
Jun 30, 2012, 4:48:18 AM6/30/12
to
Thomas Wildgruber <excp...@web.de> schrieb:

> Jupp. Der Fehler kann aber nicht mehr allzuweit weg sein. Irgendeine
> Kleinigkeit womöglich. Vielleicht braucht es eine Wartezeit zwischen zwei
> Kommandos, ich probier das am Montag mal aus.

Der Zweck einer weiteren Bastelei kann eigentlich nur die Vermeidung von
mehreren Dateien sein. Du kannst natürlich die txt-Datei per batch
erzeugen.

echo. >%temp%\beamer.txt
echo POWR 1 >>%temp%\beamer.txt

mode com1:9600,n,8,1
copy %temp%\beamer.txt com1:

del %temp%\beamer.txt

--
Gruß
Ralf

Thomas Wildgruber

unread,
Jun 30, 2012, 6:51:57 AM6/30/12
to
On Sat, 30 Jun 2012 10:48:18 +0200, Ralf Breuer wrote:

>> Jupp. Der Fehler kann aber nicht mehr allzuweit weg sein. Irgendeine
>> Kleinigkeit womöglich. Vielleicht braucht es eine Wartezeit zwischen zwei
>> Kommandos, ich probier das am Montag mal aus.
>
> Der Zweck einer weiteren Bastelei kann eigentlich nur die Vermeidung von
> mehreren Dateien sein. Du kannst natürlich die txt-Datei per batch
> erzeugen.

Nein, dass passt jetzt schon so. Die Batchdateien zum Starten und
Herunterfahren des Beamers funktionieren einwandfrei und müssen auch nicht
temporär erzeugt werden. Der Rechner startet aus einer Timerfunktion in den
Powersettings des BIOS automatisch um eine bestimmte Uhrzeit, es ist eine
automatische Anmeldung eingerichtet und durch ein Logonskript wird einmal
der Beamer eingeschaltet und des Weiteren das Video abgespielt (VLC
Commandline Optionen -f (full screen) und --loop).

Per AT-Job wird dann ein Shutdown Befehl um eine bestimmte Uhrzeit gesendet
und das Abschalten des Beamers wird durch ein Logout Skript initiiert. Der
Beamer bleibt dann im Standby Mode und kann so auch wieder gestartet
werden. Das klappt jetzt alles wunderbar. Danke für deine Hilfe :-)

Die weiteren Nachforschungen kommen nur noch aus meiner Neugier heraus. Ich
habe jetzt einen Emulator für serielle Schnittstellen gefunden[1], mit dem
mache ich jetzt ein paar Versuche, wobei das Ding auf den ersten Blick gar
nicht so trivial zu sein scheint. Aber wird schon... ;-)

[1] http://sourceforge.net/projects/com0com/

Thx & Bye Tom
--
"Ich weiß nicht, was der französische Staatspräsident Mitterand denkt, aber
ich denke dasselbe." (Helmut Kohl)

Ralf Breuer

unread,
Jun 30, 2012, 11:29:26 AM6/30/12
to
Thomas Wildgruber <excp...@web.de> schrieb:

> Die weiteren Nachforschungen kommen nur noch aus meiner Neugier heraus.

Einen hab ich noch. Vielleicht reagiert der Beamer etwas träge auf die
Schnittstellensignale. Dann könnte gehen:

( ping -n 2 127.0.0.1 >nul:
echo.
echo POWR 1
) >com1:

--
Gruß
Ralf

Thorsten Albrecht

unread,
Jul 2, 2012, 6:50:23 AM7/2/12
to
Thomas Wildgruber <excp...@web.de> wrote:

>> Ich musste eine Kassenkomponente mal mit COM1 ansteuern. Aus XP habe
>> ich das nicht mit einer Batchdatei geschafft, wohl aber mit einem
>> kleinen QuickBasic-Programm, mit dem man ohne Probleme die seriellen
>> Schnittstellen ansteuern kann.
>
>Funktioniert jetzt zwar mit einer Batchdatei aber rein aus Interesse würde
>mich deine Variante auch interessieren, hast du das Programm bei der Hand?
>Ich bin leider keine Leuchte, wenn es ums programmieren geht. Die VB
>Skripts, die ich gefunden habe und die sich mit dem Ansteuern der COM Ports
>beschäftigen waren alles Monster Codes, die ich mit meinen rudimentären
>Kenntnissen nicht mehr nachvollziehen konnte. Vielleicht ist ja deines
>einfacher gestrickt... ;-)

Ich hatte das nicht mit QuickBasic, sondern mit FreeBasic realisiert.
QuickBasic hatte auch Fehler bei der Ansteuerungen der seriellen
Schnittstellen gemacht, FreeBasic nicht.

Die Ansteuerung ist relativ einfach, siehe
http://www.freebasic-portal.de/befehlsreferenz/open-com-235.html

Hier ein Beispiel eines Skripts, welches ein Kundendisplay an einer
Kasse löscht. Im Grunde besteht es aus zwei Befehlen (OPEN und PRINT):
-----------------------------------

DIM AS STRING clear_screen 'Steuerzeichen Epson/POS

DIM AS STRING ComNr 'Bezeichnung der seriellen Schnittstelle, z.B.
COM1

DIM AS Integer Display 'file/device handle

DIM AS STRING ComInitString 'Schnittstelleninitialisierung

DIM AS INTEGER sysres 'Rückgabeparameter bei Systemfunktionen

ComNr = COM1

' Clear Screen CLR: 12 (h0C)
clear_screen = CHR(12)

Display = FREEFILE
ComInitString = ComNr + ":9600,N,8,1"

' Schnittstellenport öffnen
OPEN COM ComInitString FOR OUTPUT AS #Display

PRINT #Display, clear_screen

sysres = ERR
IF sysres <> 0 THEN
PRINT "Error bei Ausgabe auf Display (error no. " & sysres & ")"
END IF

CLOSE #Display

---------------------------------

Der Vorteil ist, dass es wirklich funktioniert. Im Gegensatz zu den
Batchlösungen, die ich vorher probiert habe, und die mal
funktionierten und mal nicht. Man kann zwar via Batch auch die
Com-Ports ansprechen, aber es ist nicht möglich, sie gezielt z.B. zu
öffnen, schliessen, Fehlermeldungen abzufangen. Manchmal ist ein
Comport einfach tot, wenn man ihn mit einer Batch traktiert hat. Genau
das passiert mit einem echten Programm nicht. Es läuft den ganzen Tag
an zig Kassen; ist also auch stabil.

Thorsten
0 new messages