アプリ版:「スタンプのみでお礼する」機能のリリースについて

最近H8をいじり初めて色々と試しています。

使用しているマイコンはH8 3052/Fです。またCでプログラムしています。

そこで質問なんですけど、今H8マイコンボードとPCがシリアル接続されて

いるとして、接続が確立している場合にLEDを点灯させて、接続が確立され

ていないときは無点灯というような動作を作成したいんですけど、どのよ

うな手法を用いればよいでしょうか?

A 回答 (3件)

> 通信が確立している状態とは、例えばハイパーターミナルに


> よってPCとH8をシリアル接続を行い、データの送受信ができる状態と
> 考えています。

「データの送受信ができる状態」というのがまだ不明確ですね。例えばハイパーターミナル側でポート番号が間違っているのに気付かなければ「あれ?」ってことになりますし、ボーレート、データ長、ストップビット、パリティ等が合わなければ正しくデータをやり取りすることができません。なにせ、USBやTCP/IPと違って通信プロトコルが決まっていませんので。

ではどうしたらよいか。例えば次のように、接続確認のプロトコルを自分で作ってしまってはどうでしょうか。

(準備)接続確認用のコマンド(文字列)を決めておく。(例えば open[CR][LF] など)
1.ホストは接続確認用コマンドをマイコンに送信する。
2.マイコンは接続確認用コマンドを受信したらLEDを点灯して、ホストに正常応答(例えば ack[CR][LF] とか ok[CR][LF] など)を送信する。
3.ホストはマイコンからの正常応答を受信して、接続が確立したと判定する。

[CR][LF] は C言語でいえば \r\n の意味で書きました。
    • good
    • 0
この回答へのお礼

遅くなりましたが、プログラムが動作しました。

どうもありがとうございました。

お礼日時:2009/06/16 14:34

No.1です。


>例えばハイパーターミナルによってPCとH8をシリアル接続を行い、
>データの送受信ができる状態と考えています。
「データの送受信ができる状態」という観点のみに注力すると、
・RxDの監視を開始し、データ解析ができる状態
・TxDが送信できる状態
という解釈になると思います。

以下は余談ですが、
シリアル(COMポート)通信で非同期通信の場合はRxD/TxDの二本の線しか使用していません。(モデムはさらに複数の信号線を使用します)
その為、送信側は「データを送信しない」場合、TxDを常に"H"にしておき、データを送る時に1bit分の時間(時間はボーレートにより違う)"L"にします。それ以降をデータbitとして扱います。
データbitを指定bit分(8bitデータなら8回)送信後、パリティビットを送信、次のbitを「"H"」で送信することでストップビットとして扱います。
同様に、受信側はRxDを監視し「"H"→"L"」を検知したらデータの開始として以降のデータを取り込んでいきます。
このため、明確に「接続が確立している」ということを判断するのは非常に難しいです。
個人的には、RxDが一定期間"H"を維持できていればPC側の送信準備が整った=接続確立したと判断してもよい気もしますが。
    • good
    • 0

>接続が確立している


とする条件は?
・スタートアップコマンドを受信して終了するまで
・DTRの検出
等、通信制御の方法によっていろいろと考えられますが?
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。

まだH8は学び始めたばかりで、通信制御の方式についても詳しくは分からな

いのですが、通信が確立している状態とは、例えばハイパーターミナルに

よってPCとH8をシリアル接続を行い、データの送受信ができる状態と考えて

います。

お礼日時:2009/06/11 16:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!