• ベストアンサー

C言語によってシリアル通信をおこないたいのですが

PCとマイコンとでシリアル通信でデータの受け渡しを行いたいのですがよくわかりません。 PC←マイコン方向はハーイパーターミナルを使え値を確認できるのでよいのですが、PC→マイコンの方向でのプログラムがわかりません何か参考になるものはありませんか? PCはVC++を使用しています。 マイコンはH8/3664です。

質問者が選んだベストアンサー

  • ベストアンサー
  • yasuch
  • ベストアンサー率41% (27/65)
回答No.2

ここにも簡単なサンプルが載ってますよ

参考URL:
http://www-kobayashi.ctrl.titech.ac.jp/~mtanaka/vc/A/3-i.html
taiki77
質問者

お礼

回答ありがとうございます。参考にして見ます

その他の回答 (1)

  • g_vikke
  • ベストアンサー率16% (15/90)
回答No.1

もう一台PCを準備し、それをマイコンに見立てればよいです。 偽マイコン側のソフトはTeraTermやハイパーターミナルを使えば値を確認できるし、送信もできます。 MSDNのサンプルにも使える送受信できる可能なものがありました。なかなか便利でしたよ。

taiki77
質問者

お礼

お返事遅くなってすみません。回答ありがとうございました。送信のプログラムはMSDNを参考にして見ます

関連するQ&A

  • H8マイコンとPCをUSBでシリアル通信

    H8マイコンとPCをUSBでシリアル通信 マイコン( H8/2215 )をUSBでPCと繋ぎ、RAM上にあるデータを シリアル通信で送りたいと思っています。 現在、書籍のサンプルソースを参考に図1のような構成で プログラムを実行すれば H8/2215 から PC_1 へデータが送れる ことを確認しました。 しかし、図2の構成で実行するとデータが送れません。 また、PCとは繋がず RS232C のケーブルだけをマイコンにさせば なぜか問題なく動作します。 このような状態なので、プログラムを試行錯誤しながら調整 しているのですがなかなかうまく通信出来ません。 図2のような構成でシリアル通信したい場合、どこをどんな風に 調整すれば良いのでしょうか? 参考URLでも何でも構いませんのでアドバイスお願いします。 図1  PC_1 <--- USB ---> H8/2215 <--- RS232C ---> PC_2 図2  PC_1 <--- USB ---> H8/2215 <サンプルソースの書籍> 「USBターゲット機器開発のすべて」(CQ出版社)  サンプルソースはルネサスのH8S/2215用USB-シリアル  変換サンプル・プログラム

  • シリアル通信の通信・検証方法とは?

    Visual C++ 6.0(MFC)でプログラミングを行っています. VB 6.0でPCから値を入力し,PICへRS232Cケーブルを用いて値を送り,モータコントロールするプログラムは既に存在しており,現在はVBで書かれていた部分(インターフェイス部)をVC++に書き換えようとしています. サンプルプログラムを参考にシリアル通信に関するVC++のプログラムは完成し,PCからモータの制御を行おうと思ったのですが,うまくいきません. こういった際,どこに問題があるのかを検証したいのですがどうすればいいでしょうか? 現状, 1,シリアル通信ができていない 2,シリアル通信はできているが,PICへ値がうまく格納されていない 3,それ以外 問題があるのは分かるのですが,プログラマーのほうに原因がフィードバックされないため困っています. 明確な答えでなくても,アドバイスのようなものがいただけたら幸いです.

  • マイコンのシリアル通信

    マイコンでシリアル通信を用いてセンサのデータを取得したいのですが、このセンサのシリアル通信の設定がストップビット2、奇数パリティとマイコンでシリアル通信をするのにやっかいな設定となっています。また取得したセンサデータをシリアル通信を用いてPCに送りたいと考えているのでマイコンのシリアルは2ch必要です。私もいろいろ探しているのですが、なかなか条件を満たすマイコン(ストップビット2対応、シリアル2ch、A/D2ch)が見つかりません。どなたか情報ありましたら教えてください。よろしくお願いします。できればDIPタイプのマイコンを探しています。

  • LINUX上でシリアル通信(C++)

    PCとマイコンをシリアル通信を介して送受信したいのですが どのサイトを見てもVC++やWindows上のAPIを使ったものばかりです。 開発環境はLINUXのgcc4.5を想定していますが、使える関数が異なりますよね? どのような流れで作成すればいいのでしょうか。 単にシリアル変換のUSBで文字列を送受信するだけでいいです。

  • PCとマイコンとのシリアル通信

    マイコンとパソコンでシリアル通信を考えています。 WEB検索すると「TeraTerm」というソフトにたどり着きました。 通信はバイナリです。(ASCII文字でのやり取りは行いません) 例えば、  マイコンボード上にトグルSWとLEDランプが実装されているとします。  ・PCからトグルSWコマンド「0Ah」をマイコンに送信。  ・マイコンはトグルSWの状態をONなら「00h」をOFFなら「01h」をPCに返信。  ・PCは返信データが「00h」なら、LED点灯コマンド「0Ch」をマイコンに送信。  ・PCは返信データが「01h」なら、LED消灯コマンド「0Dh」をマイコンに送信。 みたいなことを行いたいです。 TeraTermでどのように記述してよいかわからないです。 このへんを教えてくださいよろしくお願いします。

  • RS232Cを用いたSCIでのシリアル通信について

    PCで計算して吐き出した5~6個の数値データ(それぞれ3桁の数字で最大2バイトあれば足りる大きさです)をRS232Cを使ってSCIでマイコンに送り、マイコン側でそのデータを使って計算する、というシステムを考えています。 色々勉強してみたのですが、例えばPC側プログラムがテキストデータで吐き出した数値を読み込んで送信する場合、全てアスキーコードで送られてしまうのでしょうか?少なくともキーボード入力の値はアスキーコードで送られているようだとはわかりましたが・・・。 また、まだアルゴリズムは考えてませんが、PC側の計算プログラムから直接に数値をPC側送信プログラムに渡してあげた場合は、やはりそのままの値(例えば8なら1バイト2進法で00001000で送られるものなのでしょうか? 開発環境はC言語で、マイコンはSH2だということです。通信は今はテスト段階でハイパーターミナルを使っていますが、いずれは命令を出したときに適切な値を送信するようにしたいので、C言語で書かれたSCI通信のフリーウェアなどを使う検討もしています。 その理由はC言語プログラムの中にハイパーターミナルをどのように含めればいいのかわからなくて・・・ C言語でできたソフトなら、そのままPC側計算プログラムに組み込めばいいかなぁと思いまして・・・。(浅はか?) この点についてもご教授頂ければ幸いです。 説明不足かもしれませんが、その場合はご指摘ください。 どうぞ、宜しくお願いいたします。

  • H8SXを用いたシリアル通信について教えてください

    H8SX/1655を利用して、linuxでシリアル通信しようと考えています。 マイコン側ではwhile文を用いて,適当な文字(例えば、"1","2","3","\0"の4文字)を連続的に出力しています。 linuxで入力された値を確認しますと、"2","3","2","\0","1","2","3","\0","1","2","3","\0","1","2"・・・となり、最初の数文字の順番がおかしくなりますが、数文字以降は規則正しく並びます。 この4文字を正確に入力させたいため、if文にて"\0"の入力を確認した後、"1","2","3"をreadするようなプログラムを作ったのですが、何度か正確に"1","2","3"の順で正確に読み取るものの、数回読み取りに誤りがあり、"2","3","3"となるように、値がおかしくなってしまいます。 プログラムを色々と訂正しましたが、なかなか上手くいかず、原因が分かりません。 どなたか教えていただけないでしょうか。

  • マイコン同士をsciを使ってシリアル通信をしたいと考えています。

    マイコン同士をsciを使ってシリアル通信をしたいと考えています。 単純に マイコン1側 マイコン2側 RXD<->TXD TXD<->RXD GND<->GND を接続すれば通信できると考えたのですが、上手くデータを送ることが出来ません。 どうすれば通信できるでしょうか? また、参考になる書籍・WEBサイトをご紹介して頂ければ幸いです。

  • C言語のシリアル通信について

    C++でプログラムを書き、シリアル通信(RS232C)を使ってデバイスを動かしたいと試みているのですがよくわからないのでアドバイスお願いします。(OSはlinux) デバイス特有の命令を送るところがよくわかりません。(命令はキャラクタではなくバイナリで送らなければなりません。) 命令はバイナリデータです。 例、 char i[]={255,20,0,10}; ↑このようなデータです。 このようなデータを送る際はfwrite関数を使うということは調べたのですがどのように表すかわからないので教えていただきたいです。 初めのシリアルポートを開く際に”wb”をつけないといけないみたいですがどのようにつければいいのでしょうか。 fd=open("/dev/ttyS0",O_RDWR|O_NOCTTY|O_NONBLOCK); if(fd<0) { printf("erroe\n"); exit(-1); } ↑自分が書いたポートを開く時のプログラムです。最初の行の最後に”wb"を付け足せば良いのですか。 上記の例のような命令を送るとすると fwrite(&i,sizeof(char),4,fd); return 0; で良いでしょうか。warningがでて動作しないのでアドバイスよろしくお願いします。 説明が下手で申し訳ありません。一番わからない点はシリアル通信で命令を送るときのポートオープンとfwriteを使った命令を送る形式です。どうぞよろしくお願いします。

  • H8 3694 を使ってI2C通信をC言語で試みようと思っています。 

    H8 3694 を使ってI2C通信をC言語で試みようと思っています。 H8 3694側をスレーブにして、受信を行っているのですが、上手くいきません。 プログラム&初期設定などはハードウェアマニュアルの使用例通りに設定しましたが、一度マスタからの受信を行うと、その後2回目の通信の途中でデータ受信が出来ないようなのです。使用例に載っているレジスタ意外にも設定しなければいけない項目・注意点などご存じの方がおりましたらよろしくお願いします。 なかなか、3694をスレーブに使用している方が見つからなくて困っています。参考になりそうなHPや本など何でも構いません。紹介していただけるとありがたいです。 C言語、マイコン歴1年の初心者です。未熟な質問で申し訳ありませんがよろしくお願いします。

専門家に質問してみよう