Odczyt sygnału z zewnętrznego źródła

0

Cześć wszystkim!
Czy jest możliwość odczytu sygnału/impulsu z zewnętrznego źródła? W najprostszej formie chodzi mi o np odczyt wystąpienia impulsu w jakiegoś rodzaju przełączniku jednobiegunowym tak jakbym wciskał Button na interface użytkownika.

0

Tak.
Karty pci z wejściami cyfrowymi, moduły DAQ na usb, inne wynalazki mniej lub bardziej przemysłowe.
Hobbystyczne Aeduiono z jakimś RS 232 czy inne Raspberry.
Można też się podpiąć pod port równoległy, jeśli masz taki.

0

A od strony programistycznej? Tak bym miał choć jakiś punkt zaczepienia. Np jeśli podłączył bym jeden zewnętrzny przycisk do usb. Jak miałbym szukać identyfikacji jego źródła bo przecież to nie będzie Button1.value = 1 lub nie Onkeypress = "enter" ;)

0

A ten przycisk ma jakąś dokumentację?

0
CoJaTuRobie napisał(a):

A ten przycisk ma jakąś dokumentację?

Czyli mam rozumieć, że aby poznać źródło sygnału muszę znać jakieś cechy wynikające z dokumentacji? System operacyjny nie jest w stanie rozpoznać zmiany sygnału na jakimś wejściu?

0

Rzeczy wpinane na USB mają swoje sterowniki i to one udostępniają jakieś funkcjonalności dla systemu operacyjnego.
Tu masz jakiś przykład jak ogranać taki temat w C#: https://social.msdn.microsoft.com/Forums/vstudio/en-US/24b0299b-6a88-4013-84a6-9e0211a98e43/usb-communication-using-c?forum=csharpgeneral https://docs.microsoft.com/en-us/dotnet/api/system.io.ports.serialport?redirectedfrom=MSDN&view=dotnet-plat-ext-6.0
A możesz napisać coś więcej o problemie, jaki próbujesz rozwiązać?

0

Zależy od sprzętu.
Po RS232 odpytujesz timerem o stan jakiegoś wejścia cyfrowego, albo otwierasz port SR232 i nasłuchujesz co Ci jakieś Arduino czy inna Malina wysyła.
Na USB to moduły DAQ mają często jakieś sterowniki i nawet bilbioteki do .net więc to kwestia użycia

0
CoJaTuRobie napisał(a):

Rzeczy wpinane na USB mają swoje sterowniki i to one udostępniają jakieś funkcjonalności dla systemu operacyjnego.

Tu masz jakiś przykład jak ogranać taki temat w C#: https://social.msdn.microsoft.com/Forums/vstudio/en-US/24b0299b-6a88-4013-84a6-9e0211a98e43/usb-communication-using-c?forum=csharpgeneral https://docs.microsoft.com/en-us/dotnet/api/system.io.ports.serialport?redirectedfrom=MSDN&view=dotnet-plat-ext-6.0
A możesz napisać coś więcej o problemie, jaki próbujesz rozwiązać?

Na razie to czysto teoretyczne "rozważania", których wynik w przyszłości mógłby zwiększyć funkcjonalność mojej aplikacji.

https://www.compuphase.com/usbkey/usbbutton_en.htm

Zauważyłem jednak, że przycisk taki "symuluje" wciśnięcie odpowiedniego przycisku z klawiatury.

0

Zauważyłem jednak, że przycisk taki "symuluje" wciśnięcie odpowiedniego przycisku z klawiatury.

I to jest dobre podejście. Najlepiej właśnie gdy przycisk zgłasza się jako jakieś rozpoznawane przez system urządzenie, np. klawiaturę i symuluje wciśnięcie egzotycznego klawisza np. F13.

Wtedy nie trzeba nic kombinować z portami, sterownikami tylko obsłużyć konkretny klawisz.

0

Ogólnie problem nie jest taki, że "System operacyjny nie jest w stanie rozpoznać zmiany sygnału na jakimś wejściu?", tylko, że typowy komputer w ogóle nie posiada wyprowadzonych takich wejść ;) GPIO (General Purpose Input Output) to właśnie domena wszelkiej maści mikrokontrolerów (np. Arduino) i układów SoC (np. Raspberry Pi).

Ale możesz sobie zrobić sobie - najbardziej typowo - jakieś fizyczne przyciski podłączone do Arduino które wysyła informacje przez port szeregowy (tak naprawdę przez USB) i w twojej aplikacji na komputerze czytać takie dane. Albo skorzystać z protokołu MIDI, wszelkiej maści konsole DJskie i inne pianinka tak się podłączają do aplikacji. Albo tak jak wspominają koledzy wyżej symuluje się klawiaturę/mysz/joystick/cokolwiek.

0
Ktos napisał(a):

Ogólnie problem nie jest taki, że "System operacyjny nie jest w stanie rozpoznać zmiany sygnału na jakimś wejściu?", tylko, że typowy komputer w ogóle nie posiada wyprowadzonych takich wejść ;) GPIO (General Purpose Input Output) to właśnie domena wszelkiej maści mikrokontrolerów (np. Arduino) i układów SoC (np. Raspberry Pi).

Ale możesz sobie zrobić sobie - najbardziej typowo - jakieś fizyczne przyciski podłączone do Arduino które wysyła informacje przez port szeregowy (tak naprawdę przez USB) i w twojej aplikacji na komputerze czytać takie dane. Albo skorzystać z protokołu MIDI, wszelkiej maści konsole DJskie i inne pianinka tak się podłączają do aplikacji. Albo tak jak wspominają koledzy wyżej symuluje się klawiaturę/mysz/joystick/cokolwiek.

To czym jest port USB jeśli nie portem IO?

1

Nie jest portem IO dla sygnalow cyfrowych. Jest szeregową magistralą danych.

0

Jeśli masz w komputerze jeszcze port LPT lub COM to z tego co pamiętam można się nimi pobawić jak GPIO przy minimalnym nakładzie pracy
https://www.codeproject.com/Articles/20545/I-O-Ports-Programming-Parallel-port-Reading-Writin

ostatnio próbowałem gdzieś tam w turbo pascalu pod dosem więc nie potwierdzę.
Trochę ryzykowna sprawa bo w razie pomyłki do wymiany może iść cała płyta główna.

0

Nie mam LPT, ale za to mam laptopa z usbc. Może być? ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1