php_serial.class.php løst

Spørgsmål, som ikke kan besvares i andre hardware-fora, bør stilles her.
stoneplace
Indlæg: 10
Tilmeldt: 21. dec 2008, 21:19
IRC nickname: stone47
Geografisk sted: Fredericia

php_serial.class.php løst

Indlæg af stoneplace »

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
Senest rettet af stoneplace 22. jun 2010, 23:46, rettet i alt 1 gang.
lath
Indlæg: 5095
Tilmeldt: 27. apr 2008, 02:16
IRC nickname: lars_t_h
Geografisk sted: Fyn

Re: php_serial.class.php

Indlæg af lath »

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
stoneplace
Indlæg: 10
Tilmeldt: 21. dec 2008, 21:19
IRC nickname: stone47
Geografisk sted: Fredericia

Re: php_serial.class.php

Indlæg af stoneplace »

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 :D
hilsen Steen
lath
Indlæg: 5095
Tilmeldt: 27. apr 2008, 02:16
IRC nickname: lars_t_h
Geografisk sted: Fyn

Re: php_serial.class.php

Indlæg af lath »

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 :D
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