AGP-Eclipse-Arduino-Greek-Encoding...

Συζητήσεις για την γλώσσα C και C++

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
agorts
Δημοσιεύσεις: 5
Εγγραφή: 18 Δεκ 2010 08:44

AGP-Eclipse-Arduino-Greek-Encoding...

Δημοσίευση από agorts » 26 Δεκ 2010 09:35

1) Διαπίστωσα ένα περίεργο θέμα με τα ελληνικά και το eclipse - arduino...

Το παρακάτω κώδικα εάν τον τρέξω στο eclipse με encoding Cp1253 (default sto eclipse) ο κώδικας στη TransformChar που ψάχνει στη ChrsTblConvertSource και αντικαθιστά με το αντίστοιχο γράμμα από ChrsTblConvertTarget δουλεύει σωστά!!! Αν αλλάξω το εncoding σε UTF-8 (ή αν το τρέξω στο ArduinoIDE) τότε δεν δουλεύει σωστά...

Να επισημάνω ότι κάθε φορά που αλλάζω encoding, ξαναγράφω τα ελληνικά (στο ChrsTblConvertSource αλλά και στο DisplayText call στο setup)....

Κώδικας: Επιλογή όλων

  #include "WProgram.h"

    extern "C" void __cxa_pure_virtual() {
      cli();
      for (;;);
    };

    const String ChrsTblSpecialChars = "gdtlkpsfcw";
    const String ChrsTblConvertSource = "άέίόύήώ";
    const String ChrsTblConvertTarget = "AEIOYHw";

    void DisplayChar(char AChar);
    void DisplayText(String AText);
    char TransformChar(uint8_t AChar);

    void setup() {
      Serial.begin(9600);
      DisplayText("άέίόύήώ");
    }

    void loop() {
    }

    int main(void) {
       init();
       setup();
       for (;;) loop();
       return 0;
    }

    void DisplayText(String AText){
      char chrChar;
      bool boolUnicode = false;

      Serial.println("");
      Serial.println("Start.........");
      for &#40;unsigned int i=0; i < AText.length&#40;&#41;; i++&#41;&#123;
        chrChar = AText.charAt&#40;i&#41;;
        boolUnicode = &#40;&#40;int&#40;chrChar&#41; == -50&#41; || &#40;int&#40;chrChar&#41; == -49&#41;&#41;;
        if &#40;boolUnicode&#41; chrChar = AText.charAt&#40;++i&#41;;     // unicode
        DisplayChar&#40;chrChar&#41;;
      &#125;
    &#125;

    void DisplayChar&#40;char AChar&#41;&#123;
      char chrLCDChar;
      int iSpecialChr = 0;

      chrLCDChar = TransformChar&#40;AChar&#41;;
    &#125;

    char TransformChar&#40;uint8_t AChar&#41;&#123;
      char Result;
      int iAscii = int&#40;AChar&#41;;   // In Arduino this is a signed int -128..128, in C++ it is an unsigned 0..255
      int iPos;

      Serial.print&#40;"---, AChar&#58; "&#41;;
      Serial.print&#40;AChar&#41;;
      Serial.print&#40;", iAscii&#58; "&#41;;
      Serial.print&#40;iAscii&#41;;
      iPos = ChrsTblConvertSource.indexOf&#40;AChar&#41;;       // find chars which must be converted...
      Serial.print&#40;", iPos&#58; "&#41;;
      Serial.print&#40;iPos&#41;;
      if &#40;iPos > -1&#41; &#123;
        Result = ChrsTblConvertTarget.charAt&#40;iPos&#41;;
      &#125;
      else Result = AChar;
      Serial.print&#40;"---, Result&#58; "&#41;;
      Serial.println&#40;Result&#41;;
      return Result;
    &#125;
Μπορεί κάποιος να μου το εξηγήσει???

2) Με ποιο encoding Θα έπρεπε να δουλεύω??? Το UTF-8 dείχνει να είναι το default gια το ArduinoIDE και το Cp1253 δείχνει να είναι το default για το eclipse...

Απάντηση

Επιστροφή στο “C, C++”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης