フォト
2024年4月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        
無料ブログはココログ

« 2024年1月 | トップページ | 2024年4月 »

2024年3月の7件の記事

2024年3月21日 (木)

Arduino UNO R4 WiFiに関するメモ

遅ればせながらArduino UNO R4 WiFiの調査(-_-;) .. 随時追記します

文献調査
Arduino UNO R4 WiFi
 https://docs.arduino.cc/hardware/uno-r4-wifi/

 まずは、本家のこの資料の参照がスタート地点でしょう..
 ここを起点に、色々と調べることが出来ます

Arduino UNO R4 WiFi - Product Reference Manual 
 https://docs.arduino.cc/resources/datasheets/ABX00087-datasheet.pdf

 「このボードは何ぞや?」を知るために①のリンクからこの最初にこのPDFを読む..

Arduino UNO R4 WiFi Cheat Sheet
 https://docs.arduino.cc/tutorials/uno-r4-wifi/cheat-sheet/
 A reference to all technical features on this board, with pointers to additional documents.

 この資料が一番全体の機能や使いざっと把握できそうです

Arduino Renesas fsp Boards(ArduinoCore-renesas)
 https://github.com/arduino/ArduinoCore-renesas

 Arduino UNO R4 WiFiのCoreおよびライブラリのソースを見るにはここ
 さらにボード依存しない抽象層のAPIは以下
   ArduinoCore-API 
  https://github.com/arduino/ArduinoCore-API

Renesas  Arm® Cortex-M MCU RA4M1
 RA4M1 48MHz Arm® Cortex®-M4とLCDコントローラおよびHMI用静電容量式タッチセンサ搭載 32 ビットマイクロコントローラ
 
 搭載マイコン RAM1の機能知るための公式サイト掲載情報、とりあえず下のマニュアルが日本語なので役立ちそう
  Renesas RA4M1グループ ユーザーズマニュアル ハードウェア編

トランジスタ技術 2024年 1月号 新生!Arduino Uno R4 本格派ルネサス版
 とりあえず購入して積んでいました。今更ながら読んでみます..

・・・

Renesas RA4M1のブロック図
20240322-103131
  「Renesas RA4M1グループ ユーザーズマニュアル ハードウェア編」- 1. 概要 1.2 ブロック図より抜粋


・・・


用語関連
FSP(Flexible Software Package)
 ルネサスのArmマイコンRAファミリを用いた組込みシステム設計向けに、ユーザフレンドリでスケーラブル、
 かつ高品質なソフトウェアを提供するために設計されたソフトウェアパッケージ。
 

Arduino用 美咲フォントライブラリを更新しました

「Arduino用 美咲フォントライブラリ 教育漢字・内部フラッシュメモリ乗せ版」を更新しました。
ここ最近の調査をライブラリに反映しました。
 
・Arduino-misakiUTF16 Arduino用 美咲フォントライブラリ 教育漢字・内部フラッシュメモリ乗せ版
 https://github.com/Tamakichi/Arduino-misakiUTF16

おもな変更点
・ライブラリ形式(library format)をrev. 2.2に変更(以前はrev 1.x)
・美咲フォントの最新版 2021-05-05(美咲ゴシック第2)利用に変更

 (以前は2012-06-03 正式公開初版を利用)
・isZenkaku()の追加
 ⇒ 半角(4ドット)・全角(8ドット)幅判定により半角文字を詰めて表示可能となりました
・いくつかの不具合対応(半角・全角変換ミスなど)


せっかくの機会なので、新Arduino Uno(Arduino Uno R4 WiFi)に搭載されているLEDマトリックスで、デモってみました。

Arduino Uno R4 WiFi搭載 LEDマトリックスで美咲フォント表示
Arduino_uno_r4_led_matrix

動いている様子(Youtube ※BGMあり)


表示器がボート搭載だと、お手軽に利用できて良いですね~

プログラムソース


このサンプルプログラムは、ライブラリのサンプルプログラムとして添付しました。

参考にした文献
・Using the Arduino UNO R4 WiFi LED Matrix
 https://docs.arduino.cc/tutorials/uno-r4-wifi/led-matrix/

 公式サイトのLEDドットマトリックスを利用するための解説です。
 利用するライブラリ及び、LEDドットマトリックスのフレームバッファの構造について説明されています。

今回作成したサンプルプログラムでは、フレームバッファにデータをセットして表示しています(setAt()関数)。
フレームバッファの構造は、横12ドットx縦8ドットの計96ドット分の96ビットをlong整数 32ビットx3個 に単純に詰めている感じです。
フレームバッファを直接いじれば、なんでも表示できそうですね

フレームバッファの左スクロールを実装しているscroll()関数、
汎用性のない、12x8ドット限定の力業実装で少々分かりにくいコードですが、
32ビットx3の配列をビットシフトでビットを左にずらしているのですが、その際に
 ①ビットシフト時の最上位ビットの欠落対策
 ②0~7行の右端ビットクリア、
 ③ワードをまたぐ行の左端ビットの処理
を行って補正してます。
ちょっとエレガントでないのでもう少し良い方法があるかもしれません

新Arduino Uno R4ボード、搭載マイコンがRenesas RA4M1(Arm Cortex-M4)に変更となりました。
このボードも発売直後に購入したものの、放置していました。やっと使い始めた感じです。
まだまだ、使いこなせてないので、ドキュメントをあさりつつ遊んで行きたいと思います。

こんな感じで、ライブラリ更新と少々の動作確認の上、公開いたしました。

2024年3月18日 (月)

Arduino用ライブラリの自作用のメモ

Arduino用の美咲フォントライブラリの更新に伴い、Arduino用ライブラリ作成の再確認メモです。
(久しぶりのライブラリ作成・修正ですっかり忘れてました)

参考文献
・Arduino DOCS - Home/Learn/ Writing a Library for Arduino
 https://docs.arduino.cc/learn/contributions/arduino-creating-library-guide/
 ライブラリ作成の入門編的な資料です。

・Library specification
 https://arduino.github.io/arduino-cli/0.36/library-specification/
 ライブラリ作成に関する仕様です。

・KEI SAKAKI's PAGE. - Arduino開発環境用の「ライブラリ」を作成してみる
 https://kei-sakaki.jp/2015/01/07/making-library-for-arduino-development-environment/
 Arduino IDEのバージョン的に少々古い情報となりますが、大変参考になりました(情報公開に感謝♪

まずは、ディレクトリ構成に規約があります。
■ ライブラリのディレクトリ構成
librarys\
   ライブラリ格納ディレクトリ\
    keywords.txt
    library.properties
    src\
    ライブラリ用ヘッダーファイル
    ライブラリ用ソースファイル
   examples\
    サンプルプログラム\
      サンプルプログラムソースファイル
        ・・・
   extras\ (オプション)
     資料など

例:美咲フォントライブラリの例


librarys\
└─ misakiUTF16\
    │  keywords.txt
    │  library.properties
    ├─ examples\
    │  ├─ aitendo_ht16k33
    │  │      aitendo_ht16k33.ino
    │  ├─ banner\
    │  │      banner.ino
    │  └─ misaki_tvout\
    │          misaki_tvout.ino
    └─ src\
      misakiUTF16.cpp
      misakiUTF16.h
      misakiUTF16FontData.h


keywords.txt の定義


name=misakiUTF16
version=1.2.0
author=Tamakichi
maintainer=Tamakichi
email=tamacat2014@gmail.com
sentence=Japanese font data and driver
paragraph=8x8dots Misaki font driver for Arduino Uno
category=Other
url=https://github.com/Tamakichi/Arduino-misakiUTF16
architectures=*

■library.propertiesの定義

#######################################
# Syntax Coloring Map For misakiUTF16
#######################################

#######################################
# Datatypes (KEYWORD1)
#######################################

#######################################
# Methods and Functions (KEYWORD2)
#######################################
misakiUTF16 KEYWORD2
findcode KEYWORD2
getFontDataByUTF16 KEYWORD2
getFontData KEYWORD2
utf16_HantoZen KEYWORD2
hkana2kana KEYWORD2
HantoZen KEYWORD2
charUFT8toUTF16 KEYWORD2
Utf8ToUtf16 KEYWORD2
getFontTableAddress KEYWORD2
isZenkaku KEYWORD2
LatenS2Zen KEYWORD2
isBasicLatin KEYWORD2
isLatinSupple KEYWORD2

#######################################
# Constants (LITERAL1)
#######################################


■開発者用フラグファイル
ライブラリの開発中、Arduino IDEにてlibrarys\に配置いているサンプルプログラムの上書きは禁止されているのですが、
ライブラリのルートフォルダに.developmentを配置すると上書き可能となる。

これについて検証してみましたが、Arduino IDEでサンプルプログラムを直接開いた分には、この設定無しに上書きできます。
Arduino IDEの「スケッチの例」にてサンプルプログラムを開いた場合は、.developmentの有無に関係なく、上書き出来ません。
う~ん、今一意味不明..


・・・

しかし、ココログ.. htmlのタグ記述とかできるのに、いうこと聞いてくれなくて糞過ぎ..(>_<)
過去の記事は修正するとレイアウトが崩れるので編集不能だし.. 何とかならんですかね..

2024年3月15日 (金)

やはり、C言語は難しい

MicroPython環境で美咲フォントを利用するライブラリを作成した後、Arduino版の美咲フォントライブラリをの修正に着手したのですが、
Pythonにどっぷりつかった後に、C・C++をいじると、『やはり、C言語は難しい』と感じますね~
特にC言語で、UTF-8のマルチバイト文字の操作は厳しい・面倒くさい(>_<)
言語レベルでユニコードをサポートしていないのは、何とかならんですかね~

文字・文書、画像、データ(CSV、リストなど)などをお手軽・簡単の処理するには、C言語は不向き..
個人的にプログラミング的な思考はC言語ベースなのです。
ただ、PythonはPythonで、バイトデータや構造体的なきっちりとしたデータの構造や塊の操作においては面倒くさいです。

Arduinoでは、C言語の難しいと思われている「ポインター」の利用は「配列に置き換える」などの指針がありますね~



2024年3月14日 (木)

Raspberry Pi Pico(MicroPython)でLEDドットマトリックスを使ってみる

先日修正版を公開した「Raspberry Pi Pico MicroPython用の美咲フォントライブラリ」を使って、
MAX7219を使ったLEDドットマトリックスモジュールで日本語表示を試してみました。


MAX7219ベースのLEDドットマトリックスの利用については、文献1が大変参考になりました.. 感謝(*´ω`*)
MAX7219の制御についてては文献2のMike Causerさんが公開しているライブラリを利用しました.. 公開に感謝(*´ω`*)

この実装にあたり、参考にした文献
・文献1.証券所のティッカーみたいな細長い電光掲示板を作る話—MAX7219モジュールとRaspberry Pi Pico (rp2040)とMicrPython
・文献2.micropython-max7219
・文献3.MicroPython libraries framebuf — frame buffer manipulation

Raspberry Pi Pico MicroPython用の美咲フォントライブラリ の最新版では、半角と全角文字を混ぜて表示できます。
半角文字は横4ドットで処理しています。とりあえずは、使えそうかな.. (*´ω`*)

文献3のmicropython-max7219 ライブラリでも半角英数字テキストのスクロール表示メッセージは可能なのですが、
フォントの切り替え不可で、美咲フォントを利用した日本語フォントの表示には対応していません。
そこで、micropython-max7219の Matrix8x8の派生クラスを作成して美咲フォントで日本語表示できるようにしてみました。
MessageBoardクラスを作成しました。
以下は、そのクラス実装のmessageboard.pyとサンプルプログラムのsample_scroll_text.pyです。

ライブラリmax7219.py、messageboard.pyは、pico内にdeviceフォルダを作ってその中に保存します。
ラズパイpicoのmicroPython環境、実現レベルでいい感じと再認識しました(*´ω`*)

ハードウェア構成、結線については文献1、2を参照願います。
pico用に作成しましたが、他の環境でも比較的簡単に移植できると思います。

教育漢字だけだとやはり、ちょっとした文書を表示しようと思うと豆腐(□=教育漢字以外)が表示されてしまいます。
picoでは、フラッシュメモリに余裕があるので全フォント搭載でも問題ないと思うので、対応しようかな..

2024年3月13日 (水)

Raspberry Pi Pico MicroPython用美咲フォントライブラリの更新

前回投稿「美咲フォントの調査(メモ その1)」を元に、
Raspberry Pi Pico MicroPython用の美咲フォントライブラリを修正しました。

更新
・Raspberry Pi Pico MicroPython用美咲フォントライブラリ
   https://github.com/Tamakichi/pico_MicroPython_misakifont

このライブラリに作成にあたり、美咲フォントのBDF形式からPython用のフォントデータ(タプル形式)への変換は、
Pythonでプログラムを組んで生成しました。
BDF Parserという、BDFファイルをお手軽に操作できるライブラリを利用したのですが、
かなり高機能で、今後もBDFファイルを使う場合には利用しようかと思います。

BDF Parser の利用方法の解説は少ないので、個人のメモとして、今後いくつか記述したいと思います。

「Raspberry Pi Pico MicroPython用美咲フォントライブラリ」は、もともとは2012年の美咲フォント 初版をベースにしていたのですが、
初版のBDFはJISコードベースで、それを強引に ユニコードに変換したのでいくつか不具合やバグが混入していました。
今回の修正で、解消できたかと思います(*´ω`*)

本ライブラリは、「教育漢字」に絞っているのですが、フォントデータの生成はPythonでツールを作成したので、
比較的簡単にフォントの追加や別のフォント(BDF形式)の利用にも対応可能です。
ツールについては、別途公開したいと思います。

先行してPython用ライブラリを更新したのですが、Arduino版についても近日中に公開いたします。

2024年3月 7日 (木)

美咲フォントの調査(メモ その1)

以前作成した Arduino用の漢字フォントライブラリの更新を前提に実装の見直し中です。
ライブラリはLittle Limitさんが開発&公開している「美咲フォント」を利用しています。

ライブラリは美咲フォントの古いバージョン(2012-06-03 正式公開初版)のJISコードベース版を利用しており、
面倒くさいコード変換(JISコード⇒ユニコード)をしていました。そのための不都合が若干生じていました。

最新版の美咲フォントでは、ユニコードを採用しているので、最新版を使った方が当然良いですね。
そこで、ライブラリ見直しのための調査を行うことにしました。この記事はその調査のメモです。
美咲フォント 最新版(X11 BDF 形式(misaki_bdf_2021-05-05.zip)の「美咲ゴシック第2」を利用する予定です。

□ 美咲フォントのサポート文字
 美咲フォントは7,170文字のフォントを実装しています。調べてみると具体的に次の文字ブロックを網羅しています。

Unicode範囲 文字ブロック 文字数 美咲フォント
実装文字数
備考
0000~007F C0制御文字と基本ラテン文字 95 95 非漢字
0080~00FF C1制御文字とラテン1補助 95 15 非漢字
0370~03FF ギリシア文字及びコプト文字 135 48 非漢字
0400~04FF キリル文字 256 66 非漢字
2000~206F 一般句読点 111 20 非漢字
2100~214F 文字様記号 80 4 非漢字(℃№℡Å)
2150~218F 数字に準じるもの 60 10 非漢字(ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ)
2190~21FF 矢印 112 6 非漢字(←↑→↓⇒⇔)
2200~22FF 数学記号 256 37 非漢字
2300~23FF その他の技術用記号 256 1 非漢字(⌒)
2460~24FF 囲み英数字 160 20 非漢字
2500~257F けい線素辺 128 43 非漢字
2580~259F ブロック要素 32 17 非漢字
25A0~25FF 幾何学模様 96 16 非漢字
2600~26FF その他の記号 256 15 非漢字(★☆♀♂♠♡♢♣♤♥♦♧♪♭♯)
3000~303F CJKの記号及び句読点 64 24 非漢字
3040~309F 平仮名 93 87 ひらがな
30A0~30FF 片仮名 96 90 カタカナ
3200~32FF 囲みCJK文字・月 256 9 非漢字(㈱㈲㈹㊤㊥㊦㊧㊨㋿)
3300~33FF CJK互換用文字 256 28 非漢字
4E00~9FFF CJK統合漢字 20,992 6,356 漢字・非漢字
FF00~FFEF 半角・全角形 225 163  
合計 24,446 7,170  

□ 美咲フォントの1バイト文字のサポート文字
 美咲フォントの「C0制御文字と基本ラテン文字」、「C1制御文字とラテン1補助」ブロックの対応状況です。

Unicode-1
 ※ utf-8では、0x80以降は11ビット扱いで2バイトになることに注意

 このブロックでの留意事項
  ・半角 ”¥" は0xA5 を使う。日本語Windows環境では、半角"\" 0x5cが"¥"になるので要注意
  ・「ラテン1補助」 "§", "¨", "°", "±", "´", "¶", "×", "÷" は
   Windows環境の日本語等幅フォントでは全角幅、欧文等幅フォントでは半角幅となる
   Ms
  Consols
   これらの文字は、シフトJISでは2バイト文字なんですが、ユニコード(※utf-8はで2バイト)では1バイトなんですよね..
   シフトJIS環境を慣れ親しんだ私には、若干違和感がありますね~
   美咲フォント的には、これらの文字は全角幅扱いです

   例:”±"のフォント
   20240307-112027

□ 半角・全角文字変換に関する留意点
 組み込み環境で液晶やLEDドットマトリックスなどの表示器にフォントを表示する場合、全角・半角を意識する必要があります。
 半角・全角判定、双方向変換を行うために半角・全角の対応を調べて表にしました。

半角文字 全角文字 備考
コード 16進数 文字 コード 16進数 文字
32 0x20   12288 0x3000    
33 0x21 ! 65281 0xff01  
34 0x22 " 65282 0xff02 ダブルクォートは左、右版もある
35 0x23 # 65283 0xff03  
36 0x24 $ 65284 0xff04  
37 0x25 % 65285 0xff05  
38 0x26 & 65286 0xff06  
39 0x27 ' 65287 0xff07 シングルクォートは左、右版もある 
40 0x28 ( 65288 0xff08  
41 0x29 ) 65289 0xff09  
42 0x2a * 65290 0xff0a  
43 0x2b + 65291 0xff0b  
44 0x2c , 65292 0xff0c  
45 0x2d - 65292 0xff0d ハイフン・マイナス、他類似文字あり
46 0x2e . 65294 0xff0e  
47 0x2f / 65295 0xff0f  
48 0x30 0 65296 0xff10  
49 0x31 1 65297 0xff11  
50 0x32 2 65298 0xff12  
51 0x33 3 65299 0xff13  
52 0x34 4 65300 0xff14  
53 0x35 5 65301 0xff15  
54 0x36 6 65302 0xff16  
55 0x37 7 65303 0xff17  
56 0x38 8 65304 0xff18  
57 0x39 9 65305 0xff19  
58 0x3a : 65306 0xff1a  
59 0x3b ; 65307 0xff1b  
60 0x3c < 65308 0xff1c  
61 0x3d = 65309 0xff1d  
62 0x3e > 65310 0xff1e  
63 0x3f ? 65311 0xff1f  
64 0x40 @ 65312 0xff20  
65 0x41 A 65313 0xff21  
66 0x42 B 65314 0xff22  
67 0x43 C 65315 0xff23  
68 0x44 D 65316 0xff24  
69 0x45 E 65317 0xff25  
70 0x46 F 65318 0xff26  
71 0x47 G 65319 0xff27  
72 0x48 H 65320 0xff28  
73 0x49 I 65321 0xff29  
74 0x4a J 65322 0xff2a  
75 0x4b K 65323 0xff2b  
76 0x4c L 65324 0xff2c  
77 0x4d M 65325 0xff2d  
78 0x4e N 65326 0xff2e  
79 0x4f O 65327 0xff2f  
80 0x50 P 65328 0xff30  
81 0x51 Q 65329 0xff31  
82 0x52 R 65330 0xff32  
83 0x53 S 65331 0xff33  
84 0x54 T 65332 0xff34  
85 0x55 U 65333 0xff35  
86 0x56 V 65334 0xff36  
87 0x57 W 65335 0xff37  
88 0x58 X 65336 0xff38  
89 0x59 Y 65337 0xff39  
90 0x5a Z 65338 0xff3a  
91 0x5b [ 65339 0xff3b  
92 0x5c \ 65340 0xff3c "¥"は0xa5を使う
93 0x5d ] 65341 0xff3d  
94 0x5e ^ 65342 0xff3e  
95 0x5f _ 65343 0xff3f _  
96 0x60 ` 65344 0xff40  
97 0x61 a 65345 0xff41  
98 0x62 b 65346 0xff42  
99 0x63 c 65347 0xff43  
100 0x64 d 65348 0xff44  
101 0x65 e 65349 0xff45  
102 0x66 f 65350 0xff46  
103 0x67 g 65351 0xff47  
104 0x68 h 65352 0xff48  
105 0x69 i 65353 0xff49  
106 0x6a j 65354 0xff4a  
107 0x6b k 65355 0xff4b  
108 0x6c l 65356 0xff4c  
109 0x6d m 65357 0xff4d  
110 0x6e n 65358 0xff4e  
111 0x6f o 65359 0xff4f  
112 0x70 p 65360 0xff50  
113 0x71 q 65361 0xff51  
114 0x72 r 65362 0xff52  
115 0x73 s 65363 0xff53  
116 0x74 t 65364 0xff54  
117 0x75 u 65365 0xff55  
118 0x76 v 65366 0xff56  
119 0x77 w 65367 0xff57  
120 0x78 x 65368 0xff58  
121 0x79 y 65369 0xff59  
122 0x7a z 65370 0xff5a  
123 0x7b { 65371 0xff5b  
124 0x7c | 65372 0xff5c  
125 0x7d } 65373 0xff5d  
126 0x7e ~ 65374 0xff5e  
162 0xa2 ¢ 65504 0xffe0  
163 0xa3 £ 65505 0xffe1  
165 0xa5 ¥ 65509 0xffe5 \記号はこれを使う
166 0xa6 ¦ 65508 0xffe4  
167 0xa7 § 167 0xa7 § 1バイトで全角幅
168 0xa8 ¨ 168 0xa8 ¨ 1バイトで全角幅
172 0xac ¬ 65506 0xffe2  
173 0xad ­ 173 0xad ­ ソフトハイフン、1バイトで全角幅
175 0xaf ¯ 65507 0xffe3 マクロン
176 0xb0 ° 176 0xb0 ° 度、1バイトで全角幅
177 0xb1 ± 177 0xb1 ± 1バイトで全角幅
180 0xb4 ´ 180 0xb4 ´ アクセント、1バイトで全角幅
182 0xb6 182 0xb6 段落記号、1バイトで全角幅
215 0xd7 × 215 0xd7 × 乗算記号、1バイトで全角幅
247 0xf7 ÷ 247 0xf7 ÷ 除算記号、1バイトで全角幅
65377 0xff61 12290 0x3002  
65378 0xff62 12300 0x300c  
65379 0xff63 12301 0x300d  
65380 0xff64 12289 0x3001  
65381 0xff65 12539 0x30fb  
65382 0xff66 12530 0x30f2  
65383 0xff67 12449 0x30a1  
65384 0xff68 12451 0x30a3  
65385 0xff69 12453 0x30a5  
65386 0xff6a 12455 0x30a7  
65387 0xff6b 12457 0x30a9  
65388 0xff6c 12515 0x30e3  
65389 0xff6d 12517 0x30e5  
65390 0xff6e 12519 0x30e7  
65391 0xff6f 12483 0x30c3  
65392 0xff70 12540 0x30fc  
65393 0xff71 12450 0x30a2  
65394 0xff72 12452 0x30a4  
65395 0xff73 12454 0x30a6  
65396 0xff74 12456 0x30a8  
65397 0xff75 12458 0x30aa  
65398 0xff76 12459 0x30ab  
65399 0xff77 12461 0x30ad  
65400 0xff78 12463 0x30af  
65401 0xff79 12465 0x30b1  
65402 0xff7a 12467 0x30b3  
65403 0xff7b 12469 0x30b5  
65404 0xff7c 12471 0x30b7  
65405 0xff7d 12473 0x30b9  
65406 0xff7e 12475 0x30bb  
65407 0xff7f ソ 12477 0x30bd  
65408 0xff80 12479 0x30bf  
65409 0xff81 12481 0x30c1  
65410 0xff82 12484 0x30c4  
65411 0xff83 12486 0x30c6  
65412 0xff84 12488 0x30c8  
65413 0xff85 12490 0x30ca  
65414 0xff86 12491 0x30cb  
65415 0xff87 12492 0x30cc  
65416 0xff88 12493 0x30cd  
65417 0xff89 12494 0x30ce  
65418 0xff8a 12495 0x30cf  
65419 0xff8b 12498 0x30d2  
65420 0xff8c 12501 0x30d5  
65421 0xff8d 12504 0x30d8  
65422 0xff8e 12507 0x30db  
65423 0xff8f 12510 0x30de  
65424 0xff90 12511 0x30df  
65425 0xff91 12512 0x30e0  
65426 0xff92 12513 0x30e1  
65427 0xff93 12514 0x30e2  
65428 0xff94 12516 0x30e4  
65429 0xff95 12518 0x30e6  
65430 0xff96 12520 0x30e8  
65431 0xff97 12521 0x30e9  
65432 0xff98 12522 0x30ea  
65433 0xff99 12523 0x30eb  
65434 0xff9a 12524 0x30ec  
65435 0xff9b 12525 0x30ed  
65436 0xff9c 12527 0x30ef  
65437 0xff9d 12531 0x30f3  
65438 0xff9e 12443 0x309b  
65439 0xff9f 12444 0x309c  

 半角・全角変換での留意点
  ・基本ラテン文字(半角スペースを除く 0x21~0x7e)の全角コードは連続性があり、次の式で変換できる
     全角コード = 半角コード - 0x20 + 0xff00

  ・ラテン1補助文字(C1を除く 0x80~0xff)は次の文字のみ変換対応すればよい
   '¢' 0xa2 ⇒ 0xffe0
   '£' 0xa3 ⇒ 0xffe1
   '¥' 0xa5 ⇒ 0xffe5
   '¦' 0xa6 ⇒ 0xffe4
   '¬' 0xac ⇒ 0xffe2
   '¯' 0xaf ⇒  0xffe3

 ・半角カタカナは、半角コードが連続性があるのに対し、全角コードは連続性がないので変換のためのテーブルが必要となる
  1バイトコードのテーブル(配列)を用意して、次のように参照すれば変換できますね

kana_h2z_table = (
 0x02,0x0c,0x0d,0x01,0xfb,0xf2,0xa1,0xa3,
 0xa5,0xa7,0xa9,0xe3,0xe5,0xe7,0xc3,0xfc,
 0xa2,0xa4,0xa6,0xa8,0xaa,0xab,0xad,0xaf,
 0xb1,0xb3,0xb5,0xb7,0xb9,0xbb,0xbd,0xbf,
 0xc1,0xc4,0xc6,0xc8,0xca,0xcb,0xcc,0xcd,
 0xce,0xcf,0xd2,0xd5,0xd8,0xdb,0xde,0xdf,
 0xe0,0xe1,0xe2,0xe4,0xe6,0xe8,0xe9,0xea,
 0xeb,0xec,0xed,0xef,0xf3,0x9b,0x9c,
)

全角カタカナコード = kana_h2z_table[半角カタカナコード - 0xff61] + 0x3000

« 2024年1月 | トップページ | 2024年4月 »