Strona 1 z 1

RS232 Jak wysłać hex

: 21 cze 2012 07:46
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

RS232 Jak wysłać hex

: 21 cze 2012 08:01
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.

Re: RS232 Jak wysłać hex

: 21 cze 2012 09:29
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.

Re: RS232 Jak wysłać hex

: 21 cze 2012 09:51
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.

Re: RS232 Jak wysłać hex

: 21 cze 2012 10:21
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.

RS232 Jak wysłać hex

: 21 cze 2012 10:31
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