• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PCとマイコンとのシリアル通信)

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

kaba__sanの回答

  • kaba__san
  • ベストアンサー率45% (27/59)
回答No.1

「TeraTerm」「バイナリ」で検索すればいくらでも説明が見つかります。 それよりもそのデータの仕様を「40h」だけシフトすればテストが劇的に簡単になり開発が早くなりますよ。  ・PCからトグルSWコマンド「4Ah」(「J」キー)をマイコンに送信。  ・マイコンはトグルSWの状態をONなら「40h」をOFFなら「41h」をPCに返信。(テキストモードで@かAが表示される)  ・PCは返信データが「40h(@)」なら、LED点灯コマンド「4Ch」(「K」キー)をマイコンに送信。  ・PCは返信データが「41h(A)」なら、LED消灯コマンド「4Dh」(「L」キー)をマイコンに送信。

EGA4545
質問者

補足

質問の例はあくまで例です。 PCからマイコンに「○○をON/OFFしなさい」と命令したり、「マイコンボードのスイッチの状態を確認」したりしたいのです。 また、マイコンからの返事によって、次の命令を使い分けたりしたいのです。 teratermのような通信ソフト上で「if文やswitch-case文を使って、マイコンからの返信データを解析して、それに応じた命令を送る」のようなことがしたいのです。 求めているのは単なるラインモニタではないです。

関連するQ&A

  • パソコンを使ってマイコンとシリアル通信

    マイコンでソフトを開発してる組み込み系の技術者です。 例えば、PCからマイコンへ  UART, 9600bps, StopBit=1, LSBファースト、バイナリ通信 で送受信したいです。 PCから送信してマイコンからデータが返信されるのを確認したいです。 単純に送信して受信してだけでなく、 例えば、0x00を受信したら、次の送信を行い、 0x00以外なら再び同じ送信を行うなどのようなことがしたいです。 また、受信してから所定時間後に次の送信を行うなどです。 要するに、受信条件で次の送信をきりわけたいです。 例えば、VB2010だとある特定の数字を受信すると、停止コマンドとみなし、 通信が終了してしまうと聞いたことがあります。 また、VBだともろにソフトを組むことになり、そのソフト作成が大変そうです。 できるだけ簡単な記述で実現させたいです。 説明がうまくできなくてすいません。 ご存知の方、教えてください。

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

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

  • 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-シリアル  変換サンプル・プログラム

  • マイコンを用いたバイナリー形式での通信の方法

    以下のようなハード環境とプログラムで、マイコンの変数値をPCへ取り込む環境(データロガー)を実現しております。ただし、更にデータの取り込み速度を向上させたく考えておりますが、その手段として、”バイナリー形式”での通信が適用できると情報を得ておりますが、具体的な手法が不明です。よろしくご教授をお願いします。 <環境> ・H8マイコン ・RS-232CでPCと接続 ・PCでのデータ取得は、ハイパーターミナルを利用 <プログラム> (1)送信する部分 H8のSCI3を利用して、1文字ずつ送信 以下具体的に作成したプログラムです void sci3_tx(char data){ while (SCI3.SSR.BIT.TDRE==0); SCI3.TDR=data; } (2)実際の送信 "1234"(←千二百三十四)と"3456"(←三千四百五十六)というデータを連続して送信したい場合には、 sci3_tx(1+48); sci3_tx(2+48); sci3_tx(3+48); sci3_tx(4+48); sci3_tx('\r'); sci3_tx('\n'); sci3_tx(3+48); sci3_tx(4+48); sci3_tx(5+48); sci3_tx(6+48); sci3_tx('\r'); sci3_tx('\n'); と処理し、ハイパーターミナルでデータを保存して、"1234"と"3456"を取り出しています。 <ご質問の詳細> (1) 上記のように2つの数値をバイナリー形式で送信するためには、どのように実施したらよいのでしょうか? 例えば、バイナリーの場合2の8乗であるので、 1234を送信する場合、255+255+255+255+214で、11111111、11111111、11111111、11111111、 11010110と送信して、加算処理をすればよろしいでしょうか? (→255を11111111と送信するプログラムもいまいち不明ですが) (2)バイナリー形式で送信する際の送信始め/終わりの区切りはどのように考えたらよろしいでしょうか? (3)バイナリー形式を受信できるソフト(ハイパーターミナルに対応するもの)は、何になりますでしょうか? 以上、いくつかのご質問をさせていただきましたが、参考となる情報(Web、書籍)がありましたら、合せてご紹介をお願いいたします。

  • VCでマイコンからのログ取得

    PCとマイコンをUSBシリアルケーブルで接続し、指定したコマンドでマイコンからのログを取得 およびマイコンの操作を行いたいのですが、やり方が分かりません。 開発環境はWindows Visual Studio C++です。 Teratermのようにあるコマンドを入力すると ログが表示されるようなGUIを作成したいと思っています。 USBからデータを受信あるいは送信するにはどのようなコードを書けば良いのでしょうか。

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

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

  • シリアルポート通信

    VB6でシリアルポート通信を行っているものです。 22byteと26byteのデータをバイナリ受信したいのですが、異なるデータ長のデータをうまく取り込む方法がわかりません。 現状は、26byteのみで運用していたため InputLen=26 RThreshold=25 として運用していました。 22byteのときも26byteの時もスタートコード(02h)とエンドコード(0dh)が付きます。 この手のソフト制作が得意な方がいらっしゃいましたら、ご教示いただきたく。 InputLenとRThresholdの意味合いについてもご存じでしたら、教えてください。

  • Arduino互換機によるシリアル通信機機器制御

    Arduino互換、Japaninoでシリアル通信による蛍光表示管(VFD)モジュールの制御を行いたいのですが、どうすればいいでしょうか。 蛍光表示管(VFD)モジュールはFUTABA製のGP-1150Aという製品で、PCとはRS-232Cのシリアル通信にて制御できます。 例えば、 HyperTerminalで、あいうえおと入力すれば、VFDに「あいうえお」と表示され、 ESCを押して、[2J(消去コマンド)を入力すれば、モジュールがコマンドと認識して、画面が消去されます。 また、バイナリ形式で上記コマンドを16進に置き換えた、1B5B324Aというバイナリデータを送信しても画面を消すことが出来ます。 今、分かっていること ・VFDモジュールはPCとシリアル通信にて制御が出来る ・バイナリエディタで、コマンド+日本語データを作り、バイナリデータを送ればVFDモジュールを意のままに操作できる。 ・Japaninoと、VFDモジュールは、そのままでは通信が出来ない。 ・JapaninoとVFDモジュールの通信には、MAX232互換チップ等のレベル変換ICが必要 分からないこと ・どのようにJapaninoとMAX232を接続すればよいか ・スケッチをどのように書けば、バイナリデータを送ることが出来るのか。 ・Japanino上に設置されたボタン or 追加したボタンを押すことにより、データがVFD側に送られるようにする。 です。 アドバイス等、頂ければ幸いです。 どうぞよろしくお願いします。

  • シリアル通信バイナリー変換

    機器とのシリアル通信をテラタームで行っています。 この機器の入力送信モードに入るためには、テラターム上でCtrl+kを押す必要があります。 このとき、機器へはどのようなデータがおくられているのでしょうか? テラタームを使わずに送信しようとしています。そこで、キー「Ctrl」「k」をバイナリーで送信してみましたが、入力送信モードにはいることができませんでした。バイナリーでの送信は、単純に「Ctrl」「k」を順に送っているだけで、テラタームで「Ctrl+k」を押したとき送信される情報とは違っているのではと推測しています。ただそのバイナリー情報は何にあたるのかがわからないでいます。ご教授お願いします。

  • teratermではシリアル通信出来るのですが・・

    現在アームロボットをPCからシリアルで送って制御するプログラムを作りたいと思っております。 現在Teratermからコマンドを送ってアームロボットが動く事は確認出来ております。 ただ、そこからC#にてプログラムを作成して動かそうとするとどうしてもコマンドを受け付けてくれません。 Teratermの設定は  ボーレート9600bps  データ長8bit  パリティnone  ストップビット 1bit  フロー制御 non です。 これで接続して「NT」と打ってリターンを押すと ロボットが原点復帰動作をします。 一方C#では  SerialPort port = new System.IO.Ports.SerialPort("COM2",9600,Parity.None,8,StopBits.One);  port.Open();  port.Write("NT");  port.Close();  port.Dispose(); と記述して実行しますが動きません。 改行コードが怪しいと思い、teratermで改行コードを CRからCR+LFに変更してみましたが問題なく動きます。 teraterm以外にもシリアル通信チェッカーv4.1.0 を試しましたが動きませんでした。 teratermは何か特別な仕様なのでしょうか? 何か見落としている設定項目ありますでしょうか? どうぞアドバイスよろしくお願い致します。