• 締切済み

PICとPC間のシリアル通信について

PICとPC間のシリアル通信について PICの中で数値を処理した結果(たとえば、1516という数値)をstring型でPCにシリアルで送信できますか? PICは8bitまで対応しているので、12345678という数値もstring型で送れるのでしょうか?

みんなの回答

  • waewa
  • ベストアンサー率25% (1/4)
回答No.6

http://www.nicozon.net/player.html?video_id=sm10738650 http://www.nicozon.net/player.html?video_id=sm10819563 http://milky.geocities.jp/waewax/PAGE9.html PIC→PCの一方通行の通信ですがこんな程度でよかったらソフトもハードも簡単に出来ます。 アスキーコードを使って 1010000010などと出力し1文字の送信になります。 はじめの1がスタートビットと呼ばれるものでPCに「今から送るぜ!」と合図を送ります。 次の8ビットがアスキーコードです。 最後の0がストップビットと呼ばれるものでPCに「送り終わったぜ!」と合図を送ります。 これの繰り返しで文字が送れます。 bpsはこの1や0を送信している時間です。 9600bpsの場合これが0.104ミリ秒ということです。 1文字送るのに1.04ミリ秒の時間がかかるわけです。 PIC側もPC側もこのタイミングで信号の受け渡しを期待していますので狂うと文字化けをします。 もっと狂うと文字が受け取れません。逆に言うと文字化けをするときはもう少しで読めると言う事です。 ネット上にいろいろ参考になるサイトがあります。わたしもそこで勉強してこれを作って遊びました。 こんな程度でよければ参考にしてみてください。

  • black2005
  • ベストアンサー率32% (1968/6046)
回答No.5

No.1です。 >8*4=32bitが一回の出力に必要だということになるのでしょうか? 当然、1文字×送信文字数分の出力が必要ですが・・・ 質問の意味が良くわかりません。 >またRS-232ケーブルの種類によって通信速度に影響があるのでしょうか? RS232ケーブルの種類とは何ですか? 具体的にどんな種類? 通信速度はハードウェアの設定値で決まる数値であって、ケーブルの種類なんかには左右されませんよ。

  • hanmemomo
  • ベストアンサー率35% (205/580)
回答No.4

ちょい話はずれますが、 PICは確かに8ビットですが、それは1度に扱える数なので 複数の送信で扱える数には元から限界はないですよ。 2回で一つの値を送れば0~65536(-1)ですし 3回で一つの値を送れば0~16777216(-1)ってことです また、9600にもこだわる必要はないですよ。 PICは結構早いので、38400やそれ以上でも通信してます。 こちらでは、もっと速い速度で通信させてました。 MAX232系のチャージが遅いのでちょっと、無理させましたが チャージとはチャージポンプの意味です。(ここまでは多分触らないとは思いますが) 実際のところ、PICからPCへは超簡単なのですが、逆は死ぬほど面倒 やるとほかの処理が出来ないほどになりますね。

  • black2005
  • ベストアンサー率32% (1968/6046)
回答No.3

訂正 ×よって、周期は960Hzということになりますね。 周波数が960Hz、周期は1/960が正解ですね。

mne34677
質問者

お礼

何度もご回答していただきありがとうございます。 最後にもう一度質問したいのですが、アスキーコードについて調べた結果、1つの文字列が8bitでしたので string count=1516; puts(count) というように出力した場合は、8*4=32bitが一回の出力に必要だということになるのでしょうか? またRS-232ケーブルの種類によって通信速度に影響があるのでしょうか?

  • black2005
  • ベストアンサー率32% (1968/6046)
回答No.2

No.1です。 調歩同期ですよね? であればデータ以外にスタートbit、ストップbitが最低1bitづつ必要。 合計10bitで1文字となります。 よって、周期は960Hzということになりますね。

  • black2005
  • ベストアンサー率32% (1968/6046)
回答No.1

問題なく送れます。 ASCIIコード(キャラクタコードとも呼ばれる)であれば送れます。 http://www40.atwiki.jp/system-ed/pages/11.html

mne34677
質問者

お礼

迅速なご回答ありがとうございます。 もうひとつ質問があるのですが、9600bpsの速度で通信が可能ということは、8bitを一つと考えると、1200Hzの周期で通信可能ということになるのでしょうか?