Edit: "Re-answered" after question clarification
De acordo com a Microsoft (não consigo encontrar a seção Using command redirection operators
do Windows mais recente do que XP):
Duplicating handles
The & redirection operator duplicates output or input from one specified handle to another specified handle. For example, to send dir output to File.txt and send the error output to File.txt, type:
dir>c:\file.txt 2>&1
When you duplicate a handle, you duplicate all characteristics of the original occurrence of the handle. For example, if a handle has write-only access, all duplicates of that handle have write-only access. You cannot duplicate a handle with read-only access into a handle with write-only access.
Então, boas notícias são:
- Você pode alterar
<COM4 >COM4 2>COM4
para<COM4 >&1 2>&1
.
Más notícias são:
- Você está misturando requisitos de acesso somente de leitura
<COM4
e somente>&1 2>&1
somente para gravação e está alterandoAccess Denied
paraThe handle could not be duplicated during redirection of handle 1
.
Se você mudar:
-
<COM4 >&1 2>&1
to>COM4 2>&1 <&1
(somente leitura e somente gravação ainda são misturadas), o que funciona e dá a vocêSTDOUT
eSTDERR
, masSTDIN
ainda parece ser * quebrado. (*) Eu fiz alguns testes, mas parece queSTDIN
não funciona ...
No entanto, posso ver uma solução para corrigi-lo:
- Use o
com0com
null-modem emulator e defina 3 pares de portas virtuais:-
COM_O
-COM_O4
paraSTDOUT
; -
COM_E
-COM_E4
paraSTDERR
; -
COM_I
-COM_I4
paraSTDIN
.
-
-
Crie um hub serial com
hub4com.exe
(com0com
part) deCOM_O4
,COM_E4
,COM_I4
eCOM4
:-
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
- Lembre-se de configurar os parâmetros de transmissão adequados (você próprio):
--baud
...
-
-
E
<\.\COM_I >\.\COM_O 2>\.\COM_E
forma linha de comando.
Finalmente, para:
hub4com.exe --route=0:1 --route=2,3:0 --octs=off \.\COM4 \.\COM_I4 \.\COM_E4 \.\COM_O4
e:
cmd <\.\COM_I >\.\COM_O 2>\.\COM_E
você tem uma linha de comando do Windows em COM4
on 19200 8N1
...