Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Obsługa Arduino przez port Com pc

mateusz93mk 16 Nov 2018 11:13 729 9
Relpol
  • #1
    mateusz93mk
    Level 11  
    Witam ! Mam zapytanie czy da się coś takiego zrobić. Potrzebuje program do obsługi w tle portu Com.
    Mianowicie , potrzebuje wykonać takie coś .
    Przypisuje sobie jakiś klawisz z klawiatury komputera np: *. Po wciśnięciu tego klawisza żeby została wysłana jakaś komenda do portu Com. Przez USB będzie podłączone Arduino , które obsługuje serial monitor jako port Com.
    Arduino odbiera daną przypisaną komendę i wykonuje jakaś funkcje , np: załącza przekaźnik. Można takie coś zrobić na Arduino ale musi być włączony cały czas program Arduino IDE i uruchomiony port com. A czy jest program który będzie działał w tle i nasłuchiwał na wciśnięty konkretny przycisk ?
    Do you have a problem with Arduino? Ask question. Visit our forum Arduino.
  • Relpol
  • #2
    khoam
    Level 41  
    mateusz93mk wrote:
    Można takie coś zrobić na Arduino ale musi być włączony cały czas program Arduino IDE i uruchomiony port com.


    To nie jest prawda. Nie może natomiast równocześnie korzystać z tego samego portu szeregowego konsola IDE i cokolwiek innego.
  • Relpol
  • #3
    tikey2000
    Level 10  
    To się powinno dać zrealizować przez wbudowaną funkcjonalność systemu Windows już chyba od XP albo i wcześniej. Otóż w dowolnym folderze umieszczasz skrypt np. qqq.bat , tworzysz skrót do tego pliku-skrypty na pulpicie (koniecznie!), następnie wchodzisz we właściwości skrótu i ustawiasz tzw. klawisz skrótu (przyciskając w tym polu odpowiednie klawisze np. Alt oraz F1) nie wszystkie klawisze są możliwe ale jest ich dużo. Nie radzę wybierać standardowych kombinacji windows. Kolejnym tematem będzie teraz napisanie skryptu, który wysyła coś na port szeregowy.
    Proponuję zamieścić w pliku qqq.bat coś takiego (nie testowałem):
    mode COM21 BAUD=115200 PARITY=n DATA=8
    copy yourfile.txt \\.\COM21 (dla pliku binarnego trzeba dodać jeszcze /B za COM21 )

    Obsługa Arduino przez port Com pc
  • #4
    tronics
    Level 38  
    khoam wrote:
    Nie może natomiast równocześnie korzystać z tego samego portu szeregowego konsola IDE i cokolwiek innego.
    Koledze chyba chodziło o to, że właśnie korzystając z konsoli IDE (uruchomione ide jako aktywne okno) i wpisując odpowiednie ciągi znaków ... a chciałby bez IDE by program "w tle" to robił. Nie ma problemu żadnego z przechwytywaniem wpisywanych znaków z klawiatury przy "aktywnym" oknie programu, do przechwytywania w tle jedyny problem to, że program ma wtedy funkcjonalność keyloggera i niektóre antywirusy mogą świrować.
  • #5
    khoam
    Level 41  
    tronics wrote:
    Nie ma problemu żadnego z przechwytywaniem wpisywanych znaków z klawiatury przy "aktywnym" oknie programu


    O ile nie będzie aktywny Serial Monitor w Arduino IDE, bo wtedy nie wiadomo co te ciągi znaków będzie przechwytywał.
  • #6
    tronics
    Level 38  
    Quote:
    O ile nie będzie aktywny Serial Monitor w Arduino IDE

    A czemu miałby być, skoro do rozwiązania jest problem by
    1. nie musiało to być aktywne okno
    2. nie musiało to być arduino ide
    ;) Autor tylko napisał, że oczekiwaną funkcjonalność płytki arduino udało mu się do tej pory uzyskać przez serial monitor w ide. Szuka rozwiązania działającego w tle, bez załączonego ide. Tu nie ma żadnego problemu z otwieraniem portów przez biblioteki systemowe, zawsze będzie otwarty port przez program działający w tle. Jedyny przypadek gdy problem będzie to upload nowszego firmware do płytki arduino lub próba użycia "serial debug". Oczywiste jest, że w tym przypadku keylogger w tle zablokuje dostęp do COM dla Arduino IDE czy też ogółem avrdude.
    Klawisze funkcyjne, kombinacje klawiszy i skróty klawiaturowe do batch file to też jakieś rozwiązanie, ale mało "eleganckie", szczególnie jeśli akurat używamy programu, który ma też takie zdefiniowane, a zazwyczaj mało kto zna wszystkie skróty obsługiwane przez popularne aplikacje, np. choćby przeglądarkę internetową.
  • #7
    mateusz93mk
    Level 11  
    Czyli jak rozumiem nie ma jakiegoś programu , aplikacji bądź skryptu do którego można w prosty sposób przypisać skrót klawiszowy i port Com na który ma wysłać ?
  • #8
    khoam
    Level 41  
    tronics wrote:
    Oczywiste jest, że w tym przypadku keylogger w tle zablokuje dostęp do COM dla Arduino IDE czy też ogółem avrdude.


    No więc ma jedną z dwóch opcji do wyboru:
    1. "utworzy" sobie dodatkowy programowy port szeregowy (SoftwareSerial) i do niego podłączy keyloggera przez odpowiedni konwerter. -maksymalna prędkość takiego portu 56kbps nie powinna być ograniczeniem
    albo
    2. zaopatrzy się w płytkę Arduino Mega z 4 portami szerogowymi wykorzysta jeden z dodatkowych portów w sposób analogiczny, jak w pkt.1.

    Niezależnie od wyboru opcji, będzie mógł uruchamiać program i śledzić jego działanie jednocześnie w Arduino IDE/PIO/Eclipse czy czymkolwiek sobie zażyczy.
  • #9
    tikey2000
    Level 10  
    mateusz93mk wrote:
    Czyli jak rozumiem nie ma jakiegoś programu , aplikacji bądź skryptu do którego można w prosty sposób przypisać skrót klawiszowy i port Com na który ma wysłać ?

    A po co program jeśli sam Windows to zawiera. Dla większego uproszczenia w skrypcie .bat można wprost wpisać komendę echo jak to zostało tutajLink opisane. Jedyny minus jest taki, że mechanizm skrótów działa trochę wolno.
  • #10
    kaczakat
    Level 34  
    Gotowego programu nie znam, ale jak programujesz w Arduino to parę minut można zrobić aplikację na C# w darmowym IDE od MS (kiedyś to była wersja community), jest mnóstwo tutoriali w sieci. Jedyne co to właśnie zaszyć sobie w nim funkcjonalność wykrywania skrótów. W takim programie najtrudniejsza część to reagowanie na przylatujące dane, te wysyłane to fraszka. Kilka trafnych zapytań w google i znajdziesz odpowiedź. NP. podstawowy program do portu COM: https://www.youtube.com/watch?v=1KvtKMUWmyI&t=437s, a zrobiłem na podstawie tutoriala stąd: https://www.youtube.com/watch?v=Fer_q9LXDnQ, jak dodać skróty znajdziesz tu: https://www.youtube.com/watch?v=ddc1lTBrejQ , a dla aplikacji w tle pomogą hotkeys stąd: https://www.youtube.com/watch?v=V1vvZs-lUc8. Jeśli ostatni nie rozwiąże pracy w tle, to zawsze można zauważyć, że jest to alternatywa dla C# GlobalKeybdhook i mamy tutorial tu: https://www.youtube.com/watch?v=FL_y8GT1L7E.