Forums

Skip to content

Advanced search
  • Quick links
    • Unanswered topics
    • Active topics
    • Search
  • FAQ
  • Login
  • Register
  • Board index International Gentoo Users Polskie forum (Polish)
  • Search

rs485 i kity avt

Witajcie na polskim forum użytkowników Gentoo!
Opis instalacji i pracy z Gentoo. Pozostała dokumentacja Gentoo

Moderator: SlashBeast

Post Reply
  • Print view
Advanced search
14 posts • Page 1 of 1
Author
Message
bartmarian
Guru
Guru
User avatar
Posts: 557
Joined: Mon Nov 28, 2005 8:21 am

rs485 i kity avt

  • Quote

Post by bartmarian » Sat Oct 04, 2014 10:52 am

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: Select all

stty -F /dev/ttyUSB0 1200
otrzymuję:

Code: Select all

# stty -F /dev/ttyUSB0
speed 1200 baud; line = 0;
-brkint -imaxbel
próbuję odczytać stan z 535

Code: Select all

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.
Top
sebas86
Guru
Guru
User avatar
Posts: 571
Joined: Sun May 01, 2005 8:22 am
Location: Szczecinek / Szczecin
Contact:
Contact sebas86
Website

  • Quote

Post by sebas86 » Sat Oct 04, 2014 3:55 pm

A próbowałeś kończyć linię CRLF (\r\n)?
Nieważne jaka dystrybucja, ważne, że Linux!
Top
bartmarian
Guru
Guru
User avatar
Posts: 557
Joined: Mon Nov 28, 2005 8:21 am

  • Quote

Post by bartmarian » Sun Oct 05, 2014 12:47 am

Wcześniej nie, próbowałem na wszystkie - jakie znalazłem - w sieci, nic.
Jeżeli dobrze zrozumiałem chodzi o:

Code: Select all

 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.
Top
sebas86
Guru
Guru
User avatar
Posts: 571
Joined: Sun May 01, 2005 8:22 am
Location: Szczecinek / Szczecin
Contact:
Contact sebas86
Website

  • Quote

Post by sebas86 » Sun Oct 05, 2014 8:49 am

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: Select all

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!
Top
gexcite
Tux's lil' helper
Tux's lil' helper
Posts: 116
Joined: Sat Sep 24, 2005 7:01 am

  • Quote

Post by gexcite » Mon Oct 06, 2014 1:56 pm

Jeśli dobrze zrozumiałem instrukcję polecenie powinno wyglądać mniej więcej tak:

Code: Select all

echo -en "\x1b1w11\n" > /dev/ttyUSB0
Top
bartmarian
Guru
Guru
User avatar
Posts: 557
Joined: Mon Nov 28, 2005 8:21 am

  • Quote

Post by bartmarian » Fri Oct 10, 2014 12:05 am

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.
Top
gexcite
Tux's lil' helper
Tux's lil' helper
Posts: 116
Joined: Sat Sep 24, 2005 7:01 am

  • Quote

Post by gexcite » Fri Oct 10, 2014 9:54 am

Sugeruję użyć najpierw Minicoma. Do testów zmacznie lepszy. Jak już ogarniesz to jakaś prosta apka w C. Ewentualnie bash.
Top
bartmarian
Guru
Guru
User avatar
Posts: 557
Joined: Mon Nov 28, 2005 8:21 am

  • Quote

Post by bartmarian » Mon Oct 13, 2014 5:41 am

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: Select all

# 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ę :)
Top
bartmarian
Guru
Guru
User avatar
Posts: 557
Joined: Mon Nov 28, 2005 8:21 am

  • Quote

Post by bartmarian » Fri Oct 17, 2014 12:11 am

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

Code: Select all

#!/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
Top
sebas86
Guru
Guru
User avatar
Posts: 571
Joined: Sun May 01, 2005 8:22 am
Location: Szczecinek / Szczecin
Contact:
Contact sebas86
Website

  • Quote

Post by sebas86 » Fri Oct 17, 2014 4:36 pm

http://www.tutorialspoint.com/python/py ... uments.htm
http://pl.wikibooks.org/wiki/Zanurkuj_w ... lece%C5%84
Nieważne jaka dystrybucja, ważne, że Linux!
Top
bartmarian
Guru
Guru
User avatar
Posts: 557
Joined: Mon Nov 28, 2005 8:21 am

  • Quote

Post by bartmarian » Mon Oct 27, 2014 1:04 am

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: Select all

#!/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
Top
gexcite
Tux's lil' helper
Tux's lil' helper
Posts: 116
Joined: Sat Sep 24, 2005 7:01 am

  • Quote

Post by gexcite » Mon Oct 27, 2014 4:59 am

Nigdzie nie zamykasz portu po użyciu. Peenie to jest przyczyna że się blokuje po użyciu na jakiś czas.
Top
bartmarian
Guru
Guru
User avatar
Posts: 557
Joined: Mon Nov 28, 2005 8:21 am

  • Quote

Post by bartmarian » Mon Oct 27, 2014 12:21 pm

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 ?
Top
bartmarian
Guru
Guru
User avatar
Posts: 557
Joined: Mon Nov 28, 2005 8:21 am

  • Quote

Post by bartmarian » Mon Nov 03, 2014 12:07 am

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
Top
Post Reply
  • Print view

14 posts • Page 1 of 1

Return to “Polskie forum (Polish)”

Jump to
  • Assistance
  • ↳   News & Announcements
  • ↳   Frequently Asked Questions
  • ↳   Installing Gentoo
  • ↳   Multimedia
  • ↳   Desktop Environments
  • ↳   Networking & Security
  • ↳   Kernel & Hardware
  • ↳   Portage & Programming
  • ↳   Gamers & Players
  • ↳   Other Things Gentoo
  • ↳   Unsupported Software
  • Discussion & Documentation
  • ↳   Documentation, Tips & Tricks
  • ↳   Gentoo Chat
  • ↳   Gentoo Forums Feedback
  • ↳   Duplicate Threads
  • International Gentoo Users
  • ↳   中文 (Chinese)
  • ↳   Dutch
  • ↳   Finnish
  • ↳   French
  • ↳   Deutsches Forum (German)
  • ↳   Diskussionsforum
  • ↳   Deutsche Dokumentation
  • ↳   Greek
  • ↳   Forum italiano (Italian)
  • ↳   Forum di discussione italiano
  • ↳   Risorse italiane (documentazione e tools)
  • ↳   Polskie forum (Polish)
  • ↳   Instalacja i sprzęt
  • ↳   Polish OTW
  • ↳   Portuguese
  • ↳   Documentação, Ferramentas e Dicas
  • ↳   Russian
  • ↳   Scandinavian
  • ↳   Spanish
  • ↳   Other Languages
  • Architectures & Platforms
  • ↳   Gentoo on ARM
  • ↳   Gentoo on PPC
  • ↳   Gentoo on Sparc
  • ↳   Gentoo on Alternative Architectures
  • ↳   Gentoo on AMD64
  • ↳   Gentoo for Mac OS X (Portage for Mac OS X)
  • Board index
  • All times are UTC
  • Delete cookies

© 2001–2026 Gentoo Foundation, Inc.

Powered by phpBB® Forum Software © phpBB Limited

Privacy Policy

 

 

magic