Na wstępie powiem że ogólnie to jestem głównie linuksowcem. Z mikrokontrolerów robiłem jedynie jeden projekt w Arduino z wykorzystaniem czujki DHT11 i bezprzewodowego wł/wył na 433MHz. "Surowego" portu szeregowego jeszcze nie wykorzystywałem. Mam styczność jedynie z prostymi programatorami na USB które wykorzystuje do debugowania routerów (pisze paczki na nie w bashu)
Dostałem zadanie obsługi przycisków w komputerze przemysłowym w pythonie. Pythona ogarniam bardziej webowo (django). Docelowo chodzi o napisanie prostego API żeby backendowcy mogli sobie je podpiąć pod swoje rzeczy ale nie ja to będę pisał. Ja mam tylko zrobić prosty pythonowy skrypt który wpluwa np. jakieś znaki gdy dany przycisk jest wciśnięty.
Tu jest schemat panelu 4 przycisków
Jak widać to bardzo prosta konstrukcja. Trzeba odczytać jedynie stany z pinów 5,6,7,8 (GPI0,1,2,3). Żadnego przesyłania danych, interpretacji, parsowania czy jakichś innych dziwnych rzeczy o których piszą w internecie.
Tutaj manual do komputerka z przykładami do portów szeregowych (niestety w Assemblerze którego totalnie nie ogarniam). (Strony 52-54 czyli końcowe)
https://www.elmark.com.pl/web/uploaded/karty_...9/ms-9a69_instrukcja-uzytkownika-i3-5010u.pdf
Przykłady inicjacji portów w pySerial
https://pythonhosted.org/pyserial/shortintro.html
Z powyższego udało mi się zainicjować port. A przynajmniej tak mi się wydaję bo nie jestem pewien.
I teraz kwestia odczytu sygnałów w pętli. Na podstawie różnych strzałów w google dedukuję że chyba trzeba do tego wykorzystać albo metodę raw_input()
http://www.varesano.net/blog/fabio/serial%20rs232%20connections%20python
albo metodę read/read_until() z klasy serial
https://pyserial.readthedocs.io/en/latest/pyserial_api.html
Ale zupełnie nie wiem jak powiązać to z moimi pinami lub wydedukować coś z kodu Assemblera. Sprawę utrudnia fakt że 99% wyników googla w sprawie zabaw z pythonem z serialem wypluwa Arduino lub RaspberyPi.
https://raspberrypi.stackexchange.com/questio...-serial-reading-a-usb-arduino-all-i-get-is-0s
https://arduino.stackexchange.com/questions/34535/reading-pushbutton-status-with-pyserial
Więc jak to ugryźć?
Dostałem zadanie obsługi przycisków w komputerze przemysłowym w pythonie. Pythona ogarniam bardziej webowo (django). Docelowo chodzi o napisanie prostego API żeby backendowcy mogli sobie je podpiąć pod swoje rzeczy ale nie ja to będę pisał. Ja mam tylko zrobić prosty pythonowy skrypt który wpluwa np. jakieś znaki gdy dany przycisk jest wciśnięty.
Tu jest schemat panelu 4 przycisków
Jak widać to bardzo prosta konstrukcja. Trzeba odczytać jedynie stany z pinów 5,6,7,8 (GPI0,1,2,3). Żadnego przesyłania danych, interpretacji, parsowania czy jakichś innych dziwnych rzeczy o których piszą w internecie.
Tutaj manual do komputerka z przykładami do portów szeregowych (niestety w Assemblerze którego totalnie nie ogarniam). (Strony 52-54 czyli końcowe)
https://www.elmark.com.pl/web/uploaded/karty_...9/ms-9a69_instrukcja-uzytkownika-i3-5010u.pdf
Przykłady inicjacji portów w pySerial
https://pythonhosted.org/pyserial/shortintro.html
Z powyższego udało mi się zainicjować port. A przynajmniej tak mi się wydaję bo nie jestem pewien.
$ python -m serial.tools.list_ports
/dev/ttyS0
/dev/ttyS1
/dev/ttyS2
/dev/ttyS3
/dev/ttyS4
/dev/ttyS5
6 ports found
>>> import serial
>>> ser = serial.Serial('/dev/ttyS0')
>>> ser
Serial<id=0x7f4e3ad58290, open=True>(port='/dev/ttyS0', baudrate=9600, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=False, rtscts=False, dsrdtr=False)
I teraz kwestia odczytu sygnałów w pętli. Na podstawie różnych strzałów w google dedukuję że chyba trzeba do tego wykorzystać albo metodę raw_input()
http://www.varesano.net/blog/fabio/serial%20rs232%20connections%20python
albo metodę read/read_until() z klasy serial
https://pyserial.readthedocs.io/en/latest/pyserial_api.html
Ale zupełnie nie wiem jak powiązać to z moimi pinami lub wydedukować coś z kodu Assemblera. Sprawę utrudnia fakt że 99% wyników googla w sprawie zabaw z pythonem z serialem wypluwa Arduino lub RaspberyPi.
https://raspberrypi.stackexchange.com/questio...-serial-reading-a-usb-arduino-all-i-get-is-0s
https://arduino.stackexchange.com/questions/34535/reading-pushbutton-status-with-pyserial
Więc jak to ugryźć?