Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 24. 08. 2012 17:54

Joker478
Příspěvky: 93
Reputace:   
 

seriovy port

Dobrý den,
zajimala by me komunikace se seriovym portem pomoci programu python, nebo pascal.
Hlavně bych chtěl vědět jak poslat na určitý výstupni pin řadu jedniček kvůli otestování.
Kdyby mi tu někdo poslal několik řádků a popsal mi co který přesně dělá, moc by mi to pomohlo.
Díky za pomoc.

Offline

 

#2 24. 08. 2012 21:46 — Editoval hradecek (24. 08. 2012 21:48)

hradecek
Příspěvky: 772
Pozice: Student
Reputace:   25 
Web
 

Re: seriovy port

↑ Joker478:
Ahoj,
s pascalom a sériovým portom skúsenosť nemám(chvalabohu ;d).
Čo sa týka Pythonu, tak mám skúsenosť s knižnicou PySerial, ktorá je pre python asi jediná :) a navyše má dobrú dokumentáciu.
Obsahuje funkcie ako, setRTS(), setDTR(), atď...

V dokumentácií nájdeš aj nejaké "examples"
Link: http://pyserial.sourceforge.net/


Netrápte sa nad svojimi problémami s matematikou, môžem vás uistiť, že tie moje sú ešte väčšie. ~~Albert Einstein~~
Jak spozná člověk, že není pitomec ? - Moudrý člověk to nepozná nikdy a blbci je to jedno. ~~Jak přicházejí básnici o iluze~~
Někteří lidi se nikdy nezmění. Anebo se rychle změní a pak se zase rychle změní nazpátek. ~~Homer Simpson~~

Offline

 

#3 26. 08. 2012 12:18

Joker478
Příspěvky: 93
Reputace:   
 

Re: seriovy port

Dobrý den,
už je to docela doba co jsem v Pythonu něco dělal. Mohl by jste mi prosím poradit se tam přidá knihovna?
Nejlépe krok za krokem.
Díky moc

Offline

 

#4 26. 08. 2012 12:54

Joker478
Příspěvky: 93
Reputace:   
 

Re: seriovy port

Dobrý den,
tak knihovnu už se mi podařilo konečně přidat.
PotŘeboval bych to teď otestovat.
Mezi výstupní piny a zem jsem si připojil LED diody, pomocí kterých bych to teď chtěl otestovat.
Mohl by jste mi poradit nějaký program, který by mi napřiklad na pin3 poslal nekonečnou řadu jedniček, což by mi diodu rozsvítilo a já bych věděl, že to funguje správně?
Díky moc

Offline

 

#5 26. 08. 2012 16:18 — Editoval hradecek (26. 08. 2012 16:18)

hradecek
Příspěvky: 772
Pozice: Student
Reputace:   25 
Web
 

Re: seriovy port

↑ Joker478:
No tak 3. pin je Tx, a tam je ta jednotka v prípade "Breaku".

Pri tomto programe bude LED blikať v sekundových intervaloch.

Code:

import sys
import serial
from time import sleep

s = serial.Serial(port="COM1") # Nezabudni skontrolova cislo portu!

while 1:
    try:
        s.sendBreak(1) # 1sekundovy break
        sleep(1)       # 1 sekundu cakat
    except KeyboardInterrupt:
        sys.exit()
        
s.close()

To isté môžeš urobiť aj s RTS-pinom (číslo 7)

Code:

import sys
import serial
from time import sleep

s = serial.Serial(port="COM1")
while 1:
    try:
        s.setRTS(1)
        sleep(1)
        s.setRTS(0)
        sleep(1)
    except KeyboardInterrupt:
        sys.exit()
        
s.close()

Netrápte sa nad svojimi problémami s matematikou, môžem vás uistiť, že tie moje sú ešte väčšie. ~~Albert Einstein~~
Jak spozná člověk, že není pitomec ? - Moudrý člověk to nepozná nikdy a blbci je to jedno. ~~Jak přicházejí básnici o iluze~~
Někteří lidi se nikdy nezmění. Anebo se rychle změní a pak se zase rychle změní nazpátek. ~~Homer Simpson~~

Offline

 

#6 26. 08. 2012 22:47

Joker478
Příspěvky: 93
Reputace:   
 

Re: seriovy port

Dobrý den,
kód jsem dal, upravil jsem na svůj com3 ale neudělá to nic, ani to nehodí chybu.
zkoušel jsem kód vkládat i po částech... při vložení import serial mi to hodí chybovou hlášku
:>>> import sys
>>> import serial
Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    import serial
  File "C:\Python32\lib\site-packages\serial\__init__.py", line 19, in <module>
    from serialwin32 import *
  File "C:\Python32\lib\serialwin32.py", line 53
    except Exception, msg:
                    ^
SyntaxError: invalid syntax

modul by mel být nainstalován dobre... lib/site-packages/serial/serialwin32 tam je...
neni mozne ze to je tim ze mam 64bit ?


jinak vám chci poděkovat za ten kód co jste pro mě napsal...

ještě jsem si všimnul další věci....a to, že napětí na jednotlivých pinech je různé... myslím kladné i záporné... přišel jsem na to náhodou když jsem otočil polaritu diody

Offline

 

#7 27. 08. 2012 13:19 — Editoval hradecek (27. 08. 2012 13:28)

hradecek
Příspěvky: 772
Pozice: Student
Reputace:   25 
Web
 

Re: seriovy port

↑ Joker478:
Ano, napätie na pinoch sa môže pohybovať okolo ±3 až ±15, a pri RxD až ±25, ak sa nemýlim...

Myslím, že logická 1 je sú záporné a logická 0 sú kladné hodnoty.
Treba to vygoogliť a naštudovať :)


Netrápte sa nad svojimi problémami s matematikou, môžem vás uistiť, že tie moje sú ešte väčšie. ~~Albert Einstein~~
Jak spozná člověk, že není pitomec ? - Moudrý člověk to nepozná nikdy a blbci je to jedno. ~~Jak přicházejí básnici o iluze~~
Někteří lidi se nikdy nezmění. Anebo se rychle změní a pak se zase rychle změní nazpátek. ~~Homer Simpson~~

Offline

 

#8 27. 08. 2012 16:07

Joker478
Příspěvky: 93
Reputace:   
 

Re: seriovy port

Dobrý den,
ještě jsem vás chtěl poprosit, jestli by jste mi nemohl okomentovat příkazy v programu k tomu 7. pinu.
Nějak nerozumím tomu, proč jsou tam o ty 2 řádky navíc oproti 3. pinu.
Mám na mysli: s.setRTS(0)
                      sleep(1)
Díky za radu.

Offline

 

#9 27. 08. 2012 17:06 — Editoval hradecek (27. 08. 2012 17:12)

hradecek
Příspěvky: 772
Pozice: Student
Reputace:   25 
Web
 

Re: seriovy port

↑ Joker478:
Nie je problém ;d

Druhý program:
Tu len pomocou funkcie setRTS(bool) striedavo "zapíname" a "vypína" LEDku. Funkciu sleep(1) pozastaví program takže 1 sekundu zostane v zapnutom stave potom sa vypne a open zostane 1 sekundu vo vypnutom stave až do nekonečna. tvz. "oneskorenie" ;d

Pseudokód:

Code:

nekonecna_slucka:

    LED_zapni;
    cakaj_1_sekundu;
    LED_vypni;
    cakaj_1_sekundu;

koniec_slucky.

Prvý program:
sendBreak(1) znamená, že pošle 1 sekundovú medzeru(break, space)(LED svieti iba 1 sekundu) a potom sa vráti do predchádzajúceho stavu a keďže chceme zostať 1 sekundu aj v tomto stave(LED nesvieti) tak, použijeme funkciu sleep(1), ktorá pozastaví program a tým ponechá v stave, kedy LED nesvieti.

Pseudokód:

Code:

nekonecna_slucka:

    rozsviet_LED_na_1_sekundu;
    cakaj_1_sekundu;

koniec_slucky.

rozsviet_LED_na_1_sekundu je vlastne:

Code:

LED_zapni
cakaj_1_sekundu
LED_vypni

Netrápte sa nad svojimi problémami s matematikou, môžem vás uistiť, že tie moje sú ešte väčšie. ~~Albert Einstein~~
Jak spozná člověk, že není pitomec ? - Moudrý člověk to nepozná nikdy a blbci je to jedno. ~~Jak přicházejí básnici o iluze~~
Někteří lidi se nikdy nezmění. Anebo se rychle změní a pak se zase rychle změní nazpátek. ~~Homer Simpson~~

Offline

 

#10 27. 08. 2012 17:08

hradecek
Příspěvky: 772
Pozice: Student
Reputace:   25 
Web
 

Re: seriovy port

↑ Joker478:
Chcel som to napísať, aby to bolo hneď jasné, tak dúfam, že to nie je veľmi zložité a že technické nepresnosti mi budú odpustené ;d


Netrápte sa nad svojimi problémami s matematikou, môžem vás uistiť, že tie moje sú ešte väčšie. ~~Albert Einstein~~
Jak spozná člověk, že není pitomec ? - Moudrý člověk to nepozná nikdy a blbci je to jedno. ~~Jak přicházejí básnici o iluze~~
Někteří lidi se nikdy nezmění. Anebo se rychle změní a pak se zase rychle změní nazpátek. ~~Homer Simpson~~

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson