Pusty bufor VISA

Jeśli masz coś do powiedzenia w sprawie LabVIEW napisz. Tutaj są tematy, których nie można uściślić do innych działów.
MirekLabView
Posty: 6
Rejestracja: 30 mar 2014 23:38
Wersja środowiska: LabVIEW 2013

Pusty bufor VISA

Post autor: MirekLabView »

Witam wszystkich. To mój pierwszy wpis więc w razie jakiś błędów, omyłek proszę o wyrozumiałość :)
Posiadam Laserowy czujnik przemieszczenia który posiada RS232. Mam przejściówkę RS232-USB. Ściągnąłem sobie program hercules(narzędzie zawierające terminal dla portu Serial) i tam wysyłając komendę otrzymuje jakiś wynik.
ZHerculesad.jpg
Zrobiłem prosty program w LabView tylko żeby prawidłowo wysłać komendę i prawidłowo odebrać wynik.
VISAdd.jpg
Niestety nie mogę odebrać danych z bufora ponieważ cały czas dostaje wynik, że bajtów w porcie jest 0(Widzę to z włączonym Highlight Execution). I nie wiem zupełnie dlaczego;/ Jedyne co mi chodzi po głowie to to, że komenda nie została wysłana, ale jak i dlaczego to nie mam pojęcia. Nie wiem jak rozwiązać ten problem. Jeżeli kto coś wie to prosiłbym o rady.
Awatar użytkownika
J.Sz
Posty: 34
Rejestracja: 09 sty 2014 11:31
Wersja środowiska: LabVIEW 2014
Lokalizacja: Gliwice

Pusty bufor VISA

Post autor: J.Sz »

Spróbuj dodać na końcu komendy jeden ze znaków nowej lini \n \r tabele masz np tutaj: http://digital.ni.com/public.nsf/allkb/ ... BE005AB500
Musisz popróbować który to znak jeśli nie wynika to z dokumentacji.

Spróbuj tez dodać opóźnienie za bloczkiem VISA Write czasami urządzenie może potrzebować chwili na odpowiedź.

Jak nie pomoże to będziemy myśleć dalej:)
Ja tu tylko wklejam linki ale i tak możesz kliknąć pochwal ;)
Awatar użytkownika
Pitol
Moderator
Posty: 984
Rejestracja: 19 lip 2007 00:00
Wersja środowiska: LabVIEW 2019
Lokalizacja: Kraków

Pusty bufor VISA

Post autor: Pitol »

Spójrz na ten program "Hercules". Masz tam możliwość wyświetlania komendy w HEX. Zaznacz to i zobacz co dokładnie jest wysyłane.
Następnie kliknij prawym klawiszem na komendę w kodzie LabVIEW i wybierz Hex Display.
Porównaj oba ciągi znaków. Jeśli się różnią to zapewne sugestia J.Sz poprawi sytuację.
ObrazekObrazekObrazek
Chcesz taki podpis? Zajrzyj tutaj
Awatar użytkownika
cyjan1
Posty: 70
Rejestracja: 08 paź 2012 11:55
Wersja środowiska: LabVIEW 2017
Lokalizacja: podkarpacie

Re: Pusty bufor VISA

Post autor: cyjan1 »

Tak jak pisze kolega Pitol - oprócz znaków tekstowych wysyłasz dane w HEX.
Masz tam możliwość wyświetlania komendy w HEX. Zaznacz to i zobacz co dokładnie jest wysyłane.
Niestety zaznaczenie tego pola nie zamienia stringa na reprezentację w HEX. Na szczęście na stronie Herkulesa jest skromny opis programu :-).

Twoje polecenie wysyła ciąg 'MEASURE A' otoczony znakami 0x02 oraz 0x03. W kodzie ASCII te bajty nie mają reprezentacji literowej. Dlatego aby Twój program mógł takie znaki wysyłać trzeba wpisywać właśnie ciągi typu $YY. Hercules konwertuje taki ciąg na bajt o wartości HEX 0xYY.

Fragment ze strony Herculesa (http://www.hw-group.com/products/hercules/index_en.html):
The ASCII characters are sent by typing #xxx (where x is a number in 0...9), $yy (where y is a hex number) or for example for line feed or for carriage return. To send the character #, $ or < type ##, $$ and << respectively.
Natomiast w LabVIEW wpisywanie znaków HEX odbywa się w inny sposób. Najprościej: na stałej '$02MEASURE A$03' naciśnij prawym przyciskiem myszy i wybierz '\' Codes Display. Ciągi '$02' oraz '$03' zastąp ciągami '\02' oraz '\03' (Twoja stała powinna mieć wartość '\02MEASURE\sA\02'). Zauważ że np. spacja w tej reprezentacji została zamieniona na '\s'.
Dla nabrania doświadczenia możesz też przełączyć reprezentację tej stałej na 'HEX Display', 'Password Display' 'Normal Display'.
Pozdrawiam
Zenek
MirekLabView
Posty: 6
Rejestracja: 30 mar 2014 23:38
Wersja środowiska: LabVIEW 2013

Re: Pusty bufor VISA

Post autor: MirekLabView »

Wielkie dzięki;) Faktycznie 'Codes Display' i zamiana na '\02' '\03' pomogło. Po przeanalizowaniu zobaczyłem, że moja ramka składa się z 11 symboli:
STX M E A S U R E space A ETX
gdzie: STX - Start Of Text
ETX - End Of Text
Jestem jeszcze tylko ciekaw dlaczego wynik składa się z 9 symboli:
1: spacja
2-8: wynik czyli np.: +24.791
9: tutaj mam w indeksie górnym literkę L
Oczywiście nie jest to problem, "wyciągnę" sobie ten mój wynik jednak czemu otrzymuję aż 9 symboli...
Zauważyłem, że gdy z 'Codes Display' ( gdy już mam pozmieniane polecenie na prawidłowe: '\02MEASURE\sA\03') zmienie na 'Normal Display' to na początku polecenia wystepuje spacja a na końcu w indeksie górnym literka L. To raczej na pewno ma coś wspólnego z wynikiem ale prosiłbym o wyjaśnienie jakby ktoś miał chwilkę czasu:) Jednakże mój główny problem uważam za rozwiązany. Dziękuje wszystkim za pomoc.
Awatar użytkownika
cyjan1
Posty: 70
Rejestracja: 08 paź 2012 11:55
Wersja środowiska: LabVIEW 2017
Lokalizacja: podkarpacie

Re: Pusty bufor VISA

Post autor: cyjan1 »

Jestem jeszcze tylko ciekaw dlaczego wynik składa się z 9 symboli:
1: spacja
2-8: wynik czyli np.: +24.791
9: tutaj mam w indeksie górnym literkę L
Sam sobie odpowiedziałeś :-):
Zauważyłem, że gdy z 'Codes Display' ( gdy już mam pozmieniane polecenie na prawidłowe: '\02MEASURE\sA\03') zmienie na 'Normal Display' to na początku polecenia wystepuje spacja a na końcu w indeksie górnym literka L.


Twój wynik też ma format STX Jakiś_wynik ETX (czyli \02Jakiś_wynik\03). Najłatwiej to sprawdzisz zmieniając tryb wyświetlania kontrolki z wynikiem na '\' Codes Display.

STX, ETX, podobnie jak znak końca linii (\n) czy powrót karetki (\r) to tzw. znaki sterujące (control characters). Akurat w LabVIEW, w normalnym trybie wyświetlania, STX wygląda jak spacja a EXT jak L w górnym indeksie ale to pewnie też zaleźy od wybranego kroju pisma.

Poczytaj np. tu:
https://en.wikipedia.org/wiki/Control_character
https://pl.wikipedia.org/wiki/ASCII
Pozdrawiam
Zenek
ODPOWIEDZ