- 締切済み
AKI-H8から16進2桁のH'00をコマンド送信したいのですが
はじめまして、どなた様かご教示お願い致します。 AKI-H8/3048FのBASICコンパイラを用い16進2桁のコマンドをシリアル ポートから送信するプログラムを作っています。 CHR$(&H01), CHR$(&H02)はそれぞれ"01"、"02"として送信されている ことをRS232Cラインモニターの16進数表示で確認しました。 ところがCHR$(&H00)を同様に送信してもNUL扱いされてしまい何も実行 されません。ラインモニターでも無視されていることを確認しました。 どうしてもコマンドとして16進2桁の"00"を送信する必要があります。 自分なりに他の関数やアセンブラでもトライしましたが初心者ゆえ 行き詰まりました。宜しくお願い致します。 確認用のプログラムは以下です。 SERIALSET 1, 9600, 8, 1, 0 :!START PRINT #-1, CHR$(&H02) WAIT 1500 PRINT #-1, CHR$(&H01) WAIT 1500 PRINT #-1, CHR$(&H00) WAIT 1500 GOTO !START
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- macky_
- ベストアンサー率60% (3/5)
#1 です。 書き方が悪かったみたいで、誤解を与えてしまいました、すいません。 私は PRINT コマンドが NULL(0x00) を扱えないと思ったので、 PRINT コマンドを使用しないで、POKE コマンドを使用すれば解決出来るのではないかと思いました。 具体的には下記のようなイメージです。 (SCI0 を使用している場合は &HFFFFBB を &HFFFFB3 に変更してください) SERIALSET 1, 9600, 8, 1, 0 :!START POKE &HFFFFBB, &H02 WAIT 1500 POKE &HFFFFBB, &H01 WAIT 1500 POKE &HFFFFBB, &H00 WAIT 1500 GOTO !START
- macky_
- ベストアンサー率60% (3/5)
H8 で BASIC は使用した事は無いですが、 アドレスに直接値を書き込む、POKE コマンド使えますよね? これでシリアルの送信データレジスタに 0x00 を書き込めば 希望の動作をするのではないでしょうか。 (場合によっては、送信完了待ちのポーリングも必要)
お礼
はじめまして、アドバイスを下さり有り難うございます。 POKEコマンドを使って次の様なソフトに変更しました。 POKE &HC000, &H00 PRINT #-1, RIGHT$((HEX$(PEEK(&HC000)),2) シリアルからの16進2桁のコマンドは"46" "46"となってしまい 残念ながら欲する"00"は出力されませんでした。 結果はNGでもご教示を頂きますと嬉しいものです。 また何かヒントが浮かびましたらお知らせ願います。 本当に有り難うございました。
お礼
こんにちは、macky_さん 再びご親切なアドバイスを頂戴し有り難うございました。 早速、AKI-H8 BASICコンパイラ→フラッシュで焼いてみました。 残念ながらPOKEを使ったプログラムでは&H00、&H01、&H02のどれもが 認識されず、シリアルラインモニターには何も表示されませんでした。 このコンパイラには特異な使用条件があるのかも知れません。 複数のコマンドをセットで送信する際にPRINTで一個一個書き込まないと 無視されました。 (例えば PR$=CHR$(&HFE)+CHR$(&HFE) DA$=CHR$(&H01) FI$=CHR(&HFD) INS$=PR$+DA$+FI$ PRINT #-1, INS$ では"FE""FE""01""FD"の16進2桁のコマンド列は送信されません。 PRINT #-1, CHR$(&HFE) PRINT #-1, CHR$(&HFE) PRINT #-1, CHR$(&H01) PRINT #-1, CHR$(&HFD) と焼いてやっと稼働しました。) 素人の質問に親切にご対応頂き頭が下がります。 これに懲りず何かお気付きのポイントがありましたら またご教示をお願い致します。 敬具