Forum

Forum

Převod DEC to HEX
 
Notifications
Clear all

Převod DEC to HEX

8 Posts
3 Users
1 Reactions
545 Views
(@petrp)
Estimable Member
Joined: 6 years ago
Posts: 154
Topic starter  

Ahoj, umí Loxone nějakým způsobem převod decimální hodnoty na HEX v rámci nějakého bloku? Dále aby tento výstup poskytoval jako hodnotu? Děkuji za radu a přeji hezký den.Petr


   
Quote
(@smotek7)
Member
Joined: 7 years ago
Posts: 1914
 

Prevod DEC to HEX nevie.
Asi by si si to vedel poskladat s viacerych blokov.
Skus upresnit co potrebujes , asi to nieje prevod cisel 0-255 do HEX.


   
ReplyQuote
(@petrp)
Estimable Member
Joined: 6 years ago
Posts: 154
Topic starter  

Potřebuji ovládat hlasitost AV receiveru přes digitální výstup. Příkaz vypadá takto: ISCP\x00\x00\x00\x10\x00\x00\x00\x08\x01\x00\x00\x00!1MVL28\x0D

to číslo (28) v předposledním bloku je hlasitost v HEXa - když tam dám <v> můžu hodnotu měnit, ale nyní jen v desítkové soustavě, což není plynulé. vždy mi to po deseti skočí o 6 úrovní výše. Volume z bloku audiopřehrávače je v DEC.

Umím to udělat přes status, hold tam zadám všechny úrovně a i to převedu z DEC na HEX, ale výstup je textový a ten neumím zadat jako <v>


   
ReplyQuote
(@kubikm)
Active Member
Joined: 1 year ago
Posts: 13
 

Nejjednodušeji to jde udělat přes blok Program:

image

kde v Programu je (například):

while(1)
{
	int val_i = getinput(0);
	char val_str[2];
	if(val_i > 255)
	{
		val_i = 255;
	}
	if(val_i < 0)
	{
		val_i = 0;
	}
	sprintf(val_str, "%02x", val_i);
	for(int i = 0; i < 2; i++)
	{
		if(val_str[i] == 'a') val_str[i] = 'A';
		if(val_str[i] == 'b') val_str[i] = 'B';
		if(val_str[i] == 'c') val_str[i] = 'C';
		if(val_str[i] == 'd') val_str[i] = 'D';
		if(val_str[i] == 'e') val_str[i] = 'E';
		if(val_str[i] == 'f') val_str[i] = 'F';
	}
	setoutputtext(0, val_str);
}

Pokud nejsou nutná velká písmena, může se cyklus for() vypustit. PS: zkoušel jsem v sprintf() použít "%02X" a to nefunguje (to by mělo rovnou udělat velká písmena).

 

Pak to můžete dát rovnou na virtuální výstup. V příkazu použijte <v> (něco jako ...1MVL<v>...; to už nejspíše máte), mělo by si to poradit s číslem i s textem.

Příkaz se odešle při každé změně hodnoty.

image

   
smotek7 reacted
ReplyQuote
(@petrp)
Estimable Member
Joined: 6 years ago
Posts: 154
Topic starter  

Moc děkuji, program funguje, ale bohužel to nejde vložit do toho příkazu.

<v> umí vložit jen číslo a ne text. To je asi vlastnost toho virtuálního výstupu. Pokud na ten virtuální výstup vložím číslo třeba z toho audio přehrávače, tak to funguje. Pokud tam vkládám číslo z textového výstupu, tak už to nejde.


   
ReplyQuote
(@kubikm)
Active Member
Joined: 1 year ago
Posts: 13
 

@petrp Můžete poslat nastavení toho virtuálního výstupu? Posílání textu funguje, nejspíše to máte někde špatně nastavené.


   
ReplyQuote
(@petrp)
Estimable Member
Joined: 6 years ago
Posts: 154
Topic starter  
lox1
lox2
lox3

   
ReplyQuote
(@petrp)
Estimable Member
Joined: 6 years ago
Posts: 154
Topic starter  

Pokud to udělám takto, tak to funguje, ale mezi 10 a 11 to skočí nahlas o 6

lox4

   
ReplyQuote
Share: