Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
rs485 i kity avt
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Polskie forum (Polish)
View previous topic :: View next topic  
Author Message
bartmarian
Guru
Guru


Joined: 28 Nov 2005
Posts: 557

PostPosted: Sat Oct 04, 2014 10:52 am    Post subject: rs485 i kity avt Reply with quote

Witam,
kupiłem kilka zestawów avt - 530usb, 531, 535 http://serwis.avt.pl/manuals/AVT531.pdf
pojawia mi się /dev/ttyUSB0, mogę zmienić prędkość portu na 1200, ale nie bardzo wiem jak wysłać
znaki ASCII do urządzenia, tzn w teorii wiem, poszukałem i znalazłem, tylko u mnie nie działa, to co znalazłem
nie dotyczy ww układów tylko ogólne informacje, nie wiem czy to co robię jest ok.
Zmiana na prędkość 1200:
Code:
stty -F /dev/ttyUSB0 1200

otrzymuję:
Code:
# stty -F /dev/ttyUSB0
speed 1200 baud; line = 0;
-brkint -imaxbel

próbuję odczytać stan z 535
Code:
echo -en "\x1B\x20\x35\x20\x72\x20\x31" > /dev/ttyUSB0

czyli o ile dobrze rozumiem odpowiednik "ESC 5 r 1"
Nie zwraca żadnego wyniku, proszę o jakieś wskazówki.

--edit--
znalazłem błąd, na końcu nie mam enter'a ale nie wiem jak go wysłać.

--edit--
enter o ile dobrze znalazłem to \x0a - całość nadal milczy.
_________________
Człowiek bez religii jest jak ryba bez roweru.
Albercik się pomylił, prędkość światła to prędkość, wszechświat nie ma punktu odniesienia.
Perpetuum mobile - np. jowisz + jego księżyc, siły pływowe. Proste i niepraktyczne.
Back to top
View user's profile Send private message
sebas86
Guru
Guru


Joined: 01 May 2005
Posts: 568
Location: Szczecinek / Szczecin

PostPosted: Sat Oct 04, 2014 3:55 pm    Post subject: Reply with quote

A próbowałeś kończyć linię CRLF (\r\n)?
_________________
Nieważne jaka dystrybucja, ważne, że Linux!
Back to top
View user's profile Send private message
bartmarian
Guru
Guru


Joined: 28 Nov 2005
Posts: 557

PostPosted: Sun Oct 05, 2014 12:47 am    Post subject: Reply with quote

Wcześniej nie, próbowałem na wszystkie - jakie znalazłem - w sieci, nic.
Jeżeli dobrze zrozumiałem chodzi o:
Code:
 echo -en "\x1B\x20\x35\x20\x72\x20\x31\x0A\r\n" > /dev/ttyUSB0

milczy.

Spróbuję jutro z php, widziałem przykład w sieci, komuś działało.
_________________
Człowiek bez religii jest jak ryba bez roweru.
Albercik się pomylił, prędkość światła to prędkość, wszechświat nie ma punktu odniesienia.
Perpetuum mobile - np. jowisz + jego księżyc, siły pływowe. Proste i niepraktyczne.
Back to top
View user's profile Send private message
sebas86
Guru
Guru


Joined: 01 May 2005
Posts: 568
Location: Szczecinek / Szczecin

PostPosted: Sun Oct 05, 2014 8:49 am    Post subject: Reply with quote

Jeśli wysyłasz CRLF 0x0a jest zbędne (a nawet błędne, jeśli druga strona oczekuje konkretnego kodu końca).
I nie jestem pewien czy stosowanie spacji jest w ogóle potrzebne i czy nie to jest właśnie problemem (0x20) - z dokumentacji nie wynika jednoznacznie czy znak spacji powinien się tam znaleźć czy też nie, enter jest zaznaczony wyraźnie ale najlepiej gdyby podawali przykłady kodów zapisanych bajtami (albo z akcentowanymi spacjami).

Spróbowałbym kilku wariantów, np.:
Code:
echo -en "\x1b1wn1\r\n"
echo -en "\x1b1wn1\n"
echo -en "\x1b 1 w n 1\r\n"
echo -en "\x1b 1 w n 1 \r\n"
echo -en "\x1b 1 w n 1\n"
echo -en "\x1b 1 w n 1 \n"

_________________
Nieważne jaka dystrybucja, ważne, że Linux!
Back to top
View user's profile Send private message
gexcite
Tux's lil' helper
Tux's lil' helper


Joined: 24 Sep 2005
Posts: 116

PostPosted: Mon Oct 06, 2014 1:56 pm    Post subject: Reply with quote

Jeśli dobrze zrozumiałem instrukcję polecenie powinno wyglądać mniej więcej tak:
Code:
echo -en "\x1b1w11\n" > /dev/ttyUSB0
Back to top
View user's profile Send private message
bartmarian
Guru
Guru


Joined: 28 Nov 2005
Posts: 557

PostPosted: Fri Oct 10, 2014 12:05 am    Post subject: Reply with quote

Karta 531 ruszyła - gexcite dokładnie tak jak napisałeś, część robiłem zdalnie, nie widząc co się dzieje,
męczyłem 535, bo ta powinna odpowiedzieć, jednak tak się nie dzieje, zmyliło mnie też to, że po próbie odczytu
położenia przekaźnika też otrzymuję ciszę, wygląda na to, że nie wyświetla odpowiedzi, gdy jest pytany ale
wykonuje polecenia.

--edit--
Przyniosłem do domu całość. 530usb posiada dwie diody sygnalizujące komunikację, gdy wł/wył przekaźnik(i)
widać tylko nadawanie, gdy odczytuję stan, 530usb sygnalizuje nadawanie i odbiór, ale nie widzę odpowiedzi
w konsoli.
_________________
Człowiek bez religii jest jak ryba bez roweru.
Albercik się pomylił, prędkość światła to prędkość, wszechświat nie ma punktu odniesienia.
Perpetuum mobile - np. jowisz + jego księżyc, siły pływowe. Proste i niepraktyczne.
Back to top
View user's profile Send private message
gexcite
Tux's lil' helper
Tux's lil' helper


Joined: 24 Sep 2005
Posts: 116

PostPosted: Fri Oct 10, 2014 9:54 am    Post subject: Reply with quote

Sugeruję użyć najpierw Minicoma. Do testów zmacznie lepszy. Jak już ogarniesz to jakaś prosta apka w C. Ewentualnie bash.
Back to top
View user's profile Send private message
bartmarian
Guru
Guru


Joined: 28 Nov 2005
Posts: 557

PostPosted: Mon Oct 13, 2014 5:41 am    Post subject: Reply with quote

Spróbowałem z putty, wyników/odpowiedzi terminal nie wyświetla ale wykonuje to co dostanie,
jedyny terminal jaki wyświetlał wszystko poprawnie to Bray+ (ten próbowałem z windy).
Przy wysyłaniu polecenia "włącz 1 przekaźnik" na 530usb widzę, że komunikacja jest w jedną
stronę, zapala się tylko dioda TX, przy odczycie zapala się TX a za ułamek sek RX, więc odpowiada
(bo i Bray+ pokazuje), prawdopodobnie mam złe ustawienia portu...
Code:
# stty -F /dev/ttyUSB0 -a
speed 1200 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

tylko nie wiem co mógłbym przestawić, do tej porty udawało mi się (zmianami) tylko utracić komunikację :)
_________________
Człowiek bez religii jest jak ryba bez roweru.
Albercik się pomylił, prędkość światła to prędkość, wszechświat nie ma punktu odniesienia.
Perpetuum mobile - np. jowisz + jego księżyc, siły pływowe. Proste i niepraktyczne.
Back to top
View user's profile Send private message
bartmarian
Guru
Guru


Joined: 28 Nov 2005
Posts: 557

PostPosted: Fri Oct 17, 2014 12:11 am    Post subject: Reply with quote

Jak się okazuje, klocki odpowiadają, nie jest to wyświetlane, python jednak odbiera bdb.
Znalazłem w sieci jak odczytać stan:
Code:

#!/usr/bin/env python

import serial

port =serial.Serial(
    "/dev/ttyUSB0",
    baudrate=1200,
    parity=serial.PARITY_NONE,
    stopbits=serial.STOPBITS_ONE,
    bytesize=serial.EIGHTBITS,
    writeTimeout = 0,
    timeout = .1,
    rtscts=False,
    dsrdtr=False,
    xonxoff=False)

port.write('\x1b5r3\x0d')

while True:
    response=port.read(8)
    print(response)
    break

nie wiem jak podać "port.write('\x1b5r3\x0d')" jako argument do skryptu, (idealnie) np: # stan.py 5r3
proszę o wskazówkę.

Pozdrawiam
_________________
Człowiek bez religii jest jak ryba bez roweru.
Albercik się pomylił, prędkość światła to prędkość, wszechświat nie ma punktu odniesienia.
Perpetuum mobile - np. jowisz + jego księżyc, siły pływowe. Proste i niepraktyczne.
Back to top
View user's profile Send private message
sebas86
Guru
Guru


Joined: 01 May 2005
Posts: 568
Location: Szczecinek / Szczecin

PostPosted: Fri Oct 17, 2014 4:36 pm    Post subject: Reply with quote

http://www.tutorialspoint.com/python/python_command_line_arguments.htm
http://pl.wikibooks.org/wiki/Zanurkuj_w_Pythonie/Obs%C5%82uga_argument%C3%B3w_linii_polece%C5%84
_________________
Nieważne jaka dystrybucja, ważne, że Linux!
Back to top
View user's profile Send private message
bartmarian
Guru
Guru


Joined: 28 Nov 2005
Posts: 557

PostPosted: Mon Oct 27, 2014 1:04 am    Post subject: Reply with quote

Nie znam języków jak python, wewnętrznie czułem jednak, że to musi być proste - nie wytrzymałem i napisałem @ do
znajomego dev'a jak to rozwiązać, przeczucie mnie nie myliło, że wystarczy jedna linijka :) przy okazji powstał inny problem,
który tymczasowo obszedłem sprawdzeniem czy port nie jest w użyciu i odczekaniem chwili.
Na dłuższą metę jednak to nie wystarczy, szczególnie gdy uruchomię czujniki które będą odpytywane nie z cron'a raz na
minutę a w pętki co np 2sek, pomyślałem więc o serial-proxy, nie wiem czy coś takiego istnieje, ale wiem jak chciałbym by
działało, program tworzy wirtualne porty, dla różnych skryptów i tylko on odwołuje się do portu, nie wiem tylko czy coś takiego
istnieje. Jak ktoś wie, oprócz napisania sobie samemu w C a najlepiej w asemblerze, to z góry dzięki za info.
Nie wiem czy wszystko w skrypcie jest zgodne z sztuką, ale działa i może komuś się przyda.
Code:
#!/usr/bin/env python

import serial, string, time, getopt, sys

rs485 = '/dev/ttyUSB0'
baud = 1200

sendText = '\x1b' + sys.argv[1] + '\x0d'

while True:
    try:
        ser = serial.Serial(rs485, baud, timeout=.1)
        break

    except serial.SerialException:
        print 'rs485 not available. Wait...'
        time.sleep(1.5)

ser.write(sendText)
while True:
    response=ser.read(8)
    print(response)
    break

_________________
Człowiek bez religii jest jak ryba bez roweru.
Albercik się pomylił, prędkość światła to prędkość, wszechświat nie ma punktu odniesienia.
Perpetuum mobile - np. jowisz + jego księżyc, siły pływowe. Proste i niepraktyczne.
Back to top
View user's profile Send private message
gexcite
Tux's lil' helper
Tux's lil' helper


Joined: 24 Sep 2005
Posts: 116

PostPosted: Mon Oct 27, 2014 4:59 am    Post subject: Reply with quote

Nigdzie nie zamykasz portu po użyciu. Peenie to jest przyczyna że się blokuje po użyciu na jakiś czas.
Back to top
View user's profile Send private message
bartmarian
Guru
Guru


Joined: 28 Nov 2005
Posts: 557

PostPosted: Mon Oct 27, 2014 12:21 pm    Post subject: Reply with quote

Zmieniłem w nocy całość, zamknięcie portu też ma już miejsce. Teraz pętla czyta/pisze z/do plików tekstowych
a powłoka wykonuje kiedy chce resztę, tak działa o wiele lepiej, jedyny kłopot jaki występuje to odczyt avt535,
co 10-15 odczytów w pliku nie ma niczego, sporadycznie otrzymuję dwa puste wyniki jeden po drugin, to nie jest
specjalnie uciążliwe, zwraca 0 na które nie reaguję, 1 gdzie jest część dalsza i nic, gdzie też nie ma reakcji,
więc co najwyżej grozi to 1-2 sek opuźnieniem, tylko niefajnie wyglądają takie szczerby, może jest na to rada ?
_________________
Człowiek bez religii jest jak ryba bez roweru.
Albercik się pomylił, prędkość światła to prędkość, wszechświat nie ma punktu odniesienia.
Perpetuum mobile - np. jowisz + jego księżyc, siły pływowe. Proste i niepraktyczne.
Back to top
View user's profile Send private message
bartmarian
Guru
Guru


Joined: 28 Nov 2005
Posts: 557

PostPosted: Mon Nov 03, 2014 12:07 am    Post subject: Reply with quote

Rozwiązaniem jest odczyt do temp'a i zmiana nazw pliku, problemem był czas odczytu, dodatkowo przy starcie
całość kopiowana jest na ramdysk poza bazą rrd - teraz jest ok.

Nie wiem jak na stronie www, bez odświerzania umieścić status (sposób dowolny) w html/php/javascript/java, no może nie flash,
czyli ciągły odczyt nastu pliku(ów), w którym(ch) mam 0/1 + zamiana 0/1 na ikonę lub chociaż okrąg/kwadrat
zależnie od stanu zielony/czerwony. Pomocy :)

Pozdrawiam
_________________
Człowiek bez religii jest jak ryba bez roweru.
Albercik się pomylił, prędkość światła to prędkość, wszechświat nie ma punktu odniesienia.
Perpetuum mobile - np. jowisz + jego księżyc, siły pływowe. Proste i niepraktyczne.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Polskie forum (Polish) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum