1

Téma: Prosím o radu

Můžete mi někdo poradit, teprve začínám s SDS-C a hned mám následující problém:

Posílám na UART různá data pomocí příkazu serial_text_out

serial_text_out(0x41); //zapíše znak A
serial_text_out('WXYZ 123  '); // korektně vypíše uvedené znaky

ale
var = i;
i = 3434;
serial_text_out('hodnota i = ', i);  //vypíše "hodnota i = j

to znamená, že z čísla 3434 se na UART nepošle 0x33, 0x34, 0x33, 0x34
ale pošle se 0xD6A   takže se zobrazí písmeno j

Řekl bych, že je to v rozporu s dokumentací funkce serial_text_out uvedené na http://wiki.merenienergie.cz/index.php/Sdsc_sysf

Poraďte prosím, jestli něco špatně chápu, nebo jestli je to chyba, případně jak jí obejít.

Díky

2

Re: Prosím o radu

Musim se podivat na to, jak to má být, abych mohl dát odpověď.
Řešením by bylo napsat to číslo do pole text[] a pak odeslat ven na UART z pole text[].

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

3

Re: Prosím o radu

adamn napsal:

Musim se podivat na to, jak to má být, abych mohl dát odpověď.
Řešením by bylo napsat to číslo do pole text[] a pak odeslat ven na UART z pole text[].


prozatím díky za nakopnutí


  sprintf(text[0], sys[310]);
  serial_text_out(0xAA, 0x54, 0x00, 0x00, 0x00, 0x82); // inicializace zápisu
  serial_text_out(' Teplota pracovna = ', text[0], 0x05, 'C'); //pošle na UART hex kód sys310
  serial_text_out(0xCC, 0x33, 0xC3, 0x3C); // dokončení zápisu

Takhle to funguje, nicméně postup dle dokumentace by byl výživnější

4

Re: Prosím o radu

X-Chaos napsal:

Můžete mi někdo poradit, teprve začínám s SDS-C a hned mám následující problém:

Posílám na UART různá data pomocí příkazu serial_text_out

serial_text_out(0x41); //zapíše znak A
serial_text_out('WXYZ 123  '); // korektně vypíše uvedené znaky

ale
var = i;
i = 3434;
serial_text_out('hodnota i = ', i);  //vypíše "hodnota i = j

to znamená, že z čísla 3434 se na UART nepošle 0x33, 0x34, 0x33, 0x34
ale pošle se 0xD6A   takže se zobrazí písmeno j

Řekl bych, že je to v rozporu s dokumentací funkce serial_text_out uvedené na http://wiki.merenienergie.cz/index.php/Sdsc_sysf

Poraďte prosím, jestli něco špatně chápu, nebo jestli je to chyba, případně jak jí obejít.

Díky

Mě to takhle funguje, ale potřeboval bych pravý opak, tedy

var PRE;
PRE = 0x2A;
serial_text_out(PRE); //dostanu v hexa 34 32 nebo v textu 42
jak docílit toho, aby to poslalo v hexa 0x2A přes proměnnou ?

5

Re: Prosím o radu

var PRE; 
PRE = 0x2A;
serial_text_out(PRE); // odešle 0x2A (jeden znak) na UART

Nebo taky přes text[] :

text[0] = 0x2A;
text[1] = 0x00;
serial_text_out(text[0]); // odešle 0x2A (jeden znak) na UART

Pokud však chcete odeslat textovou hodnotu proměnné (např. PRE = 1024, text je pak '1024'), musíte ji převést jako text do text[], a to pomocí funkce sprintf - viz WiKi.

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

6 Naposledy upravil: videoservis (2013-03-15 11:03:59)

Re: Prosím o radu

adamn napsal:
var PRE; 
PRE = 0x2A;
serial_text_out(PRE); // odešle 0x2A (jeden znak) na UART

Nebo taky přes text[] :

text[0] = 0x2A;
text[1] = 0x00;
serial_text_out(text[0]); // odešle 0x2A (jeden znak) na UART

Pokud však chcete odeslat textovou hodnotu proměnné (např. PRE = 1024, text je pak '1024'), musíte ji převést jako text do text[], a to pomocí funkce sprintf - viz WiKi.

Podle toho horního vzoru mi to nefunguje, jen podle toho s text[].

PRE = 0x2A;
serial_text_out(PRE); // odešle dva znaky 34 a 32 nikoli jeden 0x2A
alespoň tak se to chová v simulátoru SDS-C ver 6 A26, nebo B08

Zkusil jsem i tohle pomocí sprintf s tímhle výsledkem :
var PRE, ADR;
PRE = 0x2A;
ADR = 0xFE;
sprintf(text[0],PRE,ADR);
serial_text_out(text[0]); // UART output HEX = 34 32 32 35 34 //char 42254

ale já očekával UART HEX out 0x2A 0xFE

7

Re: Prosím o radu

Je možné že je chyba v simulátoru a ten to dělá opačně než jak se to děje v SDS.
Nechám to prověřit a opravit, pokud to tam je špatně.
Platí samozřejmě chování, které je v SDS.

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !