Status połączenia

0

Program łączy się z mikrokontrolerem poprzez port com. Potrzebuję zrobić coś takiego aby na bieżąco sprawdzało mi połączenie i jeśli jest ok to wyświetlało "Połączono" w przeciwnym razie ma pokazać " Rozłączono". Myślałem nad czymś takim:

if vaComm1.Active = false then
1

a jakie jest pytanie?

to musisz robić raczej w postaci komunikacji z urządzeniem, np. raz na minutę wysyłaj pakiet "ping", na który w ciągu maksymalnie kilku sekund urządzenie musi odpowiedzieć "pong". jeśli odpowiedź nie nadejdzie, to znaczy że jest źle ;-)

0

aby to miało sens to musiałbyś wysyłać jakiś komunikat do uP i czekać na odpowiedź. To, że vaComm1.Active = true nie oznacza, że

  1. kabel jest faktycznie podłączony
  2. uP się nie zawiesił
  3. generalnie nie oznacza nic poza tym, że port jest otwarty przez program
0
Misiekd napisał(a)

aby to miało sens to musiałbyś wysyłać jakiś komunikat do uP i czekać na odpowiedź. To, że vaComm1.Active = true nie oznacza, że

  1. kabel jest faktycznie podłączony
  2. uP się nie zawiesił
  3. generalnie nie oznacza nic poza tym, że port jest otwarty przez program

Może jakiś przykład ? Kod mile widziany....

0

no ale jakiego przykładu oczekujesz??? Przecież aby to działało to uP musi być tak zaprogramowany aby odpowiedzieć na "ping" z komputera. Generalnie ja cały czas nie wiem (tak samo jak Azarien) z czym masz problem. Nie potrafisz napisać kawałka kodu, który co jakiś czas będzie coś słał do uP i czekał na odpowiedź???

0

Zależy na czym Ci zależy. Jeśli chcesz tylko sprawdzić czy urządzenie jest podpięte i czy działa to wystarczy zwykła obsługa błędów. Otwierasz port com i jeśli się połączy to ok jeśli nie to poprzez obsługę błędów się o tym dowiesz, to samo można zastosować wysyłając co jakiś czas jakąś komendę do portu. Jeśli wiesz jakie komendy obsługuje ten mikrokontroler to sprawa prosta jeśli nie bo powiedzmy masz zewnętrzny gotowy program dostarczony przez producenta to są skanery portów com. Uruchamiasz taki programik i sprawdzasz co wysyła do coma, a potem sam realizujesz to w swoim programie. Proste. Jeśli chcesz znać natomiast faktyczny stan mikrokontrolera to jak już napisali musisz go zaprogramować. Wszystko zależy od Twojej wiedzy.

0
Kasoul napisał(a)

Zależy na czym Ci zależy. Jeśli chcesz tylko sprawdzić czy urządzenie jest podpięte i czy działa to wystarczy zwykła obsługa błędów. Otwierasz port com i jeśli się połączy to ok jeśli nie to poprzez obsługę błędów się o tym dowiesz, to samo można zastosować wysyłając co jakiś czas jakąś komendę do portu.
obsługiwałeś kiedykolwiek jakieś urządzenie przez port COM? Bo jakoś nie wynika z twojego postu. Port COM otworzy się i nie rzuci ŻADNYM wyjątkiem niezależnie od tego czy coś jest podłączone do niego czy nie (rzuci jedynie wtedy jeśli podasz numer nieistniejącego portu lub port został już wcześniej otwarty). Tak samo wysłanie czegokolwiek na port COM powiedzie się ZAWSZE (oczywiście port musi być otwarty) niezależnie od tego czy cokolwiek jest do niego podpięte czy nie!

0

W sumie racja. Ale jeśli zdefiniuje w programie że na powiedzmy com3 ma to urządzenie i będzie chciał otworzyć port com a urządzenie będzie niepodłączone to wywali mu komunikat cytuję "Unable to open com port (Win error code:2)" Wystarczy że dowie się na którym comie chodzi ten kontroler. Cykliczne otwieranie i zamykanie portu i po sprawie.

0

Masz tutaj mój program http://hotfile.com/dl/119235928/9c7555a/Test_Atheros_COMPORT.exe.html i sprawdź sam. Jeśli nie zdeklarujesz portu i będziesz chciał go otworzyć to wywali komunikat o błędzie. To samo będzie się działo jeśli zadeklarujesz port pod który nie jest podłączone urządzenie bo wtedy fizycznie ten port się nie pojawi...

0

Tak, ale mówisz tutaj o portach wirtualnych, które się pojawiają kiedy urządzenie, faktycznie będące na USB, zostanie podłączone.
Prawdziwy, sprzętowy port COM po prostu jest, i zawsze można nań coś wysłać, nawet jeśli pójdzie to w powietrze.

0

No w sumie racja. Program który napisałem służył do sprawdzenia obsługi sterownika przekaźników który faktycznie jest na USB ale ma układ emulujący COM'a.

0

A jaki chip jest po stronie elektroniki ? Jak FTDI to może zamiast COM-ów (VCP DRIVER) lepiej ożywać alternatywnej metody połączenia (D2XX driver).
W RS232 aby to działało to tylko za pomocą już tu wspomnianej metody odpytywania sprzętu czy nadal jest podłączony.

Jeszcze przychodzi mi takie rozwiązanie że skoro to jest USB to możesz w programie obsłużyć RegisterDeviceNotification( http://www.swissdelphicenter.ch/torry/showcode.php?id=2211 ) i tym sposobem sprawdzać stan podłączenia.
Bo w sumie z tresci postów nie wynika o stanie połączenia czego masz być informowany. czy aplikacji do urządzenia czy urządzenia do komputera ????
Ewentualnie możesz sprawdzać jakie urządzenia USB są w systemie i znajac VID i PID urządzenia będziesz wiedział czy jest połączone czy nie

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