soros port ékezetes betű kezelése

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
cree
DrótVégénSzéndarab
Hozzászólások: 35
Csatlakozott: 2016. február 14. vasárnap, 19:17

soros port ékezetes betű kezelése

Hozzászólás Szerző: cree »

Soros port ékezetes betű kezelése vanak problémák !

Kód: Egész kijelölése

unsigned char thisByte[] = {
  "ÁÉÍÓÖŐÚÜŰ"}; // text out
int i=0;
 
void setup() {
  delay(1000);
  //Initialize serial and wait for port to open:
  Serial.begin(115200);
  while (!Serial) {
    ; // wait for serial port to connect.
  }
 
  // prints title with ending line break
  Serial.println("ASCII Table ~ Character Map");
}
 
void loop() {
  while (i<sizeof(thisByte))  {
    // prints value unaltered, i.e. the raw binary version of the
    // byte. The serial monitor interprets all bytes as
    // ASCII, so 33, the first number,  will show up as '!'
    Serial.write(thisByte[i]);   
 
    Serial.print(", dec: ");
    // prints value as string as an ASCII-encoded decimal (base 10).
    // Decimal is the  default format for Serial.print() and Serial.println(),
    // so no modifier is needed:
    Serial.print(thisByte[i]);     
    // But you can declare the modifier for decimal if you want to.
    //this also works if you uncomment it:
 
    // Serial.print(thisByte, DEC); 
 
 
    Serial.print(", hex: ");
    // prints value as string in hexadecimal (base 16):
    Serial.print(thisByte[i], HEX);     
 
    Serial.print(", oct: ");
    // prints value as string in octal (base 8);
    Serial.print(thisByte[i], OCT);     
 
    Serial.print(", bin: ");
    // prints value as string in binary (base 2)
    // also prints ending line break:
    Serial.println(thisByte[i], BIN);   
    delay(100);
    i++;
  }

És amit vissza ad rossz!

Kód: Egész kijelölése

ASCII Table ~ Character Map
Ă, dec: 195, hex: C3, oct: 303, bin: 11000011
�, dec: 129, hex: 81, oct: 201, bin: 10000001
Ă, dec: 195, hex: C3, oct: 303, bin: 11000011
‰, dec: 137, hex: 89, oct: 211, bin: 10001001
Ă, dec: 195, hex: C3, oct: 303, bin: 11000011
Ť, dec: 141, hex: 8D, oct: 215, bin: 10001101
Ă, dec: 195, hex: C3, oct: 303, bin: 11000011
“, dec: 147, hex: 93, oct: 223, bin: 10010011
Ă, dec: 195, hex: C3, oct: 303, bin: 11000011
–, dec: 150, hex: 96, oct: 226, bin: 10010110
Ĺ, dec: 197, hex: C5, oct: 305, bin: 11000101
�, dec: 144, hex: 90, oct: 220, bin: 10010000
Ă, dec: 195, hex: C3, oct: 303, bin: 11000011
š, dec: 154, hex: 9A, oct: 232, bin: 10011010
Ă, dec: 195, hex: C3, oct: 303, bin: 11000011
ś, dec: 156, hex: 9C, oct: 234, bin: 10011100
Ĺ, dec: 197, hex: C5, oct: 305, bin: 11000101
°, dec: 176, hex: B0, oct: 260, bin: 10110000

Miért is?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: soros port ékezetes betű kezelése

Hozzászólás Szerző: Robert »

A kulcsszó: kódlap.
A kódlapokban ami a közös: 32..127 kódú karakterek. Az e felettiek eltérő módon vannak definiálva.
Neked sosem ékezetes betűd van. Hanem pl. 65-s DECimális értékű byte-d- És ez valahogyan megjelenik - a kódlaptól függően.
Te nem "Á" betűt küldesz be, hanem a 194-es kódot (1 byte, mely 194-et jelent)


Tippek, kódtáblák:
http://www.lookuptables.com/ebcdic_scancodes.php
http://www.asciitable.com/
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: soros port ékezetes betű kezelése

Hozzászólás Szerző: kapu48 »

Használd inkább ezt a kód táblát:
http://www.ascii-code.com

Kód: Egész kijelölése

unsigned char thisByte[] = {
  193, 201, 205, 211, 214, 218, 220, 219};
 // "ÁÉÍÓÖŐÚÜŰ"}; // text out

Kód: Egész kijelölése

ASCII Table ~ Character Map
Á, dec: 193, hex: C1, oct: 301, bin: 11000001
É, dec: 201, hex: C9, oct: 311, bin: 11001001
Í, dec: 205, hex: CD, oct: 315, bin: 11001101
Ó, dec: 211, hex: D3, oct: 323, bin: 11010011
Ö, dec: 214, hex: D6, oct: 326, bin: 11010110
Ú, dec: 218, hex: DA, oct: 332, bin: 11011010
Ü, dec: 220, hex: DC, oct: 334, bin: 11011100
Ű, dec: 219, hex: DB, oct: 333, bin: 11011011

cree
DrótVégénSzéndarab
Hozzászólások: 35
Csatlakozott: 2016. február 14. vasárnap, 19:17

Re: soros port ékezetes betű kezelése

Hozzászólás Szerző: cree »

Köszönöm a megoldást! :)
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: soros port ékezetes betű kezelése

Hozzászólás Szerző: kapu48 »

Kód: Egész kijelölése

// Még jobb ha Serial Monitoron 1* bekéred az ékezetes karaktereket!
// 
unsigned char thisByte[17];
 //= {"ÁÉÍÓÖŐÚÜŰáéíóőóüű"}; // text out
int i=0;
 
void setup() {
  delay(1000);
  //Initialize serial and wait for port to open:
  Serial.begin(115200);
  while (!Serial) {
    ; // wait for serial port to connect.
  }
  Serial.println("Soros Monitor.");  
  Serial.println("Kerek 17 ekezetes betut ?"); 
  for(i=0; i<17; i++){
    Serial.print("? "); 
    while(Serial.available() == 0) {}      //  Vár 1 PC billentyűnyomásra + Enter
    thisByte[i] = Serial.read();
    Serial.print((String)thisByte[i]);  //  Visszaírja a PCn beírt KARAKTERT a monitorra
    Serial.print(", DEC = ");  //  Visszaírja a PCn beírt KARAKTER kódját
    Serial.print((uint8_t)thisByte[i], DEC);
    Serial.print(", HEX = ");
    Serial.println((uint8_t)thisByte[i], HEX);   
    i++;
  }
  i=0;

  // prints title with ending line break
  Serial.println("ASCII Table ~ Character Map");
}
 
void loop() {
  while (i<sizeof(thisByte))  {
    // prints value unaltered, i.e. the raw binary version of the
    // byte. The serial monitor interprets all bytes as
    // ASCII, so 33, the first number,  will show up as '!'
    Serial.write(thisByte[i]);   
 
    Serial.print(", dec: ");
    // prints value as string as an ASCII-encoded decimal (base 10).
    // Decimal is the  default format for Serial.print() and Serial.println(),
    // so no modifier is needed:
    Serial.print(thisByte[i]);     
    // But you can declare the modifier for decimal if you want to.
    //this also works if you uncomment it:
 
    // Serial.print(thisByte, DEC); 
 
 
    Serial.print(", hex: ");
    // prints value as string in hexadecimal (base 16):
    Serial.print(thisByte[i], HEX);     
 
    Serial.print(", oct: ");
    // prints value as string in octal (base 8);
    Serial.print(thisByte[i], OCT);     
 
    Serial.print(", bin: ");
    // prints value as string in binary (base 2)
    // also prints ending line break:
    Serial.println(thisByte[i], BIN);   
    delay(100);
    i++;
  }

}
8)
cree
DrótVégénSzéndarab
Hozzászólások: 35
Csatlakozott: 2016. február 14. vasárnap, 19:17

Re: soros port ékezetes betű kezelése

Hozzászólás Szerző: cree »

kapu48 írta:

Kód: Egész kijelölése

// Még jobb ha Serial Monitoron 1* bekéred az ékezetes karaktereket!
// 
unsigned char thisByte[17];
 //= {"ÁÉÍÓÖŐÚÜŰáéíóőóüű"}; // text out
int i=0;
 
void setup() {
  delay(1000);
  //Initialize serial and wait for port to open:
  Serial.begin(115200);
  while (!Serial) {
    ; // wait for serial port to connect.
  }
  Serial.println("Soros Monitor.");  
  Serial.println("Kerek 17 ekezetes betut ?"); 
  for(i=0; i<17; i++){
    Serial.print("? "); 
    while(Serial.available() == 0) {}      //  Vár 1 PC billentyűnyomásra + Enter
    thisByte[i] = Serial.read();
    Serial.print((String)thisByte[i]);  //  Visszaírja a PCn beírt KARAKTERT a monitorra
    Serial.print(", DEC = ");  //  Visszaírja a PCn beírt KARAKTER kódját
    Serial.print((uint8_t)thisByte[i], DEC);
    Serial.print(", HEX = ");
    Serial.println((uint8_t)thisByte[i], HEX);   
    i++;
  }
  i=0;

  // prints title with ending line break
  Serial.println("ASCII Table ~ Character Map");
}
 
void loop() {
  while (i<sizeof(thisByte))  {
    // prints value unaltered, i.e. the raw binary version of the
    // byte. The serial monitor interprets all bytes as
    // ASCII, so 33, the first number,  will show up as '!'
    Serial.write(thisByte[i]);   
 
    Serial.print(", dec: ");
    // prints value as string as an ASCII-encoded decimal (base 10).
    // Decimal is the  default format for Serial.print() and Serial.println(),
    // so no modifier is needed:
    Serial.print(thisByte[i]);     
    // But you can declare the modifier for decimal if you want to.
    //this also works if you uncomment it:
 
    // Serial.print(thisByte, DEC); 
 
 
    Serial.print(", hex: ");
    // prints value as string in hexadecimal (base 16):
    Serial.print(thisByte[i], HEX);     
 
    Serial.print(", oct: ");
    // prints value as string in octal (base 8);
    Serial.print(thisByte[i], OCT);     
 
    Serial.print(", bin: ");
    // prints value as string in binary (base 2)
    // also prints ending line break:
    Serial.println(thisByte[i], BIN);   
    delay(100);
    i++;
  }

}
8)

int változoba fix ékezetes szó amit megtudok hivni csak serial printin alat?
Serial.println(homerseglet);


ilyenre gondolok;
int homerseglet = {Hőmérséglet};
cree
DrótVégénSzéndarab
Hozzászólások: 35
Csatlakozott: 2016. február 14. vasárnap, 19:17

Re: soros port ékezetes betű kezelése

Hozzászólás Szerző: cree »

Kód: Egész kijelölése

    unsigned char thisByte1[] = 
    {72, 245, 109, 233, 114, 115, 233, 103, 108, 101, 116};  //Hőmérséglet
    int i=0;
     
    void setup() {
      delay(1000);
      //Initialize serial and wait for port to open:
      Serial.begin(9600);
      while (!Serial) {
        ; // wait for serial port to connect.
      }
     
      // prints title with ending line break
      Serial.println("ASCII Table ~ Character Map");
    }
     
    void loop() {
      while (i<sizeof(thisByte1))  {
  
        Serial.write(thisByte1[i]);   
     

        Serial.print(thisByte1[i]);     
 
     
     
   
        delay(100);
        i++;
      }

    }
serial porton igy jelenik meg sajnos....

Kód: Egész kijelölése

H72ő245m109é233r114s115é233g103l108e101t116
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: soros port ékezetes betű kezelése

Hozzászólás Szerző: kapu48 »

Nézdmeg a minta kódomat!

Kód: Egész kijelölése

 Serial.print((String)thisByte[i]);  //  Visszaírja a PCn beírt KARAKTERT a monitorra
cree
DrótVégénSzéndarab
Hozzászólások: 35
Csatlakozott: 2016. február 14. vasárnap, 19:17

Re: soros port ékezetes betű kezelése

Hozzászólás Szerző: cree »

kapu48 írta:Nézdmeg a minta kódomat!

Kód: Egész kijelölése

 Serial.print((String)thisByte[i]);  //  Visszaírja a PCn beírt KARAKTERT a monitorra
Végredmény még mindig ugyan az!

Serial.print((String)thisByte1);

H72ő245m109é233r114s115é233g103l108e101t116
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: soros port ékezetes betű kezelése

Hozzászólás Szerző: kapu48 »

Ez mért van benne?:
Serial.write(thisByte1); Ki íratod szám formályában ís?
cree
DrótVégénSzéndarab
Hozzászólások: 35
Csatlakozott: 2016. február 14. vasárnap, 19:17

Re: soros port ékezetes betű kezelése

Hozzászólás Szerző: cree »

kapu48 írta:Ez mért van benne?:
Serial.write(thisByte1); Ki íratod szám formályában ís?


Nekem csak ékezetes ascii kell megjelenités soros porton!
Sajnos van más probléma is hiába minden ez csak pc soros porton müködnek az ékezetes megjelenités bármilyen soredbe is !:(
Az ujabb ékezetes kitöltések helyén kérdöjelek vanak bluetools soros portos küldés hc-05 allat mindhiába ez az ékezetes nyüglödés!

BTserial.println(thisByte1);

végeredmény
H72?245m109?233r114s115?233g103l108e101t116
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: soros port ékezetes betű kezelése

Hozzászólás Szerző: Robert »

Kódtábla lehet ASCII mellett UTF-8 is! :)
Amíg nem azonos a küldő és a vevő oldalt a kódtábla - ezeket látod.
A HC-05/06 az a bejövő karaktert küldi át. Az Android UTF-8 formában kezeli/várja az ékezetes karaktert.... Ha úgy állítod be...
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: soros port ékezetes betű kezelése

Hozzászólás Szerző: kapu48 »

Kód: Egész kijelölése


     while (i<sizeof(thisByte1))  {
        Serial.print((String)thisByte1[i]);     
        i++;
      }
   Serial.println();
   i=0;
    while (i<sizeof(thisByte1))  {
       BTserial.print((String)thisByte1[i]);  
        i++;
      }
cree
DrótVégénSzéndarab
Hozzászólások: 35
Csatlakozott: 2016. február 14. vasárnap, 19:17

Re: soros port ékezetes betű kezelése

Hozzászólás Szerző: cree »

kapu48 írta:

Kód: Egész kijelölése


     while (i<sizeof(thisByte1))  {
        Serial.print((String)thisByte1[i]);     
        i++;
      }
   Serial.println();
   i=0;
    while (i<sizeof(thisByte1))  {
       BTserial.print((String)thisByte1[i]);  
        i++;
      }

Kód: Egész kijelölése


  #include <SoftwareSerial.h>
SoftwareSerial BTserial(2, 3); // RX | TX
        
        unsigned char thisByte1[] =
        {72, 245, 109, 233, 114, 115, 233, 103, 108, 101, 116};  //Hőmérséglet
        int i=0;
         
        void setup() {
          delay(1000);
          //Initialize serial and wait for port to open:
          Serial.begin(9600);
          BTserial.begin(115200);
          while (!Serial) {
            ; // wait for serial port to connect.
          }
         
          // prints title with ending line break
          Serial.println("ASCII Table ~ Character Map");
        }
         
        void loop() {
 while (i<sizeof(thisByte1))  {
        Serial.print((String)thisByte1[i]);     
        i++;
      }
   Serial.println();
   i=0;
    while (i<sizeof(thisByte1))  {
       BTserial.print((String)thisByte1[i]); 
        i++;
      
          }

        }

Még mindig probléma dec kirás megjelenik!

H72
ő245
m109
é233
r114
s115
é233
g103
l108
e101
t116
cree
DrótVégénSzéndarab
Hozzászólások: 35
Csatlakozott: 2016. február 14. vasárnap, 19:17

Re: soros port ékezetes betű kezelése

Hozzászólás Szerző: cree »

Robert írta:Kódtábla lehet ASCII mellett UTF-8 is! :)
Amíg nem azonos a küldő és a vevő oldalt a kódtábla - ezeket látod.
A HC-05/06 az a bejövő karaktert küldi át. Az Android UTF-8 formában kezeli/várja az ékezetes karaktert.... Ha úgy állítod be...
Igen erre gondoltam is!
De milyen apk bluetools terminal ba lehet ezt álitani karakter tipust?
Nagyon sok apkt kiprobaltam android alat bluetools terminalt egyik sem tutja kezelni ezt a hibát!
Érdekes BT terminal windows 8 mobile alat ok az ékezet kezelés.....
Válasz küldése