ポケコンのシリアル通信

シャープのポケコンに使用するUSBシリアル通信ケーブルを製作しました。
PC-G850用USB通信ケーブルを作ろう!(http://www.charatsoft.com/software/pocket-computer/usb_serial.html)を参考にしています。
本稿では、製作したUSBシリアル通信ケーブルと、BASICによるシリアル通信の使い方について紹介します。

製作したシリアル通信ケーブル

USBシリアル通信ケーブルの製作

上記のサイト(http://www.charatsoft.com/software/pocket-computer/usb_serial.html)を参考にしてUSBシリアル通信ケーブルを製作します。

材料は秋月電子通商のUSBシリアル変換キット

主な材料は秋月電子通商FT232RQ USBシリアル変換キット(K-09951)です。
L形ピンヘッダを取り付けて、不要なピンを切断します。
オリジナルではRXDとCTSを1kΩでプルダウンしていますが、ここではすべての信号(RXD,TXD,RTS,CTS)をプルダウンしています。

製作したUSBシリアル通信ケーブル(上面)
製作したUSBシリアル通信ケーブル(底面)

手持ち部品に、ジャンク袋で入手した集合抵抗があったので利用しました。プルアップ/プルダウンには集合抵抗を使うと、コンパクトで見た目もきれいに仕上がります。手持ちが8素子(9ピン)だったので、使用しない端子は根元で切断しておきます。抵抗が基板からはみ出してしまいましたが、偶然にも11ピンコネクタの幅にぴったり収まりました。

ところで、昔(1990年代まで)はジャンク袋(抵抗袋やコンデンサ袋など)がパーツ屋さんの定番商品でしたが、最近は見かけないような気がします。メーカー等の在庫管理も厳しくなって、あまりジャンクパーツも出回らないかもしれませんね。
ほとんどゴミに近いような用途不明の半導体が入っていたりするのですが、余った部品を友達と交換したりして、貧乏学生のパーツ箱を充実させてくれる貴重な入手ルートでした。

FTDIのツールでUSBシリアルコンバータの設定を変更し、 DIPスイッチをONにしてから上記のサイトで公開されているPCGToolでポケコンとの通信が確認できれば完成です。

ポケコンBASICによるシリアル通信

実験環境:Microsoft Surface Pro 7とSHARP PC-G850V

ポケコンとパソコンが接続できるようになると、ポケコンの用途が広がります。Arduinoのようなマイコンボードのインターフェイスとしてポケコンを使うこともできるかもしれません。
ポケコンのBASICにもシリアル通信関係のコマンドがいくつか用意されているので実験してみました。

10行のコードでできる簡易シリアルモニタ

BASICで簡易的なシリアルモニタのプログラムを作り、パソコンと通信してみます。

10OPEN "COM1:"
20DIM SI$(0)*255
30CLS
40PRINT "シリアルモニタ  q=QUIT  2020.03       (C) radioworks.jp"
50*LOOP
60LNINPUT #1,SI$(0)
70PRINT SI$(0)
80PRINT #1,SI$(0)
90IF SI$(0)="q" THEN END
100GOTO *LOOP

10行のプログラムですが、画面表示とラベルを除くと実質7行です。
OPEN “COM1:” でシリアルポートを開きます。
DIM SI$(0)*255 で255バイトの文字列配列変数を宣言します。配列は使用しませんが、ポケコンBASICでは無宣言で文字列変数を使おうとしても、わずか16バイトしか確保されません。シリアルポートから一度に受信できる最大の文字数は255バイトなので、255バイトの文字列変数を確保するためには配列変数として宣言する必要があります。このあたりはポケコンらしい制限と言えるでしょう。
LNINPUT #1,SI$(0) でシリアルポートから文字を取り込みます。割り込みやバッファの機能がないので、シリアルポートに[CR][LF]が来るか255バイト受信するまで、この行で実行が止まります。
PRINTで受信した文字列を画面表示したあと、PRINT #1でシリアルポートに対してエコーバックを送信します。
シリアルポートに「q」が来たらプログラムを終了します。

通信パラメータ(ビットレート等)はBASICからは設定できず、テキストエディタのSIOで設定したものになります。

TeraTermで文字を送信する
ポケコンにはTeraTermで送信した文字が表示される

以上のように、BASICでは少ない命令でシリアル通信を使うことができますが、一度に受信できる文字数が255文字までに制限されることと、受信に割り込みやバッファがないので受信待ちでプログラムが止まるのが問題です。
また、受信待ちの状態で長時間放置するとタイムアウトのエラー(ERROR 81)になります。ポケコンBASICには ON ERROR GOTO 文がないのでプログラム内でエラー処理ができず、エラーが発生すると必ずプログラムが止まってしまいます。

送信処理には待ち時間の問題が発生しないので、ポケコンの画面にメニュー機能などを作り込んで、マイコンボードにコマンドを一方的に投げて制御するような用途には便利に使えると思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください