最近Edgeを使っていて気づいたが、通常の検索結果と共にヒントを表示してくれる機能が追加されている。結構曖昧な検索キーワードでも、それなりの回答(プログラムも)が得られ、なかなか便利である。
この機能は、「Microsoft Copilot(マイクロソフト コパイロット)」と呼ばれ、Microsoft社が提供している生成AIツールで、Copilotは「副操縦士」という意味である。
CopilotはOpenAI社が開発した「GPT」という言語モデルがベースとなっており、 Microsoftアカウントがあれば、誰でも無料で文章・コード・画像などを生成することができる。
さらに、有料版であれば Microsoft 365 と連携することも可能。
PICとの通信にテラタームを利用しているが、さらにExcel_VBAでPICとのデータ通信を試みた。Excelのシリアル通信には、widowsAPIを利用する例がよく紹介されているが、記述コードが多く、使い方も難しそうである。
そこで、さらに探してみると、APIを含むVBモジュールとしてEasyCommが見つかった。
EasyCommは木下隆さんが開発されたモジュールで、既にサポートは終了しているが、未だに多くの方がフォローされているようである(以下のHPを参考にさせていただいた)。
・ HatenaBlog[NOB]さん
・ jizilogさん
|
(デフォルトの条件のままで良いものはコメントにした) |
ポート番号セル、入出力セル、ボタンを追加 testEasyComm.xlsm(zip) |
VisualBasic開発中画面(前記VBAの一部を変更) (B2にポート番号、B5データを送信、B7に受信データ) |
使用したパソコン環境は、windows10、Excel2019で、以上のような簡単な記述(コメント行を除くと数行)のみで、(USB)シリアル通信が行えた。なお、USB接続PICターミナルは、次項のバックライトLCD付きのものを用いた(テストは次項の写真参照)。
EasyCommは、windowsAPIを理解しなくても、VBAで簡単かつ手軽に使えるシリアル通信ツールで、改めて木下隆さんに感謝!
abc899まで、プロジェクトに合わせていくつかのライブラリを作成し、個々に利用していたが、使用するPICによって、その一部を書き換える必要があるなど、使いづらかった。
そこで、MPLABXProjectsフォルダーの下に「myXC8lib」フォルダーを作って、これまでのライブラリをまとめて格納することにした。
しかし、I2CライブラリなどMCCがGenerateしたファイルをライブラリーで利用するには、ライブラリーに現在プロジェクトのパス・ファイル名を記述しなければならず、共有のライブラリとして使えなくなる。それゆえ、共有ライブラリーをmyXC8libから現在プロジェクトフォルダーにコピーすることは避けられなかった(今後の課題)。なお、MCCがGenerateしたファイルを使わないライブラリはコピー不要で使用可能。
そして、現在プロジェクトフォルダーに「myProject.h」ファイルを作成し、このファイルに「#define文」などを記述することで、使用するPICやハードなどプロジェクト毎の違いを吸収することにした。
【ハードウェア】
キャラクター表示LCDに16文字x2行のAQM1602Y-RN-GBWを使ってきたが、ミニBBでもバックライト付のAQM1602Y-NLW-FBWを使えるようにLCDボードの配線を変更した。
LCDの接続には11ピンの丸ピンヘッダーを利用し、バックライト配線を両端のピンに接続した。また、ボードの上隅にLCDを支えるスペーサー用のピンヘッダーも配置した。
【ソフトウェア】 (EUSARTの設定については後述の「おまけ」を参照)
新ボードのテストとライブラリの動作確認を兼ねて、シリアル受信ターミナルソフトを作成した。
(ターミナルの機能は、受信データーに"Received"を頭に付けて返送するだけ)
<ターミナルのエコー設定>
シリアル通信のエコーの有無はON/OFFで設定でき、
VBA用ターミナルでは ECHO = OFF
テラタームでは ECHO = ON/OFF のどちらでもOK
<I2Cライブラリの設定例>
例えば、I2Cの場合、
@I2Cが2つ以上あるPICの場合は、I2C番号をセット
#define I2C 1
AI2Cが1つしかないPICの場合は
文字列I2Cは宣言しない
Excelとシリアル通信中画面例 |
Excel画面例(再掲) |
|
|
|
|
※プログラムのリストをハイライト付きのスタイルで見る場合はここをクリック
※ 本レポートの参考・利用は、あくまでも自己責任でお願いします。