Domů Nápověda Vyhledávání Přihlásit Registrovat
Novinky:               PROSÍME VŠECHNY UŽIVATELE, PŘED POUŽITÍM DISKUSÍ ČTĚTE MÍSTNÍ PRAVIDLA! ZDE ...!


+  Diskuse Elektrika.cz
|-+  HYBRIDNÍ zóna
| |-+  Firemní podpora
| | |-+  TECO - Foxtrot chytré instalace. ODBORNÍCI radí spotřebitelům!
| | | |-+  Technická podpora výrobce TECO Kolín radí odborníkům
| | | | |-+  Jak převést ascii cód znaku v usint na string ?
0 uživatelů a 1 Host prohlíží toto téma. « předchozí další »
Stran: [1] Dolů Poslední příspěvky Tisk

Upozornění!
Odpovědi na témata nejsou právně závazné!
Na elektrickém zařízení smí pracovat pouze osoba s příslušnou kvalifikací dle nařízení vlády 194/2022 Sb. Podrobnosti zde!

Autor Téma: Jak převést ascii cód znaku v usint na string ?  (Přečteno 4608 krát)
Jiri Dvorak
Neverifikovaný uživatel @5
*****
Offline Offline



« kdy: 14.09.2020, 18:02 »

Mám pole usintu ve kterém mám číselne kódy znaků a potřebuji je převést na string.
Jediné řešené na které jsem přišel je vytvořit pointer to string a do nej vložit počáteční  adresu,
....
VAR
   RxData : array[0..5] of usint := [84,101,115,116,0];
   PntStr : ptr_to string;
   Str : String[4];

  END_VAR


  PntStr := adr(RxData[0]);
  Str := PntStr^;


což funguje ... ale ..
Pravidla diskusí   Nahlásit moderátorovi   Stěžovat si na moderátora   Zaznamenáno
Pavel Sovička
Neverifikovaný uživatel @4
***
Offline Offline



« Odpověď #1 kdy: 14.09.2020, 20:10 »

Programovací jazyk v příkladu vypadá jako strukturovaný text. Podle konkrétního prostředí (já znám Codesys 2) by mohly být k dispozici konverzní funkce. V nápovědě prostředí bych tedy zkusil pohledat "Type conversion",  měla by to být samostatná kategorie funkcí a někde v ní by mohla být funkce "uint_to_string()",  která toto korektně řeší. Popř. by mohla být k dispozici "int_to_string()" a jelikož rozsah "usint" je jen podmnožinou "int" tak by to stále mělo fungovat správně.
Pravidla diskusí   Nahlásit moderátorovi   Stěžovat si na moderátora   Zaznamenáno
Jiri Dvorak
Neverifikovaný uživatel @5
*****
Offline Offline



« Odpověď #2 kdy: 14.09.2020, 23:11 »

int_to_string k dispozici je, ale ten proste vem cislo trabas 97 a z int udela string se znaky 97
ja potebuju dle ascii prevest "97" na "a"
a ano je to ST-cko
Pravidla diskusí   Nahlásit moderátorovi   Stěžovat si na moderátora   Zaznamenáno
Jakub Steklý
Neverifikovaný uživatel @1

Offline Offline



WWW
« Odpověď #3 kdy: 15.09.2020, 09:47 »

možná trochu zaostale, ale jestli je potřebovat převádět pouze několik písmen/čísel tak je možná rychlejší si napsat dekodér...

Kdysi jsem si ho takhle psal na dekódování znaků ASCII ze stringu, ale pouze čísla, kterých je méně  Mrknutí
Pravidla diskusí   Nahlásit moderátorovi   Stěžovat si na moderátora   Zaznamenáno
Jiri Dvorak
Neverifikovaný uživatel @5
*****
Offline Offline



« Odpověď #4 kdy: 15.09.2020, 13:11 »

od externi zařízení mi příjde toto:
Cmd#12#Heslo#12.1#12.3#12.4;
a to potřebuji rozbrourat na:
 TOutCmdPrs : struct
            Cmd : string[10]; 
            Id  : usint;       
            Pswd : string[10]; 
            RValues : array[0..CTOutCmdPrs_NmVl] of real;
 end_struct;


ale v podstatě, vyřešeno, použil jsem tu vopičárnu s tím poiterem ....
Pravidla diskusí   Nahlásit moderátorovi   Stěžovat si na moderátora   Zaznamenáno
Pavel Sovička
Neverifikovaný uživatel @4
***
Offline Offline



« Odpověď #5 kdy: 15.09.2020, 19:58 »

Tak dobrá vůle kompilátoru je mnohdy postačující. V Cčku se to řeší přetypováním, což nevím jestli strukturovaný text umí. Co by ale umět měl je datový typ union:
https://help.codesys.com/webapp/_cds_datatype_union;product=codesys;version=3.5.12.0
https://forge.codesys.com/forge/talk/Engineering/thread/c408834957/

Ve stručnosti, union je zapsaný podobně jako struktura (shodný je i přístup přes tečku),  ale je to jeden paměťový prostor reprezentovaný několika různými datovými typy. Podle toho na který datový typ se přistupuje, tak se kompilátor chová. Takže je možné vytvořit union z typů "usint" a "string". Do "usint" části zapsat číslo a ze "string" části přečíst písmeno.
Pravidla diskusí   Nahlásit moderátorovi   Stěžovat si na moderátora   Zaznamenáno
Juraj Rojko
*
Offline Offline



« Odpověď #6 kdy: 15.09.2020, 21:43 »

...Co by ale umět měl je datový typ union...

UNION je obsažen až v novější verzi jazyka ST, kterou (BOHUŽEL!) Foxtrot nepodporuje.
Pravidla diskusí   Nahlásit moderátorovi   Stěžovat si na moderátora   Zaznamenáno
Luboš Urban
Neverifikovaný uživatel @5
*****
Offline Offline



« Odpověď #7 kdy: 16.09.2020, 16:49 »

Pokud by deklarace byla globální, tak lze vytvořit Str jako alias

VAR_GLOBAL
   RxData : array[0..5] of usint := [84,101,115,116,0];
   Str AT RxData : String[6];
END_VAR

a pak při zobrazení proměnné Str bude vidět 'Test'.
Pravidla diskusí   Nahlásit moderátorovi   Stěžovat si na moderátora   Zaznamenáno
Stran: [1] Nahoru Poslední příspěvky Tisk 
« předchozí další »
SLEDUJTE PODOBNÁ TÉMATA ZDE!

Příbuzné diskuse a články z Elektrika.cz

 Lze přecházet mezi FoxTool a Mosaic bez nutnosti výměny jednotek?
 Jak řešit dvojstisk/trojstisk tlačítka v prostředí Mosaic (strukturovaný text)?
 Ako pouzit Mosaic (SW) s CU2-01M jednotkou?
 Jak dostat NSlookUP do globalnich dat?
 Lze změnit podobu webového rozhraní projektu ve FoxToolu?
 Byl by zajem o utilitku pro sber dat z Foxtrotu?
 Co je to "0:[Xpro:Error] SYSGEN\ZAPOTOCI_PLC1$2.MAS (2806): unknown POU name"?
 Pracuje Mosaic správně s polem ukazatelů na BOOL?
 Proč v průzkumníku knihoven nelze načíst *.MJF soubory?
 Fóry foxtrotího fóra?
 jak funguje #def v Mosaicu?
 Jak v Mosaicu generovat náhodná čísla?
 Jak nadefinovat C-RC-0003R v Mosaicu 2013.1 SP2 / 2013.3?
 Proc po kompilaci nefunguje odesilani hodnot?
 Dá se propojit program z Mosaicu s programem v Reliance?
 Jak správně použít funkci SunAzimuth?
 Existuje volná implementa m-busu do mosaicu?
 Je toto chyba v mosaic při určité definici vlastního typu proměnné ?
 Proč nelze vytvořit nový projekt v Mosaic 2014.1 RC3?
 Co u CP 1000 znamená error A3-00-3805?
 Existuje pro CP1000 mosaic detekce změny hodiny skutečného času?
 Jak nakonfigurovat modul GSM2-01 k CP-1000 v Mosaicu?
 Jak regulovat třícestný ventil v Mosaicu?
 Jak změnit konstantu LONG_CLICK_TIME v Mosaicu?
 Jak změnit hodnotu RGB_STEP a stmívání konkrétního světla přes web?
 Jak v nahradit v jazyce CFC void?
 Jak ve Web Maker zobrazit obrázek ze souboru?
 Jak nastavit sériový kanál CP1000 CH2 v Mosaicu?
 Jak se připojit k Mosaicu přes internet?
 Je nějak v CP1000 omezena paměť pro proměnné ukládané do Global Retain?
 Jak řešit chybu dialogu na panelu ID18?
 Jak obcházíte v CFC nemožnost přiř. polí do vstupních proměnn. funkčního bloku?
 Proč nelze přepínat do relátkového zobrazení v Mosaicu?
 Co znamená v Mosaicu chyba při překladu "nedostatek 'R' operandů"?
 Je v Mosaicu nějaká obdoba křížových referencí?
 Je možné definovat místo v paměti pro danou instanci?
 Obsahuje simulator PLC v Mosaicu take simulator webserveru ?
 Dělal někdo fb na komunikaci s meteostanici Netatmo?
 TECO: Nová verze Mosaicu ke stažení
 Jak ošetřit chybové stavy v PLC?
 Mohli byste mi prosím pomoci s vytvořením programu v jazyce ST?
 Proč nenajde Mosaic 2015.4 HW klíč ve Windows 10 a RDP spojeni?
 TECO: Nová verze Mosaicu 2015.4
 Bude Mosaic možné provozovat v prostředí Linux?
 Jak zabranit restartu Windows 10 64 build 10656 po zasunuti HW klice?
 Jak zvysit pocet svetel v LightsLib?
 Poskytne někdo jednoduché programy pro Tecomat?
 Kdo mi naprogramuje v Praze PLC Tecomat?
 Prečo od 24.3.2016 nefunguje komunikácia so serverom YahooWeather?
 Ako rozbehat CP-1000KEY2-01+Mosaic z různých komponent?
 Jaký je rozdíl v licencích na Mosaic?
 Ako aktivovať podsvietenie ID-31 pri zobrazení alarmu?
 Lze provozovat Mosaic na Windows server 2008/2012?
 Jak spravne nastavit kanal komunikace GSMLib?
 Proč Mosaic neukazuje v datové struktuře pro modul C-RQ-0600 hodnotu pro CO2?
 Jak simulovat přítomnost osob v MOSAIC?
 Lze do vlastní knihovny zahrnout POU "Program"?
 Jak vyřešit komunikaci GSM UC-1205 s CP-1001 připojenou na kanálu CH1 RS232?
 Existují knihovny pro řízení krokového motoru pro Foxtrot 1003?
 Potřebuji HW klíč když chci komunikovat přes ethernet v režimu UNI?
 Lze nejak zjistit, ze modul na R-Fox poslal novou hodnotu?
 Jakým způsobem se dá provádět zápis do proměnné v jazyce ST?
 Jak vytvořit set/reset proměnné v CFC?
 Jak v Mosaicu adresovat proměnné tak, aby panel Weintek s PLC komunikoval?
 Ako do podadresara v korenovom www zapisovat z vonka z PC?
 Lze u modulu C-IB-1800M nastavit úrovně vyhodnocení?
 Lze u modulu C-IB-1800M vyčíst hodnotu odporu smyčky?
 Jak přecházet pomocí stavu proměnné mezi stránkami - WebMaker?
 Jaké je správné vyhodnocení funkce "real_to_string()"?
 TECO vydalo novou verzi Mosaic 2018.2
 Jak "odchytit" stlačení tlačítka pro odeslání?
 Lze v mosaicu zakázat optimalizaci uživ. registrů? Či jiné řešení problému?
 Ako správne nastaviť a skompilovať Dataloger?
 Jak kombinovat program v .CFC s programem v .ST ?
 Jak ve Webmakeru vnořit do sebe dvě pole?
 Lze ve webmakeru vytvořit slidovací prvky? šoupátka pro ID 31-36?
 Jak je to s omezeními Mosaic Lite? Jsou zde rozdíly v kombinaci s Foxtrot 2?
 Jak lze v Mosaicu redefinovat promene?
 Jak rozchodit v Mosaicu synchronizaci času PLC přes NTP server??
 Jak se řeší v Mosaicu proporcionální řízení hlavice C-HC-0201F-E?
 Jak se vzdáleně připojit na PLC přes veřejnou IP?
 Jak odstranit error ID20 na YahooWeather?
 Existuje firma / programátor u koho lze objednat programování TECO?
 Je mozne u FB pouzit ve VAR_INPUT promenou typu ARRAY?
 Proč Mosaic ztrácí spojení s Foxtrotem v gigabit LAN na které běží streamování?
 Jak proměnné uložit do paměti PLC, změnit a obnovit?
 Jak udělat ve WebMakeru prohlížeč alarmů?
 Jak konvertovat ascii code znaku na string?
 Jak u MOSAIC funguje stažení programu z PLC?
 Jak odesílat data přes JSON nebo XML z Arduina nebo ESP32 na Foxtrot?
 Ako z prostredia Mosaic interpretovať namerané dáta online?
 Jak v Mosaicu počítat počet sepnutí výstupu?
 Dá se někde reportovat chyba v Mosaicu?
 Je možné sloučení projektu v PLC a Mosaic?

Příbuzné diskuse a články z Kutil.elektrika.cz

Aktuální slova (1)



Poháněno MySQL Poháněno PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines Validní XHTML 1.0! Validní CSS!
+420 910 100 100
Stránka vytvořena za 0.037 sekund, 23 dotazů.