1 (edytowany przez kawior 2013-07-28 20:16:46)

Temat: OpenWrt + ft232rl+php

Witam,
od jakiegoś czasu posiadam płytkę EvB 4.3 i postanowiłem zaprząc swój router (TL-WR1043ND) do sterowania nią poprzez serial port. Na płytce jest już działający program (sprawdzone na windows - wszystko śmiga jak trzeba) problem pojawia się przy konfigurowaniu połączenia z routerem.
Paczkę kmod-usb-serial-ftdi zainstalowałem płytka jest wykrywana przez router jako ttyUSB3 jednak poza picocom nie jestem w stanie się z nią dogadać. Nie jestem w stanie ustawić odpowiedniego baud rate (19200).
zainstalowałem również setserial aby ustawić baudrate ale nic nie działa

root@Gargoyle:/www/atmega32# setserial /dev/ttyUSB3
/dev/ttyUSB3, UART: unknown, Port: 0x0000, IRQ: 0, Flags: low_latency

Może ktoś z forumowiczów robił coś podobnego i wie w czym leży problem.
Do obsługi z poziomu php używam biblioteki php serial https://code.google.com/p/php-serial/
Kod w php

root@Gargoyle:/www/atmega32# vi index.php
<?php
include "php_serial.php";
echo date("Y-m-d H:i:s");
echo "\n\r";
$serial = new phpSerial;
$serial->deviceSet("/dev/ttyUSB3");
$serial->confBaudRate(19200);
$serial->confParity("none");
$serial->confCharacterLength(8);
$serial->confStopBits(1);
$serial->confFlowControl("none");

$serial->deviceOpen();
$serial-> sendMessage(":gpd7<");
sleep(1);
$read= $serial->readPort();
echo $read;
$serial->deviceClose();
echo "koniec";
?>

Proszę o pomoc.

2

Odp: OpenWrt + ft232rl+php

stty -F /dev/ttyS0 19200 clocal cread cs8 -cstopb -parenb

Może zadziała. Tylko sobie wcześniej coreutils-stty zainstaluj.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: OpenWrt + ft232rl+php

Nadal nic.

root@Gargoyle:/www/atmega32# stty -F /dev/ttyUSB3
speed 19200 baud; line = 0;
-brkint -imaxbel
root@Gargoyle:/www/atmega32# setserial /dev/ttyUSB3

4

Odp: OpenWrt + ft232rl+php

Co nic? Masz 19200.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5 (edytowany przez kawior 2013-07-28 20:49:28)

Odp: OpenWrt + ft232rl+php

Mam ale komunikacja nie działa poprawnie.
Płytka zamiast zareagować poprawnie to się resetuje przez picocom tego nie ma.

6

Odp: OpenWrt + ft232rl+php

Zdaje się, że php-serial korzysta właśnie z stty do ustawienia parametrów portu. Po zainstalowaniu stty, ten kod w php powinien działać sam z siebie, bez dodatkowych poleceń.

7

Odp: OpenWrt + ft232rl+php

OT: Chcesz powiedzieć że płytka się resetuje tylko dlatego że jak już to dostała niepoprawne dane i zamiast to ignorować to strzela focha i reset? No to fajnie ktoś to zrealizował...

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

8 (edytowany przez kawior 2013-07-28 21:07:35)

Odp: OpenWrt + ft232rl+php

Właśnie jest coś nie tak bo przy windowsie jak dostanie niepoprawne dane to odsyła informację o tym a nie resetuje się. Nawet jak przez picocom wyślę niepoprawną ramkę to jest ok.

Wygląda na to że układ ft232rl resetuje procesor przy nawiązaniu połączenia i dlatego nie chce działać poprawnie.
W php najpierw jest łączenie a potem zaraz wysłanie ramki i rozłączenie dlatego się płytka resetuje.

Już wszystko działa jednak jest problem z układem ft niestety tego nie przeskoczę tak to już jest z gotowymi płytkami. cóż pozostaje raz nawiązać połączenie i tylko odczytywać wartości.
Dziękuję za pomoc.

9

Odp: OpenWrt + ft232rl+php

Co to za program na tej płytce, masz do niego źródła. Różnicą między windowsem a linuxem, mogą być znaki końca linii: /r/n a /n

10

Odp: OpenWrt + ft232rl+php

Program na płytce jest mój różnica jest taka że na windowsie nawiązywałem połączenie raz (Connect) i potem ramki albo z terminala albo z dedykowanego programu a tu chciałem tylko odczytywać stan raz na jakiś czas bez utrzymywania stałego połączenia ale tak się nie da. Trzeba będzie własną płytkę stworzyć.

11

Odp: OpenWrt + ft232rl+php

To może chodzi o to że sygnały sterujące przepływem (RTS,DTR) są wykorzystane do wprowadzenia procesor w tryb programowania, czy coś takiego. Pokaż wynik stty -a -F /dev/ttyUSB3

Można sprawdzić z opcjami: clocal i -crtscts

12

Odp: OpenWrt + ft232rl+php

root@Gargoyle:/www/atmega32# stty -a -F /dev/ttyUSB3
speed 19200 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl -ixon -ixoff
-iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke

13

Odp: OpenWrt + ft232rl+php

Obejrzałem schemat tej płytki na stronie and-tech. No i miałem rację: DTR jest podłączony przez kondensator pod RESET atmegi. To samo rozwiązanie co w Arduino, i te same problemy. Najpewniejsze rozwiązanie: odłączyć ten kondensator (C12)/ załączać go przez jakąś zworkę do programowania itp. Poszukaj sobie pod hasłami: arduino dtr reset.

14

Odp: OpenWrt + ft232rl+php

Dzięki bardzo. Dziś miałem trochę czasu i doszedłem do tego samego wniosku.  W nowszej wersji płytki wpadli już na to żeby zrobić tam zworkę szkoda że nie wcześniej.
Pozdrawiam