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
RS232 Jak wysłać hex
- Pitol
- Moderator
- Posty: 984
- Rejestracja: 19 lip 2007 00:00
- Wersja środowiska: LabVIEW 2019
- Lokalizacja: Kraków
RS232 Jak wysłać hex
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.
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.
Re: RS232 Jak wysłać hex
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.
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.
- Pitol
- Moderator
- Posty: 984
- Rejestracja: 19 lip 2007 00:00
- Wersja środowiska: LabVIEW 2019
- Lokalizacja: Kraków
Re: RS232 Jak wysłać hex
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: 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.
Co do drugiego sposobu to tutaj masz pokazany przykład: 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.
Re: RS232 Jak wysłać hex
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.
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.
- Pitol
- Moderator
- Posty: 984
- Rejestracja: 19 lip 2007 00:00
- Wersja środowiska: LabVIEW 2019
- Lokalizacja: Kraków
RS232 Jak wysłać hex
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
Co do drugiego pytania to ciężko mi coś powiedzieć, z uwagi na zdanie powyżej