Komunikacja rs 232
Komunikacja rs 232
Witam mam takie pytanie odnośnie bardzo podstawowej metodyki podłączania sprzętu do kompa przez rs232. Dopiero zaczynam używać lab view napisałem raptem kilka programów. jednak chciałbym podłączyć kilka urządzeń po rsie do kompa są to urządzenia pomiarowe elektrometr i lockin amplifier zastanawiam się czy wystarczy napisać program operujący funkcjami Visa(VISA open read close) i podłączyć sprzęt? Czy jest to bardzie j skomplikowane. Wiem, że pytanie morze wydać się banalne za co z góry przepraszam .
-
- Posty: 641
- Rejestracja: 31 gru 2010 01:36
- Wersja środowiska: LabVIEW 2017
- Lokalizacja: Katowice
Re: Komunikacja rs 232
Witam, najprostsza droga, jak to zwykle bywa, prowadzi przez Help->Examples->Search i wyszukanie rs-232. Znajdziesz tam różne wariacje na temat "Serial Write and Read". Żadnej większej filozofii z eReSem nie ma ;)
Re: Komunikacja rs 232
no i o to właśnie pytałem Dzięki. Zastanawiałem tylko czy trzeba coś instalować itd.
Komunikacja rs 232
trzeba mieć zainstalowane "NI SERIAL" - za friko pobiera się ze strony nationala.
Re: Komunikacja rs 232
Witam wszystkich!
Ja też potrzebuję użyć RS232 do odczytywania wartości wysyłanych przez urządzenie zewnętrzne i do dalszej ich obróbki. Udało mi się uruchomić RS232 i działa bez zarzutu. Miałem roczną przerwę w programowaniu w LabVIEW i nieco zapomniałem i w związku z tym mam prośbę o pomoc w rozwiązaniu problemu. Problem jest mianowicie taki, że moje urządzenie transmituje dane cały czas, a mój vi odczytuje tylko taką ilość bajtów jaką mu się wpiszę w okienku. Chciałbym widzieć w okienku wszystkie bajty, a nie tylko część. Poza tym, nie wiem co zrobić z tym timeoutem, skoro chce odbierać na bieżąco dane, a nie po upływie timeoutu kilku sekund... :/. Proszę o pomoc w tym temacie.
Ja też potrzebuję użyć RS232 do odczytywania wartości wysyłanych przez urządzenie zewnętrzne i do dalszej ich obróbki. Udało mi się uruchomić RS232 i działa bez zarzutu. Miałem roczną przerwę w programowaniu w LabVIEW i nieco zapomniałem i w związku z tym mam prośbę o pomoc w rozwiązaniu problemu. Problem jest mianowicie taki, że moje urządzenie transmituje dane cały czas, a mój vi odczytuje tylko taką ilość bajtów jaką mu się wpiszę w okienku. Chciałbym widzieć w okienku wszystkie bajty, a nie tylko część. Poza tym, nie wiem co zrobić z tym timeoutem, skoro chce odbierać na bieżąco dane, a nie po upływie timeoutu kilku sekund... :/. Proszę o pomoc w tym temacie.
- Załączniki
-
- RS232.vi
- (12.35 KiB) Pobrany 441 razy
- skoziate
- Administrator
- Posty: 245
- Rejestracja: 06 mar 2007 00:00
- Wersja środowiska: LabVIEW 2019
- Lokalizacja: Warszawa
- Kontakt:
Re: Komunikacja rs 232
Przy pomocy porperty node Bytes at Port sprawdzaj ile masz bajtów i odczytuj właśnie taką liczbę. Jeśli wartość jest zero, wykonaj Wait. W ten sposób będziesz na bieżąco odczytywał wszystkie wartości bez opóźnienia.
Pozdrawiam,
Sebastian
Sebastian
Re: Komunikacja rs 232
Mam taki problem z konwersją odczytanego z RS232 stringa na liczbę, że bloczek nie robi konwersji (?). Chcę to zrobić po to, aby móc podpiąć na końcu Number Indicator -> Meter, do któego można podpiąć tylko zmienne typu "number". W załączniku przesyłam VIa.
- Załączniki
-
- RS232.vi
- (20.64 KiB) Pobrany 362 razy
- Pitol
- Moderator
- Posty: 982
- Rejestracja: 19 lip 2007 00:00
- Wersja środowiska: LabVIEW 2019
- Lokalizacja: Kraków
Re: Komunikacja rs 232
A w jaki sposób urządzenie wysyła do Ciebie informacje? Czy są to znaki ASCII czy liczby w hexie? Jeśli ASCII to musisz zastosować bloczek String To Byte Array w palecie String->Conversion. Jeśli w Hex to bloczek Hexadecimal String to Number w palecie String->String/Number Conversion.
Re: Komunikacja rs 232
Urządzenie wysyła bajty z wartościami liczbowymi w hexa - nie są to znaki ASCII (litery/cyfry). Poniżej screen okna terminala RS232:
Zrobiłem tak:
ale to nie działa :/.-
- Posty: 641
- Rejestracja: 31 gru 2010 01:36
- Wersja środowiska: LabVIEW 2017
- Lokalizacja: Katowice
Re: Komunikacja rs 232
Pitol już dał Ci prawie całą odpowiedź. Użycie Hexadecimal String to Number konwertuje litery A-F na liczby 10-15, czyli tak, jak należy traktować litery w zapisie szesnastkowym liczby (D skonwertuje na 13). Ty nie dostajesz danych w zapisie szesnastkowym, co wnioskuję z pojawienia się znaków @ w terminalu (chyba, że ten znak ma w transmisji jakieś kontrolne znaczenie, ale to Ty powinieneś znać format danych, a nie ja zgadywać;). Użyj w takim razie String To Byte Array, który dokonuje konwersji znaku na jego wartość dziesiętną w ASCII (czyli D konwertuje na 68) i zapisuje to po kolei w tablicy.
A te tabulatory (09) w każdej linii też są daną, czy jakimś rozdzielaczem?
A te tabulatory (09) w każdej linii też są daną, czy jakimś rozdzielaczem?
Re: Komunikacja rs 232
Aha, kwoli objaśnienia: urządzenie wysyła dane w dwóch bajtach [B1][B0]. Terminal wyświetla je w formacie szesnastkowym, a obok wyświetla dodatkowo ich postać z tablicy ASCII, co nie ma znaczenia. Nie ma tu żadnych tabulatorów, liter czy wyrazów. To są po prostu suche liczby.PiDi pisze:A te tabulatory (09) w każdej linii też są daną, czy jakimś rozdzielaczem?
- Pitol
- Moderator
- Posty: 982
- Rejestracja: 19 lip 2007 00:00
- Wersja środowiska: LabVIEW 2019
- Lokalizacja: Kraków
Komunikacja rs 232
Skoro odczytujesz dwa bajty z portu i są to liczby w hexie to podłącz wyjście z VISA Read do Hexadecimal String to Number i powinno być ok.
Re: Komunikacja rs 232
Pitol - i nic... nie działa.
- Załączniki
-
- RS232.vi
- (21.19 KiB) Pobrany 367 razy
-
- Posty: 641
- Rejestracja: 31 gru 2010 01:36
- Wersja środowiska: LabVIEW 2017
- Lokalizacja: Katowice
Re: Komunikacja rs 232
Jeśli taka jedna linia z terminala (np. "44 09") to jest jedna dwubajtowa liczba, ale nieformatowana (czysta liczba), to załącznik.
- Załączniki
-
- hex2num.vi
- (8.29 KiB) Pobrany 358 razy
- Pitol
- Moderator
- Posty: 982
- Rejestracja: 19 lip 2007 00:00
- Wersja środowiska: LabVIEW 2019
- Lokalizacja: Kraków
Re: Komunikacja rs 232
Przepraszam... na odwrót cały czas mówiłem. Nie chciało mi się sprawdzać...
Zastosuj rozwiązanie PiDi.
Zastosuj rozwiązanie PiDi.