Hej venner
Jeg er ved at lave noget styring af noget PLC og vil gerne have en hjemmeside til at styre direkte ud på COM porten. jeg har fundet denne rutine: php_serial.class.php. Men den er lidt trikki. Hvis karakterne sendes til modtageren og denne echoer dem tilbage går det helt i spunk. Det ser ud til at PHP rutinen også echoer tilbage, og de kommer en 4 gange, sandsynlig indtil porten lukkes af rutinen. Jeg har taget et gammelt dialup modem, som forsøg, og sender AT til dette og det svarer OK. Hvis jeg sender ATE (NOECHO) først går det bedre, men alligevel echoer php rutinen OK'et tilbage til modemet. Jeg har en gammel analyser der kan se hvad der sendes frem og tilbage.
Har nogen erfaringer med dette eller forslag evt noget andet der kan bruges så giv lyd.
Der er en test side her : http://stoneplace.dk/test2/modem.php
hilsen Steen
php_serial.class.php løst
-
- Indlæg: 10
- Tilmeldt: 21. dec 2008, 21:19
- IRC nickname: stone47
- Geografisk sted: Fredericia
php_serial.class.php løst
Senest rettet af stoneplace 22. jun 2010, 23:46, rettet i alt 1 gang.
-
- Indlæg: 5095
- Tilmeldt: 27. apr 2008, 02:16
- IRC nickname: lars_t_h
- Geografisk sted: Fyn
Re: php_serial.class.php
stoneplace skrev:Hej venner
Jeg er ved at lave noget styring af noget PLC og vil gerne have en hjemmeside til at styre direkte ud på COM porten. jeg har fundet denne rutine: php_serial.class.php. Men den er lidt trikki. Hvis karakterne sendes til modtageren og denne echoer dem tilbage går det helt i spunk. Det ser ud til at PHP rutinen også echoer tilbage, og de kommer en 4 gange, sandsynlig indtil porten lukkes af rutinen. Jeg har taget et gammelt dialup modem, som forsøg, og sender AT til dette og det svarer OK. Hvis jeg sender ATE (NOECHO) først går det bedre, men alligevel echoer php rutinen OK'et tilbage til modemet. Jeg har en gammel analyser der kan se hvad der sendes frem og tilbage.
Har nogen erfaringer med dette eller forslag evt noget andet der kan bruges så giv lyd.
Der er en test side her : http://stoneplace.dk/test2/modem.php
hilsen Steen
Du kan evt kalde setserial programmet fra php via system funktionen til at sætte en seriel port til ikke at lave echo.
Bemærk dog at hvis php_serial.class.php enabler echo igen ser det ud til at der ikke sker noget / det ikke virker.
Edit
Kig også på:
http://www.php.net/manual/en/function.dio-tcsetattr.php
læg mærke til
Kode: Vælg alt
$fd = dio_open('/dev/ttyS0', O_RDWR | O_NOCTTY | O_NONBLOCK);
der er et open systemkald.
_NOCTTY gør at du undgår the linie disipline og dermed at der sidder en fortolker imellem data fra den serielle port og PHP fortolkeren (=dit program)
Da du ændrer på termios datastrukturen finder du detaljer på: termios(3) man siden:
Kode: Vælg alt
man 3 termios
(tryk på q asfslutter maual læseren)
Du kan også kigge på: http://manpages.ubuntu.com/manpages/luc ... ios.3.html i stedet for
/Lars
Jeg er Software ingeniør (Diplomingeniør) i Informationsteknologi og indlejede systemer, hvor indlejrede systemer er computer (microcontroller) + elektronik i for eksempel et TV, en router, en vaskemaskine og den slags
-
- Indlæg: 10
- Tilmeldt: 21. dec 2008, 21:19
- IRC nickname: stone47
- Geografisk sted: Fredericia
Re: php_serial.class.php
hej lars
har læst på tingene, nu er jeg jo ikke linux uddannet. Men har prøvet dette:
prøvet stty det virker fint brugte komando : stty -echo -F /dev/ttyS2
Monitor viser ATcrlf svaret er crlfOKcrlf
http://stoneplace.dk/test2/modem.php
Læser portdata med: stty -a -F /dev/ttyS2
Så skal det lige laves lidt prof og testet.
tak for info
hilsen Steen
har læst på tingene, nu er jeg jo ikke linux uddannet. Men har prøvet dette:
prøvet stty det virker fint brugte komando : stty -echo -F /dev/ttyS2
Monitor viser ATcrlf svaret er crlfOKcrlf
http://stoneplace.dk/test2/modem.php
Læser portdata med: stty -a -F /dev/ttyS2
Så skal det lige laves lidt prof og testet.
tak for info
hilsen Steen
-
- Indlæg: 5095
- Tilmeldt: 27. apr 2008, 02:16
- IRC nickname: lars_t_h
- Geografisk sted: Fyn
Re: php_serial.class.php
stoneplace skrev:hej lars
har læst på tingene, nu er jeg jo ikke linux uddannet. Men har prøvet dette:
prøvet stty det virker fint brugte komando : stty -echo -F /dev/ttyS2
Monitor viser ATcrlf svaret er crlfOKcrlf
http://stoneplace.dk/test2/modem.php
Læser portdata med: stty -a -F /dev/ttyS2
Så skal det lige laves lidt prof og testet.
tak for info
hilsen Steen
Hej Steen.
Ja - jeg koder ikke meget mere i terminalen som jeg har gjort før - jeg bruger C nu, så det var godt at du fandt ud at stty lavede tricket. setserial er til at sætte IRQ og I/O port nr, samt , hardware IC der bruge til seriel port kommunikation.
Nu du har fundet en løsning, så vil jeg bede dig om at tilføje [LØST] i emne linjen i dit første indlæg her i tråden.
/Lars
Jeg er Software ingeniør (Diplomingeniør) i Informationsteknologi og indlejede systemer, hvor indlejrede systemer er computer (microcontroller) + elektronik i for eksempel et TV, en router, en vaskemaskine og den slags