RL78マイコン基板(RL78/G13)|KurumiWriter(改)で書き込んで自作utf8to932コマンドで日本語表示
2つ前のエントリで改造したKurumiWriterを使った後はコマンドプロンプトのmodeコマンドとmoreコマンドの
組み合わせでRL78/G13と通信(シリアルモニタ)出来るようになっていることに前のエントリで気付いたのですが、
以前のエントリのようにルネサスWebコンパイラでSerial.print()の引数に日本語を書いていた場合には、それが
文字化けして表示されます。この際ですので、文字化けせずに表示されるようにコマンドを1つ自作してみました。
単にUTF-8からSJISへ漢字コードを変換しているだけなのですが、試しに汎用的な漢字コード(文字コード)変換
ツールを幾つか使ってみたところ、今回のようにリアルタイムで1行づつ入力されるデータをリアルタイムで1行
づつ出力することが出来なかったり(入力や出力でバッファリングが行われていてデータが充分に溜まった時点で
まとめて変換される)、COMポートに対して使えなかったり、といった状況でしたので自作することにしました。
(とは言え、エラーチェックを何もしていないところなど、ちょっと後ろめたい気持ちがない訳ではないですが。)
mode COM14 dtr=on > nul & mode COM14 baud=9600 parity=n data=8 stop=2 to=off dtr=off & utf8to932 < \\.\COM14

KurumiWriter V1.00(ソース公開版)の改造に使用したVisual C++ 2010 Express SP1で作成

// utf8to932.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//
#include "stdafx.h"
#include "windows.h"
#define BUFSIZE 1024
int _tmain(int argc, _TCHAR* argv[])
{
// for (;;) {} /* プロジェクトのプロパティで“デバッグ”の“アタッチ”を“はい”にしておく */
CHAR buff[1024BUFSIZE];
WCHAR wbuff[1024BUFSIZE];
for (;;)
{
buff[0] = '\0';
wbuff[0] = '\0';
fgets(buff,sizeof(buff)BUFSIZE, stdin);
MultiByteToWideChar(CP_UTF8, 0, buff, -1, wbuff,sizeof(wbuff)/*しまった、バイト数でなく配列数だった*/BUFSIZE);
WideCharToMultiByte(CP_ACP, 0, wbuff, -1, buff,sizeof(buff)BUFSIZE, NULL, NULL);
fputs(buff, stdout);
}
return 0;
}
ビルドしたプログラムは以下の通りです。(ちなみに、バッファオーバーフローはさせないようにして下さい。)
ファイル:utf8to932.7z
ファイル: utf8to932.7z (2016/09/28更新)
追記 : メモ
参考にさせて頂いたブログ
SJISとUTF8の漢字コード変換 - Minoru Hatada
http://home.a00.itscom.net/hatada/windows/tips/sjis2utf8.html
追記 : メモ
MultiByteToWideChar - MSDN
https://msdn.microsoft.com/ja-jp/library/cc448053.aspx
WideCharToMultiByte - MSDN
https://msdn.microsoft.com/ja-jp/library/cc448089.aspx
追記 : メモ
試させて頂いた記事やブログ
libiconv - 瀬川 博人 - 株式会社システムエージェントジャパン
インストール(Windowsプリコンパイル版)
http://saj.co.jp/techinfo/htmls/other-libiconv-install_windows_precompile.html
ダウンロードファイル
http://ftp.jaist.ac.jp/pub/GNU/libiconv/libiconv-1.9.1.bin.woe32.zip
(http://ftp.jaist.ac.jp/pub/GNU/libiconv/)
http://ftp.jaist.ac.jp/pub/GNU/gettext/gettext-runtime-0.13.1.bin.woe32.zip
(http://ftp.jaist.ac.jp/pub/GNU/gettext/)
@IT > Windows Server Insider > Tech TIPS - アイティメディア株式会社
nkfツールで文字コードを変換する(Windows編)
http://www.atmarkit.co.jp/ait/articles/1301/25/news092.html
ダウンロードファイル
http://www.vector.co.jp/download/file/win95/util/fh526847.html
Windows Script Programming - ウィンドウズスクリプトプログラマ
cmd.exeとchcp.comだけで、文字コード(Unicode、UTF-8、UTF-7、JIS、EUC-JP、SJIS)を変換する!
http://scripting.cocolog-nifty.com/blog/2008/12/cmdexeunicodeut.html
ダウンロードファイル
http://www.vector.co.jp/download/file/winnt/util/fh470470.html
組み合わせでRL78/G13と通信(シリアルモニタ)出来るようになっていることに前のエントリで気付いたのですが、
以前のエントリのようにルネサスWebコンパイラでSerial.print()の引数に日本語を書いていた場合には、それが
文字化けして表示されます。この際ですので、文字化けせずに表示されるようにコマンドを1つ自作してみました。
単にUTF-8からSJISへ漢字コードを変換しているだけなのですが、試しに汎用的な漢字コード(文字コード)変換
ツールを幾つか使ってみたところ、今回のようにリアルタイムで1行づつ入力されるデータをリアルタイムで1行
づつ出力することが出来なかったり(入力や出力でバッファリングが行われていてデータが充分に溜まった時点で
まとめて変換される)、COMポートに対して使えなかったり、といった状況でしたので自作することにしました。
(とは言え、エラーチェックを何もしていないところなど、ちょっと後ろめたい気持ちがない訳ではないですが。)
mode COM14 dtr=on > nul & mode COM14 baud=9600 parity=n data=8 stop=2 to=off dtr=off & utf8to932 < \\.\COM14

KurumiWriter V1.00(ソース公開版)の改造に使用したVisual C++ 2010 Express SP1で作成

// utf8to932.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//
#include "stdafx.h"
#include "windows.h"
#define BUFSIZE 1024
int _tmain(int argc, _TCHAR* argv[])
{
// for (;;) {} /* プロジェクトのプロパティで“デバッグ”の“アタッチ”を“はい”にしておく */
CHAR buff[
WCHAR wbuff[
for (;;)
{
buff[0] = '\0';
wbuff[0] = '\0';
fgets(buff,
MultiByteToWideChar(CP_UTF8, 0, buff, -1, wbuff,
WideCharToMultiByte(CP_ACP, 0, wbuff, -1, buff,
fputs(buff, stdout);
}
return 0;
}
ビルドしたプログラムは以下の通りです。(ちなみに、バッファオーバーフローはさせないようにして下さい。)
ファイル:
ファイル: utf8to932.7z (2016/09/28更新)
追記 : メモ
参考にさせて頂いたブログ
SJISとUTF8の漢字コード変換 - Minoru Hatada
http://home.a00.itscom.net/hatada/windows/tips/sjis2utf8.html
追記 : メモ
MultiByteToWideChar - MSDN
https://msdn.microsoft.com/ja-jp/library/cc448053.aspx
WideCharToMultiByte - MSDN
https://msdn.microsoft.com/ja-jp/library/cc448089.aspx
追記 : メモ
試させて頂いた記事やブログ
libiconv - 瀬川 博人 - 株式会社システムエージェントジャパン
インストール(Windowsプリコンパイル版)
http://saj.co.jp/techinfo/htmls/other-libiconv-install_windows_precompile.html
ダウンロードファイル
http://ftp.jaist.ac.jp/pub/GNU/libiconv/libiconv-1.9.1.bin.woe32.zip
(http://ftp.jaist.ac.jp/pub/GNU/libiconv/)
http://ftp.jaist.ac.jp/pub/GNU/gettext/gettext-runtime-0.13.1.bin.woe32.zip
(http://ftp.jaist.ac.jp/pub/GNU/gettext/)
@IT > Windows Server Insider > Tech TIPS - アイティメディア株式会社
nkfツールで文字コードを変換する(Windows編)
http://www.atmarkit.co.jp/ait/articles/1301/25/news092.html
ダウンロードファイル
http://www.vector.co.jp/download/file/win95/util/fh526847.html
Windows Script Programming - ウィンドウズスクリプトプログラマ
cmd.exeとchcp.comだけで、文字コード(Unicode、UTF-8、UTF-7、JIS、EUC-JP、SJIS)を変換する!
http://scripting.cocolog-nifty.com/blog/2008/12/cmdexeunicodeut.html
ダウンロードファイル
http://www.vector.co.jp/download/file/winnt/util/fh470470.html
- 関連記事
-
- RL78マイコン基板(RL78/G13)|Internet Explorerからrl78flashを起動して通信(シリアルモニタ)する
- RL78マイコン基板(RL78/G13)|Internet Explorerからrl78flashを起動してフラッシュ書き込みする
- RL78マイコン基板(RL78/G13)|Internet ExplorerからOCXを使わずにCOMポートを読み書きする
- RL78マイコン基板(RL78/G13)|KurumiWriter(改)で書き込んで自作utf8to932コマンドで日本語表示
- RL78マイコン基板(RL78/G13)|KurumiWriter(改)で書き込んでmoreコマンドでシリアル通信する設定
- RL78マイコン基板(RL78/G13)|KurumiWriter V1.00(ソース公開版)のフラッシュ書き込み時間の改善
- RL78マイコン基板(RL78/G13)|KurumiWriter V2.10とrl78flashの書き込み時間の比較 (CP2102編)
- RL78マイコン基板(RL78/G13)|CP2102+rl78flashで秋月のRL78搭載変換モジュールに書き込み
- RL78マイコン基板(RL78/G13)|CP2102+KurumiWriterで秋月のRL78搭載変換モジュールに書き込み
- RL78マイコン基板(RL78/G13)|rl78flashで書き込んでPython+pySerialでシリアル通信する設定
- RL78マイコン基板(RL78/G13)|TeraTermでログにタイムスタンプを付けて自動保存してくれる機能
- RL78マイコン基板(RL78/G13)|WebコンパイラのSerial.printに日本語出力させてTeraTermで表示
- RL78マイコン|日立/RSDの人のCC-RLの論文が情報処理学会の優秀論文(全54編)の1つに選ばれていた
- RL78マイコン基板(RL78/G13)|rl78flashで書き込んでTeraTermでシリアル通信する設定
- RL78マイコン基板(RL78/G13)|KurumiWriter V1.00(ソース公開版)とrl78flashの書き込み時間の比較
2016/09/27 blog-entry-822 category: RL78 /* 16bit,8bit CISC */
| h o m e |