UnicodeをEUCコードに変換
マスコット   Windows10 PCアプリケーションの
 Convert_into_EUC は、
 全角文字の Unicode を
 EUCコードに変換する
 プログラムです。

  サンプルプログラム N446RE_MSP2807_10K などで、
 日本語表示を行う場合に、日本語の Unicode をEUCコードに変換して
 LCD文字表示関数に引数として渡します。



目次

アプリケーション Convert_into_EUCのダウンロード

アプリケーション Convert_into_EUCのインストール

アプリケーション Convert_into_EUCの動作
  1) Convert_into_EUCの起動
  2) UnicodeをEUCに変換
  3) EUCコードを使用して日本語を表示する例
  4) EUCコードの保存

EUCコードを使用して日本語を表示する例


アプリケーション Convert_into_EUCのダウンロード
  ここから、Windows10 PCアプリケーション、
 Convert_into_EUCのソースの圧縮ファイル

 Convert_into_EUC.zip をダウンロードしてください。

  Microsoft Visual Studio Community 2017の
 C#で作成したPCアプリケーションです。

  PCにMicrosoft Visual Studio Community 2017が
 インストールされている場合は、
 Convert_into_EUCのソースを見ることができます。


アプリケーション Convert_into_EUCのインストール
  解凍後、Convert_into_EUC/Convert_into_EUC/publish内の
 setup.exe を実行すると、アプリケーション Convert_into_EUC を
 PCにインストールすることができます。

setup.exe

 setup.exeをダブルクリックすると、次の警告のダイアログが開きます。

警告

 [インストール(I)] ボタンをクリックしてインストールしてください。

 プログラムがインストールされると、
 自動的にアプリケーション Convert_into_EUCが実行され、
 次のダイアログが表示されます。

Convert_into_EUC


アプリケーション Convert_into_EUCの動作

 1) Convert_into_EUCの起動

スタートメニュー

 スタートメニューの Revive/Convert_into_EUC をクリックすると、
 アプリケーション Convert_into_EUCが開きます。


 2) UnicodeをEUCに変換
  全角文字の部分に全角文字を入力して、変換ボタンをクリックすると、
 変換されたEUCコードが EUC の部分に表示されます。

  例として、"電子工作" を変換してみます。

UnicodeをEUCに変換

  "C5C5BBD2B9A9BAEE" が "電子工作" を変換したコードです。

  この場合、"電" が "C5C5" です。
  16bitコードの 0xC5C5 をASCII文字 "C5C5" 4byteに変換しています。

  "電子工作" で ASCII文字 16bytes になります。


 4) EUCコードの保存
  変換したEUCコードをファイルに保存することができます。

  [ファイルに保存]ボタンをクリックすると以下のような保存先を指定するための
 ダイアログが表示されます。

EUCコードの保存

  [保存(S)]ボタンをクリックすると、指定したファイル名で保存されます。
  デフォルトの名称は、全角文字の欄に入力した文字列になります。

  保存すると、以下のようにメッセージが表示されます。

保存メッセージ

  [OK]ボタンをクリックしてください。


 EUCコードを使用して日本語を表示する例
  EUCコードを使用した日本語表示例を紹介します。

  EUCコードをASCII文字列に変換して使用するので、例で示す "電子工作" は
 ASCII文字で 16文字になります。
  ECUコードとして 16文字渡しますが、表示文字数は 4 と指定します。

 サンプルプログラム N446RE_MSP2807_10K の
 LCD_Lib/Startup_LCD_SPI_ILI9341/Startup_LCD_SPI_ILI9341.c内の
 モジュール Startup_Screen_LCD_SPI_ILI9341 から、"電子工作" を表示する部分を
 抜き出して、以下に示します。


#ifdef def_USE_Font_Japanese
    //-----------------------------------------------------------------------
    // "電子工作" : 48 x 48 font : EUCコード : JIS X 208 の値 + 0x8080
    //-----------------------------------------------------------------------
    memcpy(GLB_uint8_Work_Draw_LCD, "C5C5BBD2B9A9BAEE", 16);
    STC_uint16_Font = (uint16_t)def_Font_48x48_JIS_X_0208;
#else  // def_USE_Font_Japanese
    //------------------------------------------------
    // "ELEC" : 48 x 48 dot
    //------------------------------------------------
    memcpy(GLB_uint8_Work_Draw_LCD, "ELEC", 4);
    STC_uint16_Font = (uint16_t)def_Font_48x48_ASCII;
#endif  // def_USE_Font_Japanese


    (*puint8_JobNum)++;  // 次の処理番号に移行する。
    int16_Return = -1;   // 処理継続
    break;

  case 5:
    //-----------------------------------------------------------------------
    // JIS X 0208 : "電子工作" : 48 x 48 dot
    //-----------------------------------------------------------------------

    //--------------------------------------------------
    // 縦長表示 左
    //--------------------------------------------------
    int16_Return = Display_String_SPI_ILI9341(&STC_uint8_JobNum_LCD,
                                              STC_uint16_Font,
                                              def_LengthwiseL, 0, (uint32_t)def_Code_Cyan,
                                              0, 0,
                                              4, GLB_uint8_Work_Draw_LCD);
    if(int16_Return == -1){
      // 処理中
      break;  // 処理番号維持 : 処理継続
    }


  上記では、#ifdef def_USE_Font_Japanese により、
 日本語表示かアルファベット表示かを選択するようになっています。

  N446RE_MSP2807_10K_Config/Dev_Conf.h 内で、
//----------------------------------------------
// 日本語を使用する場合、定義する。
//----------------------------------------------
#define def_USE_Font_Japanese
//----------------------------------------------
  が宣言されているので、日本語表示の方が選択されます。


  なお、モジュール Display_String_SPI_ILI9341 の引数は以下のようになっています。


//---------------------------------------------------------------------------
// LCD文字表示 : Font選択 : ILI9341
//---------------------------------------------------------------------------
// 引数:
// uint8_t *puint8_JobNum : 処理番号を格納する変数のポインタ

// uint16_t uint16_Font : font指定
//    0 : 8 x 8 font : ASCII
//    1 : 16 x 16 font : ASCII
//    2 : 32 x 32 font : ASCII
//    3 : 48 x 48 font : ASCII
//    4 : 8 x 8 font : JIS X 0208
//    5 : 16 x 16 font : JIS X 0208
//    6 : 32 x 32 font : JIS X 0208
//    7 : 48 x 48 font : JIS X 0208

// uint8_t uint8_Oblong : 縦長/横長
//    0 : Lengthwise : 縦長 左
//    1 : Lengthwise : 縦長 右
//    2 : WidthwiseL : 横長 左
//    3 : WidthwiseR : 横長 右

// uint8_t uint8_Type : 表示選択
//      0 : 通常表示
//      1 : 反転表示
//      2 : 通常表示の上書き
//      3 : 反転表示の上書き

// uint32_t uint32_ColorCode : カラーコード

// uint16_t uint16_StartX : 表示開始位置X
// uint16_t uint16_StartY : 表示開始位置Y

// uint16_t uint16_Length : 表示文字数
// uint8_t *puint8_Data : 表示文字コードが格納されているBufferのポインタ


// 戻り値:
//   -1 : 処理中
//    0 : OK終了
//    1 : NG終了
//---------------------------------------------------------------------------
int16_t Display_String_SPI_ILI9341(uint8_t *puint8_JobNum, uint16_t uint16_Font,
                                   uint8_t uint8_Oblong, uint8_t uint8_Type,
                                   uint32_t uint32_ColorCode,
                                   uint16_t uint16_StartX, uint16_t uint16_StartY,
                                   uint16_t uint16_Length, uint8_t *puint8_Data)



A+-2C (ええ加減にC) のページに戻る




 メールアドレス: apm2c.sumi@gmail.com

 なんでも、気軽に ご相談ください。
 担当:おの

マスコット
  えがおのでんし 案内