- ベストアンサー
PCとマイコンのシリアル通信方法
- PCとマイコンのシリアル通信について考えています。TeraTermを使用してバイナリ形式での通信を行いたいです。
- 具体的な例として、マイコンボード上に実装されたトグルSWとLEDランプの状態をPCから操作する方法について教えてください。
- TeraTermの記述方法やコマンドについても詳しく教えてください。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
回答6です >ラインモニタ機は単なるモニタ機ですか? モニタ機能(監視、解析)がメインであり送信機能は付録です 必ずしも送信できるとは限らない デバッグ、解析するための補助機能として送信可能と謂うだけです >受信したデータの内容に応じて次の送信データを送るようなアプリソフト Tera Termマクロ機能で実現可能ですが https://mag.osdn.jp/10/01/08/0825239 http://www.macrosh.com/tera-termmakuronitsuite/komando-yi-lan TeraTermマクロ機能を勉強してプログラムするヒマが有るなら VBやC#で出来てしまった < 私自身の経験 Visual Basic でシリアル ポートに文字列を送信する https://docs.microsoft.com/ja-jp/dotnet/visual-basic/developing-apps/programming/computer-resources/how-to-send-strings-to-serial-ports https://docs.microsoft.com/ja-jp/dotnet/visual-basic/developing-apps/programming/computer-resources/how-to-receive-strings-from-serial-ports SerialPort.Read メソッド https://docs.microsoft.com/ja-jp/dotnet/api/system.io.ports.serialport.read?view=dotnet-plat-ext-6.0 SerialPort.Write メソッド https://docs.microsoft.com/ja-jp/dotnet/api/system.io.ports.serialport.write?view=dotnet-plat-ext-6.0
その他の回答 (6)
- lumiheart
- ベストアンサー率47% (1148/2427)
回答2です >VisualBasicでこの辺のアプリを作るのが良いかもしれませんが、時間がかかるので 使えるヤツを使えば1時間も掛からん VB.NETシリアル通信 サンプルプログラム https://www.kana-soft.com/tech/sample_0008.htm C# シリアル通信 サンプルプログラム https://www.kana-soft.com/tech/sample_0007.htm サンプルとは言え前回に挙げたラインモニタの必要最低限機能はある ただ、バイナリではなくてテキストだけど でも表示がテキストなだけでバイナリ送受信可能なプログラムです テキスト<->Hex変換プログラムを追加するだけ ラインモニタの本当の使用目的は このような通信系プログラムのデバッグするのが目的です 通信系プログラムにバグが有って通信できないと どこにバグがあるのかを検出するは非常に困難 タイミングが合わなかったり、通信したデータが想定と違ってたり なので実際に送受信してる電文を外部のモニタ装置で監視する >やっぱり ハローワールドからだった 通信系プログラムのデバッグで一番最初にしなければならない事は "hello worldを送受信させる事から始まる https://ja.wikipedia.org/wiki/Hello_world
補足
話を整理します。 ①マイコンの通信プログラムの話(例:UART) ②PCとマイコンとの通信を行うアプリ(ソフト)の話 私の質問は②です。 ①はできています。←①は正しくできているという意味。 なので「HelloWorld」のようなことは行う必要はありません。 紹介頂いた「VB.NETシリアル通信 サンプルプログラム」をのようなものを作りたい(もしくは探しています)です。 ここで質問です。 ラインモニタ機は単なるモニタ機ですか? ラインモニタ機とPC4を組み合わせれば、元の例のようなことができるのでしょうか? ただ単にモニタするだけではなく、最初の例で示したように受信したデータの内容に応じて次の送信データを送るようなアプリソフトが欲しいのです。(作りたいです) ラインモニタ上でちょっとしたプログラムが作れるのでしょうか?
- hahaha8635
- ベストアンサー率22% (801/3611)
ね やっぱり ハローワールドからだった UART 歯通信プロトコルです https://www.analog.com/jp/analog-dialogue/articles/uart-a-hardware-communication-protocol.html マイコン側が何かわからないが アルディノ? ラズパイ? https://www.renesas.com/jp/ja/support/engineer-school/mcu-programming-peripherals-03-serial-communication に書かれてる サンプルプリグラムが必要になります
- nowane4649
- ベストアンサー率54% (230/422)
eraTermは、テキストメッセージを主眼とした通信端末ソフトウェアです。ですので、バイナリ通信のみを行うには全く向いていません。 ある程度はCtrlキーとの同時押しで対処できるけど、凄く複雑になります。 開発停止して久しい古いソフトですが、Vectorにてskohno氏の公開する「シリアル通信解析ツール ComT」が、かなりバイナリ通信においては非常に使いやすいです。 https://www.vector.co.jp/soft/win95/hardware/se471464.html 同様に、VectorにてYARD 氏の公開するRs232cというソフトウェアも、かなり、使いやすいです。 先述のComTとは一長一短で、場合によって使い分けています。 https://www.vector.co.jp/soft/win95/hardware/se369900.html 両ソフト共にWindows10 21H2までは正常に動いています。 シンプルなソフトですので、使い方はソフト付属のドキュメントですぐにわかると思います。
- hahaha8635
- ベストアンサー率22% (801/3611)
それ以前の問題だと思うが マイコン側に通信ソフトいれましたか? まずは ハローワールドとLチカからのレベルからだと思うが
補足
>それ以前の問題だと思うが それ以前とはどう意味ですか? それ以前という回答が意味不明です。 >マイコン側に通信ソフトいれましたか? 通信ソフトとは何ですか?意味が通じません? マイコンにはuart通信の機能があります。それを使います。 マイコンをと言うのを知っていますか?
- lumiheart
- ベストアンサー率47% (1148/2427)
はっきり言ってTeraTermはバイナリ通信には不向きです 使えないわけではないがぁ、使いたくない 会社指定でTeraTerm限定で他のソフトは使用禁止とかなら別ですが なにもわざわざTeraTermを使う必要はないでしょう TeraTermはテキスト通信(Ascii)が主な用途、バイナリ通信は得意ではない ラインモニタ https://www.lineeye.co.jp/html/product_le1200.html https://www.fukufukudenshi.jp/v2/LineMonitor/ http://www.frientech.com/lw232c.html 上記は専用のハードウエアですが パソコンソフトのラインモニタ https://www.vector.co.jp/soft/win95/hardware/se423507.html https://www.vector.co.jp/soft/win95/hardware/se471464.html これらを使ってみれば? バイナリデータを受信してHEX表示してくれる 更に、バイナリデータの送信も可能だし
補足
貴重なご意見ありがとうございます。 TeraTerm以外でも全然構わないです。 補足します。 質問で述べた例はあくまでも例です。 要はPCからマイコンに「○○をON/OFFしなさい」と命令したり、「スイッチの状態を確認」したりしたいのです。 また、マイコンからの返事によって、次の命令を使い分けたりしたいのです。 VisualBasicでこの辺のアプリを作るのが良いかもしれませんが、時間がかかるので、代用できる既存のものがないか探していたのです。 ご紹介いただいたsoftを見てみます。
- kaba__san
- ベストアンサー率45% (27/59)
「TeraTerm」「バイナリ」で検索すればいくらでも説明が見つかります。 それよりもそのデータの仕様を「40h」だけシフトすればテストが劇的に簡単になり開発が早くなりますよ。 ・PCからトグルSWコマンド「4Ah」(「J」キー)をマイコンに送信。 ・マイコンはトグルSWの状態をONなら「40h」をOFFなら「41h」をPCに返信。(テキストモードで@かAが表示される) ・PCは返信データが「40h(@)」なら、LED点灯コマンド「4Ch」(「K」キー)をマイコンに送信。 ・PCは返信データが「41h(A)」なら、LED消灯コマンド「4Dh」(「L」キー)をマイコンに送信。
補足
質問の例はあくまで例です。 PCからマイコンに「○○をON/OFFしなさい」と命令したり、「マイコンボードのスイッチの状態を確認」したりしたいのです。 また、マイコンからの返事によって、次の命令を使い分けたりしたいのです。 teratermのような通信ソフト上で「if文やswitch-case文を使って、マイコンからの返信データを解析して、それに応じた命令を送る」のようなことがしたいのです。 求めているのは単なるラインモニタではないです。
お礼
ありがとうございます。 VBやるしかなさそうですね。 さて、今回の質問ですが、何故「HelloWord」に飛び火しのか 個人的に納得いかないですが。 いろいろご教授頂きありがとうございました。