
編集:主な例を Zork Dungeon からデフォルトの OS シェルに変更しました。
最新のマシンでコンソール アプリケーションを実行しています。また、Super Serial Card を搭載した Apple //e も持っています。これにより、シリアル COM 接続を介してダム ターミナルとして機能できます (これ以上の詳細は役に立ちません)。USB シリアル ポートを使用して、これら 2 つのデバイスを問題なく接続できます。
最近のマシンでLinuxが起動している場合は、COM設定を構成し、デバイスファイルが属するグループに権限を与えることで、
$ bash </dev/ttyUSB1 >/dev/ttyUSB1 2>/dev/ttyUSB1
そして、Apple で bash セッションを取得します。Linux マシンはサーバーとして機能し、プログラムを実行しますが、入力と出力は単純なクライアントである Apple に送られます。これは、dungeon
(Zork) などのより専用なプログラムでも機能します。
COM
Windowsで同じことをするにはどうすればいいでしょうか?Windowsでは一度に1か所しかポートを開けないので、上記の解決策を正確に再現することはできません。上記のコマンドのWindows版を実行すると、
C:\> cmd <COM4 >COM4 2>COM4
アクセス拒否エラーが発生します。
COM ポートにデータを送信できます:
C:\> echo "Hello" >COM4
COM ポートから生の入力 (制御文字とエスケープ文字を含む) を読み取ります。
C:\> type <COM4
しかし、両方を同時に、同じプロセスまたは別のプロセスで実行することはできません。
PuTTY と RealTerm を使用しようとしましたが、どちらも Windows マシンからしか Apple を操作できませんでした。つまり、接続は機能しているものの、私が望んでいる方向とはまったく逆の方向になっています。接続された端末からアクセスできるように Windows コンソール アプリケーションをホストするにはどうすればよいですか?
答え1
編集:質問の明確化後に「再回答」
によるとマイクロソフトUsing command redirection operators
( XP より新しい Windows のセクションが見つかりません):
ハンドルの複製
& リダイレクト演算子は、指定されたハンドルからの出力または入力を別の指定されたハンドルに複製します。たとえば、dir 出力を File.txt に送信し、エラー出力を File.txt に送信するには、次のように入力します。
dir>c:\file.txt 2>&1
ハンドルを複製すると、元のハンドルのすべての特性が複製されます。たとえば、ハンドルに書き込み専用アクセスがある場合、そのハンドルのすべての複製には書き込み専用アクセスがあります。読み取り専用アクセスのハンドルを書き込み専用アクセスのハンドルに複製することはできません。
良いニュースは次のとおりです。
<COM4 >COM4 2>COM4
に変更できます<COM4 >&1 2>&1
。
悪いニュースは:
- 読み取り専用
<COM4
と書き込み専用のハンドル アクセス要件が混在しており、に>&1 2>&1
変更しています。Access Denied
The handle could not be duplicated during redirection of handle 1
変更する場合:
<COM4 >&1 2>&1
(>COM4 2>&1 <&1
読み取り専用と書き込み専用が混在したまま)これは機能し、使用可能なSTDOUT
とを提供しますSTDERR
が、STDIN
まだ壊れているようです。 (*)いくつかテストしてみましたが、STDIN
うまくいかないようです...
ただし、これを修正するための回避策が 1 つあります。
- 使用
com0com
ヌルモデムエミュレータ3 つの仮想ポート ペアを定義します。COM_O
-COM_O4
のためにSTDOUT
;COM_E
-COM_E4
のためにSTDERR
;COM_I
-COM_I4
のためにSTDIN
。
、、およびから
hub4com.exe
(com0com
部分)のシリアルハブを作成します。COM_O4
COM_E4
COM_I4
COM4
hub4com.exe --route=0:1 --route=2,3:0 --baud=19200 --data=8 --parity=no --stop=1 --octs=off --odsr=off --ox=off --ix=off --idsr=off --ito=0 \\.\COM4 \\.\COM_I4 \\.\COM_E4 \\.\COM_O4
- 適切な(独自の)送信パラメータを設定することを忘れないでください:
--baud
...
そして
<\\.\COM_I >\\.\COM_O 2>\\.\COM_E
コマンドラインを形成します。
最後に、
hub4com.exe --route=0:1 --route=2,3:0 --octs=off \\.\COM4 \\.\COM_I4 \\.\COM_E4 \\.\COM_O4
そして:
cmd <\\.\COM_I >\\.\COM_O 2>\\.\COM_E
Windows のコマンドラインがCOM4
オンになっています19200 8N1
...