質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Tera Term

Tera Termは、TeraTerm Projectが開発する国産のWindows向けターミナルソフト。telnetプロトコルでのリモートホストへの接続やCOMポートのシリアル接続が可能で、マクロが利用できます。

Q&A

解決済

2回答

1533閲覧

TeraTermからマイコンに「0x15」を送りたい

ALOHAMS

総合スコア195

Tera Term

Tera Termは、TeraTerm Projectが開発する国産のWindows向けターミナルソフト。telnetプロトコルでのリモートホストへの接続やCOMポートのシリアル接続が可能で、マクロが利用できます。

0グッド

0クリップ

投稿2022/06/14 06:28

###
TeraTermからtelnet接続したマイコンに16進数「0x15」を送りたいです。

ホストPCとマイコンをethernetケーブルで接続しており、ホストPC側のTeraTermでマイコンとデータの送受信をしております。

0x01から0x1Aの値を入力する際に「Ctrl」キーと文字キーを押すことで入力できますが、「Ctrl」キーと「u」キーを押した時のみ以下の画像のような値が一度に入力されてしまいます。

イメージ説明

Ctrl+uに割り当てられているショートカット悪いのかと考え、KEYBOARD.CNFの中なども確認したのですがCtrl+uに関する記述はありませんでした。
また、googleで調べましたが、結局わからず手詰まりとなってしまいました。

こちらの解決方法をお解りの方がございましたらご回答いただければ幸いです。何卒よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

たんに0x15がマイコンに送られて、マイコンが反応した結果では。(1b 5b …はマイコンの出力)

Teratermのlinemodeでは、ctrl+uはlinemode自身の制御で使ってしまうので出力されません。(BSを送れないのと同様の話。) teratermのソースコードで言えば、ttcmn.cのOutControl関数とか、ローカルエコーオプションが付いているなら、ControlEcho関数。

投稿2022/06/14 06:43

編集2022/06/14 13:31
matukeso

総合スコア1590

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ALOHAMS

2022/06/14 07:09

ご回答ありがとうございます。 Teratermの設定で改行するまで送信されない設定にしていることをお伝えしていませんでした。申し訳ありません。また、その他の設定としてはローカルエコーがonの状態で16進数表示する設定になっています。 質問本文中の画像は、Ctrl+uを押した瞬間であり、エンターキーを押しておらず、まだマイコンに送信されてない状況ですのでCtrl+uを押した際のローカルエコーであり、マイコンからの出力ではないと考えております。
matukeso

2022/06/14 07:35

>Teratermの設定で改行するまで送信されない設定 そんな設定ありましたっけ?どこの設定ですか?
ALOHAMS

2022/06/14 12:39

返信が遅くなってしまい申し訳ありません。 >>Line at a time mode / Character at a time mode はTELNETプロトコルの物なので、TCP/IP接続のみ適用となります。 マイコンや通信についての知識が浅いので間違ってたら申し訳ないのですが、イーサネットケーブルで接続しtelnetでマイコンと接続していますので行単位送信モードは適用されるのではないでしょうか? 実際にctrl+u以外のデータは入力後エンターキーを押した後、マイコンに送られているようです。
matukeso

2022/06/14 13:29

マイコンとあったので、途中でシリアルポートのことと勘違いしてました。すみません。
ALOHAMS

2022/06/15 02:56

回答ありがとうございます。 無事解決できました。 ソースコードを確認したところ、matukeso様がおっしゃったとおり、ControlEcho関数内でTelLineModeがonになっている時、Ctrl+uは現在の行の内容を削除する機能になることが確認できました。 ということでTERATERM.INIファイル内のEnableLineModeをoffにしてCtrl+uを実行したところ、 0x15を出力することができました。 安易に行単位送信モードにしてしまったのがいけなかったですね・・・ 何はともあれ無事解決できました。まことにありがとうございました。 参考:ControlEcho関数内ctrl+uが入力されたときの処理 -------------------------------------------------------------------------------- else if (d==0x15/*ctrl-u*/ && cv->TelLineMode) { // Move to top of line (CHA "\033[G") and erase line (EL "\033[K") memcpy(TempStr, "\033[G\033[K", 6); TempLen += 6; retval = TRUE; } --------------------------------------------------------------------------------
guest

0

Ctrl+uというのは、もしかしてWindows自体のショートカットがそこに出ているのかもしれませんが。
ってことで、手としては

  1. キーボード設定ファイルをいじって、特殊なキーにその0x15を割り当ててしまう
  2. 0x15送信用のマクロを組んで、その都度それを実行する

ということになろうかと思います

投稿2022/06/14 07:03

y_waiwai

総合スコア87749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ALOHAMS

2022/06/14 08:17

ご回答ありがとうございます。 二通りの解決方法を提示していただきありがとうございます。 2番のマクロを組む方法で0x15をマイコンに送ることは確認できています。 今回はキーボードの入力から0x15を送りたいと考えておりますので1番の特殊なキーに0x15を割り当てる方法を調べたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問