RS232 Jak wysłać hex

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.
nasiono
Posty: 21
Rejestracja: 11 sty 2012 22:44
Wersja środowiska: LabVIEW 2011

RS232 Jak wysłać hex

Post autor: nasiono »

Witam.
Mam kolejny problem. W mojm programie wprowadzam będę wprowadzał kilka zmiennych w postaci dziesiętnej np 1,2,3,255 teraz chodzi by przesłać taką ramkę przez rs232 ale w postaci hex czyli by przyjęła taki format 010203FF Niestety wszystkie próby z konwersja number -> hex konczą się niepowodzeniem przesyłana jest hex ale kodu ascii a nie o takie cos mi chodzi .
Pozdrawiam
Awatar użytkownika
Pitol
Moderator
Posty: 984
Rejestracja: 19 lip 2007 00:00
Wersja środowiska: LabVIEW 2019
Lokalizacja: Kraków

RS232 Jak wysłać hex

Post autor: Pitol »

Są dwa sposoby...
pierwszy: zmień sposób wyświetlania kontrolki/stałej string (prawym klawiszem -> Hex Display) i wtedy dopiero wpisz liczbę w HEX.
drugi: użyj bloczka Byte Array to String, który zamieni Ci liczbę (czy też tablicę liczb) na jej reprezentację w ASCII, co pozwoli podpiąć to do bloczka VISA Write.
ObrazekObrazekObrazek
Chcesz taki podpis? Zajrzyj tutaj
nasiono
Posty: 21
Rejestracja: 11 sty 2012 22:44
Wersja środowiska: LabVIEW 2011

Re: RS232 Jak wysłać hex

Post autor: nasiono »

Nie zrozumiałem zbyt dobrze.
Co do pierwszego sposobu to chce wprowadzać dane w systemie dziesiętnym na wyjściu chce otrzymać jej reprezentacje 16-tkową.
W drugim sposobie mógł bym prosić o przykład z wykorzystaniem pojedynczej kontrolki number? Próbuje podciągnąć to pod Byte Array to Stringale mam komunikat o niekompatybilności typów.
Awatar użytkownika
Pitol
Moderator
Posty: 984
Rejestracja: 19 lip 2007 00:00
Wersja środowiska: LabVIEW 2019
Lokalizacja: Kraków

Re: RS232 Jak wysłać hex

Post autor: Pitol »

Wszystko zależy w jaki sposób podajesz wejściowe dane. Jeśli jest to wynik jakiś innych funkcji, które zwracają wartość w postaci numeric to drugi sposób jest odpowiedni. Jeśli podajesz zawartość ramki z kontrolki String to pierwszy sposób jest odpowiedni.

Co do drugiego sposobu to tutaj masz pokazany przykład:
FrameRS.gif
Użyte bloczki to:
- Type Cast (z palety Numeric -> Data Manipulation)
- Byte Array to String (z palety String -> Conversion)

Zasada jest taka: należy liczbę (czy to z kontrolki czy ze stałej) zamienić na tablicę U8. Jak widzisz w przykładzie stała A805 ma reprezentację U32 co spowodowało, że tablica wyjściowa zawiera 4 elementy. I teraz od Ciebie zależy, jak to ogarniesz. Jeśli, tak jak piszesz, wprowadzasz w programie parametry za pomocą kontrolek numerycznych, to możesz każdą z nich w ten sposób zamienić na String a potem poszczególne elementy połączyć (bloczkiem Concatenate). Pamiętaj, żeby kontrolki były typu U8, to nie będziesz musiał się pozbywać niepotrzebnych zer.
ObrazekObrazekObrazek
Chcesz taki podpis? Zajrzyj tutaj
nasiono
Posty: 21
Rejestracja: 11 sty 2012 22:44
Wersja środowiska: LabVIEW 2011

Re: RS232 Jak wysłać hex

Post autor: nasiono »

Dziękuje za wskazówki nie za bardzo ogarniam LV.
Zastosowałem wskazówki lecz pominąłem niektóre rzeczy teraz wszytko wygląda że działa ok moje pytanie czy pominięcie tych rzeczy skutkuje jakimiś problemami których nie widać na pierwszy rzut oka?

Następne pytanie to fakt że bez opcji nadawania licznik prawidiłowych ramek oscyluje w około 5000/s Z opcją nadawania choćby jednego znaku spada do ~980/s. Próby zwiększenia predkosci powyzej 115200 skutkuje poważnym spadkiem o kilkaset ramek. Mikroprocesor nadaje w full-duplexie korzystając z dobrodziejstw typu DMA i przerwań więc sądze że się wyrabia.
Załączniki
pg1.png
Awatar użytkownika
Pitol
Moderator
Posty: 984
Rejestracja: 19 lip 2007 00:00
Wersja środowiska: LabVIEW 2019
Lokalizacja: Kraków

RS232 Jak wysłać hex

Post autor: Pitol »

Rozwiązanie jak najbardziej poprawne, rano jest, myślenie mi się nie włączyło jeszcze ;)

Co do drugiego pytania to ciężko mi coś powiedzieć, z uwagi na zdanie powyżej :D
ObrazekObrazekObrazek
Chcesz taki podpis? Zajrzyj tutaj
ODPOWIEDZ