gerätesteuerrung via serielle der DBOX

Sklaventreiber
newi
Interessierter
Interessierter
Beiträge: 22
Registriert: Samstag 29. November 2003, 02:26

gerätesteuerrung via serielle der DBOX

Beitrag von newi »

hi 2 all

ich brauche bitte hilfe von einem einen linux-dbox-profi

zur übersicht

ich habe meine dbox2
version=0200200503151235
creator=JtG-Team

an einem 42" plasma hängen ~~~

Bild

dieser hat einen serielle schittstelle über die man
neben der auswahl der videoquelle, laut oder leise den plasma auch abdrehen (standby) und aufdrehen kann

ich hab mir am pc ein kleines .vbs gebaut ... geht super NUR
ich wollt das eigentlich über die dbox machen !!! ???

die code zum aus- und einschalten sind

on = "9F 80 60 4E 00 CD" & vbcrlf
off = "9F 80 60 4F 00 CE" & vbcrlf

und das mit serial.Settings = "9600,O,8,1"

nun meine frage und bitte

wie könnt man beim abdrehen der dbox ~~~ shutdown oder standby das "off"
und beim booten oder start aus standby das "on" auf der seriellen schicken ???

einige stichwörtern zur selbsthilfe würden mir auch schon weiterhelfen
denn "RS232" und "serielle schnittstelle" sowie "nullmodemkabel" und "dbox" bringt immer nur "wie flashe ich die box" ~~~

z.b. was ist die com unter linux ... ein device ??? ttys0 oder sowas ??
ich seh im boot manager 9600 d.h. die serielle geht mit 9600 aber
geht sie das mit 9600,O,8,1 oder mit 9600,N,8,1 und
kann man die einfach für meinen gebrauch umstellen denn der plasma geht mit 9600,O,8,1

unter win(DOS) würd ich mit echo 9F 80 60 4E 00 CD > com1: beginnen sofern die com offen ist ... wenn nicht mit mode aufmachen ...

wie geht sowas unter linux ??? echo "9F 80 60 4E 00 CD "> \dev\ttys0 ?

vorsicht ... ich bin kein linuxer könnt mühsam werden ;-)

lg

newi
rasc
Senior Member
Beiträge: 5071
Registriert: Dienstag 18. September 2001, 00:00

Beitrag von rasc »

Also dein Ansatz ist genau richtig,

entweder mit echo "string" >/dev/device (nur Dos benutzt Rueckwaertsschraeger!), wobei allerdings der String wohl binaer codiert werden muss, oder als kleines C-Programm.

Guck dir mal den Thread zu EIB an.
Wie man etwas mit der Seriellen unter Unix macht, findest du reichlich ueber google (Referenzcode). Erfahrungsgemaess ist es sogar einfacher als unter Windows.
newi
Interessierter
Interessierter
Beiträge: 22
Registriert: Samstag 29. November 2003, 02:26

Beitrag von newi »

@rasc

danke für die schnelle info

was ich jetzt noch ned ganz auf die reihe bring ist der mode mit dem die initializiert ist ???

ich denk mal 9600,n,8,1, und da gibt sie ja permanent asl console den debug aus ... oder ?

nun muss ich ja um auf den plasma was zu schicken das teil auf 9600,o,8,1 umstellen ... pfffffffff ... oder ist das egal
rasc
Senior Member
Beiträge: 5071
Registriert: Dienstag 18. September 2001, 00:00

Beitrag von rasc »

man kann das auch bei Unix umstellen.

Entweder ueber ein Kommando (stty)
oder ueber ein Funktionsaufruf in C (z.B. termio-Lib)
newi
Interessierter
Interessierter
Beiträge: 22
Registriert: Samstag 29. November 2003, 02:26

Beitrag von newi »

erster erfolg :-)

laptop via seriell an die dbox angeschlossen ... hyperterm auf com2 aufgemacht ... TELNET am pc -> dbox ... im telnet echo "Hallo RS232" >/dev/console ... das steht dann im hyperterminal **freu**

wenn ich das hyperterminal von 9600,n,8,1, auf 9600,o,8,1 umstell ... kommen nur müll ...

d.h. ich muss das /dev/console umstellen .... hmmmmmm ... **kopfkratz**
newi
Interessierter
Interessierter
Beiträge: 22
Registriert: Samstag 29. November 2003, 02:26

Beitrag von newi »

hihi ... ein teilerfolg ~~~

ich versteh noch nicht warum ABER

die dbox meinte auf der console beim standby immer
/var/tuxbox/config/standby.off not found !
und beim einschalten
/var/tuxbox/config/standby.on not found !


nun hab ich die beiden files mal erstellt (chmod 777) und gleich zum testen
in die standby.off 'echo "Schalt den Plasma AUS ............................" >/dev/console'
und in die
standby.on 'echo "Schalt den Plasma EIN ............................" >/dev/console'
reingeschrieben

ich denk mal die standby.on und standby.off sind ein teil vom lirc

schau schau ... jetzt steht in der console
"Schalt den Plasma EIN ............................"
und
"Schalt den Plasma AUS ............................"
wenn ich ab oder aufdreh

das löst mein problem mit den 9600,o,8,1 noch immer nicht ~~~ aber ???

könnt ja sein das mir einer sagen kann was ich wo ummurxen muss :-)

lg & n8
newi
newi
Interessierter
Interessierter
Beiträge: 22
Registriert: Samstag 29. November 2003, 02:26

Beitrag von newi »

sorry ...
... ist anders rum

standby.on 'echo "Schalt den Plasma AUS ............................" >/dev/console'
standby.off 'echo "Schalt den Plasma EIN ............................" >/dev/console'

ehklor ;-)
rasc
Senior Member
Beiträge: 5071
Registriert: Dienstag 18. September 2001, 00:00

Beitrag von rasc »

newi hat geschrieben:
wenn ich das hyperterminal von 9600,n,8,1, auf 9600,o,8,1 umstell ... kommen nur müll ...

d.h. ich muss das /dev/console umstellen .... hmmmmmm ... **kopfkratz**

mit der Umstellung von Hyperterminal stellst du ja nicht die Serielle der dbox2 um. Das musst du schon mit einem Kommando machen (ist das ueberhaupt bei bussybox dabei?) bzw. eben per API-Call.

Bei Standard Unix: "man stty"

bei der dbox2 muss das per API gesetzt werden (das Kommando scheint bei den Images zu fehlen).
newi
Interessierter
Interessierter
Beiträge: 22
Registriert: Samstag 29. November 2003, 02:26

Beitrag von newi »

@rasc

hallo helfer
mit der Umstellung von Hyperterminal stellst du ja nicht die Serielle der dbox2 um. Das musst du schon mit einem Kommando machen (ist das ueberhaupt bei bussybox dabei?) bzw. eben per API-Call.
das war mir schon klar ... hatte den naiven anflug, es kommt mit 9600,o,8,1 das selbe im hyperterm an wie mit 9600,n,8,1 denn mein plasma will die code mit 9600,o,8,1

dann hätt ich ja nur beim booten den log abdrehen müssen und meine code
gingen dann via standby.on & standby.off in den plasma

hab heut viel über die serielle gelesen aber das gibt es alles ned in der box ~~~ :gruebel:
newi
Interessierter
Interessierter
Beiträge: 22
Registriert: Samstag 29. November 2003, 02:26

Beitrag von newi »

ein verdacht nimmt formen an !

das wird nix :x ... leider ~~~

stty und anderes was linux schön macht ... fehlt einfach in der busybox
BusyBox v1.00 (2005.03.15-11:25+0000) multi-call binary

Usage: busybox [function] [arguments]...
or: [function] [arguments]...

BusyBox is a multi-call binary that combines many common Unix
utilities into a single executable. Most people will create a
link to busybox for each function they wish to use, and BusyBox
will act like whatever it was invoked as.

Currently defined functions:
[, ash, busybox, cat, chmod, clear, cp, date, dd, df, dmesg, dos2unix, du, echo, env, expr, false, find, free, grep,
halt, hostname, ifconfig, ifdown, ifup, inetd, init, insmod, kill, killall, klogd, ln, loadkmap, logger, login,
ls, lsmod, mkdir, more, mount, mv, nc, nslookup, passwd, pidof, ping, poweroff, ps, rdate, reboot, renice, rm, rmdir,
rmmod, route, sed, sh, sleep, sync, syslogd, tar, telnet, telnetd, test, time, touch, true, udhcpc, umount, uname,
unix2dos, uptime, vi, wget, xargs, yes
somit geht kein umstellen der rs232 auf 9600,o,8,1 UND somit kann ich auch nix an den plasma schicken!

ein neues image mit erweiterter bussybox wird nicht nur an den quellen sonderen vorallem am platz in der dbox scheitern

wär schön wenn da ein wunderwuzi mit einer lösung kommt würd :gruebel:

DANKe

lg newi
rasc
Senior Member
Beiträge: 5071
Registriert: Dienstag 18. September 2001, 00:00

Beitrag von rasc »

Also, das schöne an Linux ist, dass die Sourcen verfuegbar sind.
... und irgendwo muss da auch das stty-Kommando dabei sein. :roll:

Ein Blick in die Man-page zeigt eine eMail-Adresse "bug-coreutils@gnu.org"
Also sollte das irgendwo bei den coreutils dabei sein (*vermut-ich-mal*)



*google anwerf*

COREUTILS: ( basename cat chgrp chmod chown chroot cksum comm cp csplit cut date dd
df dir dircolors dirname du echo env expand expr factor false fmt fold
ginstall groups head hostid hostname id join kill link ln logname ls
md5sum mkdir mkfifo mknod mv nice nl nohup od paste pathchk pinky pr
printenv printf ptx pwd readlink rm rmdir seq sha1sum shred sleep sort
split stat stty su sum sync tac tail tee test touch tr true tsort tty
uname unexpand uniq unlink uptime users vdir wc who whoami yes )


*gnu nachguck*

--> ftp.gnu.org

also, das sieht ganz gut aus:

ftp://ftp.gnu.org/gnu/coreutils/


Jetzt muss man das nur noch entpacken und gucken was man braucht...
(ich schaetze mal das stty-Kommando)
dann fuer die Box kompilieren und bla...



Wenn man sich allerdings durch die man-pages wuehlt (Section 3 oder 4 sind die APIs/Sys-Calls), dann findet man bestimmt auch einen Funktion zum setzen eines seriellen Devices (da schreibt man dann ein eigenes 10-Zeilen-Programm, dann passt das auch)

Blindflug:

Code: Alles auswählen

> man -k serial
Isserial (8) [isserial] - determines if the underlying tty of stdin is a serial line
slattach (8)         - attach a network interface to a serial line
ttyS (4)             - serial terminal lines
tty_ioctl (4)        - ioctls for terminals and serial lines
isserial (8)         - determines if the underlying tty of stdin is a serial line
mouse (4)            - serial mouse interface
serialver (1)        - serial version command


nach etwas leses, weiteres Raten:

>> man termios


also man muss sich nur durchwuehlen.
Es ist nichts geheimnisvolles an Unix.

Ansonsten wuerde ich es einfach wie folgt machen:

Man klaut eben einfach den Code (google hilft auch hier "set baudrate unix source C":

http://www.programmersheaven.com/zone3/cat409/

oder

http://www.captain.at/electronics/pic-mmc/source.php



snip

Code: Alles auswählen

int fd;
...
int initport(int fd) {
	struct termios options;
	// Get the current options for the port...
	tcgetattr(fd, &options);
	// Set the baud rates to ...
	cfsetispeed(&options, B9600);
	cfsetospeed(&options, B9600);
	// Enable the receiver and set local mode...
	options.c_cflag |= (CLOCAL | CREAD);

	options.c_cflag &= ~PARENB;
	options.c_cflag &= ~CSTOPB;
	options.c_cflag &= ~CSIZE;
	options.c_cflag |= CS8;

	// Set the new options for the port...
	tcsetattr(fd, TCSANOW, &options);
	return 1;
...
}
newi
Interessierter
Interessierter
Beiträge: 22
Registriert: Samstag 29. November 2003, 02:26

Beitrag von newi »

hallo rasc

danke für deine eselsgeduld und die vielen info's

sorry ... ich fang damit NIX an !!!

das hohe C ist für mich saft der aus orangen gemacht wird ... den gibt es bei aldi
und linux ist was das es auf pc's gibt ... hab ich aber ned ~~~

ich kann im google keine wörter wie COREUTILS, serialver, cfsetispeed, PARENB, u.s.w. eingeben weil ich diese nicht kenne ~~~

bitte ned bös sein ... ich verstehe deinen ansatz zur entwicklungshilfe, ehrwürdig.

kann mich nur auf meine aussage vom anfang berufen
vorsicht ... ich bin kein linuxer könnt mühsam werden
DANKe

lg

newi
Zuletzt geändert von newi am Mittwoch 18. Mai 2005, 20:32, insgesamt 1-mal geändert.
gurgel
Tuxboxer
Tuxboxer
Beiträge: 2473
Registriert: Dienstag 8. Oktober 2002, 21:06

Beitrag von gurgel »

newi hat geschrieben:das hohe C ist für mich saft der aus orangen gemacht wird ... den gibt es bei aldi
ich dachte bei Aldi gibts keine Marken...
rasc
Senior Member
Beiträge: 5071
Registriert: Dienstag 18. September 2001, 00:00

Beitrag von rasc »

newi hat geschrieben:hallo rasc

danke für deine eselsgeduld und die vielen info's

sorry ... ich fang damit NIX an !!!
Sorry, ich hatte das etwas anders verstanden (wenn einer schon mit ttys0, devices, etc.) anfaengt: z.B. dass du nur Linux nicht verstehst.

mal gucken ob jemand das stty irgendwie compiliert bekommt.
newi
Interessierter
Interessierter
Beiträge: 22
Registriert: Samstag 29. November 2003, 02:26

Beitrag von newi »

hallo rasc

nun ... ein bisserl was hab ich ja schon gelesen ;-)

das würde ich aber eher als halbwissen bezeichnen und ist ohne zusammenhang

tut mir leid ich wollte mit ttys0 nicht prahlen :oops:
MarcM
Foren-Moderator
Beiträge: 1119
Registriert: Sonntag 9. Juni 2002, 13:28

Beitrag von MarcM »

ähem, vielleicht isses einfacher die Image Ersteller zu fragen, ob sie beim nächsten Image nicht einfach stty mit in die Busybox mit reinnehmen :

> tuxbox-cvs/cdk/Patches/busybox.config (oder busybox-flash.config oder busybox-ide.config, k.A) statt :
# CONFIG_STTY is not set
auf
CONFIG_stty=y
setzen, nochn Symlink im Image von stty auf die busybox und gut ist.

In wie fern sich die Busybox dann aufbläht weiß ich allerdings nicht...

Greetz
Marc
MarcM
Foren-Moderator
Beiträge: 1119
Registriert: Sonntag 9. Juni 2002, 13:28

Beitrag von MarcM »

Sooo, nu weiß ichs :D

Die Busybox wird um ~35kb größer wenn man stty mit reinnimmt.

@newi

Ich hab dir hier mal ein Dbox-Binary von der Busybox hingelegt. Das schiebst du per FTP nach /var/bin. Dann legst du per telnet einen Symlink Namens stty auf die Busybox ins gleiche Verzeichnis :

Code: Alles auswählen

ln -s /var/bin/busybox /var/bin/stty
Danach steht dir der Befehl stty zur Verfügung. Hier kannst du die Manpage dazu lesen...

Das ist natürlich nur erstmal zum probieren. ~340Kb nur für ssty wäre ja overkill....vielleicht erbarmen sich die Image-Bauer ja und nehmens mit in die Busybox rein...

Greetz
Marc
newi
Interessierter
Interessierter
Beiträge: 22
Registriert: Samstag 29. November 2003, 02:26

Beitrag von newi »

danke für die vielen info's

ich hab das ganze nun doch mit lirc gemacht ~~~

**FUNKT**

DANKe

lg

newi