2016-02-16 3 views
1

Я пытаюсь создать скрипт powershell, который отправляет строку из 1 COM-порта в другой. Строка должна отображаться на экране teraterm принимающего порта. Но я не могу заставить его работать, хотя он должен быть прямым. Экран teraterm просто пуст.Последовательная связь Powershell to teraterm

Установки: У меня есть последовательный адаптер 2 usb (COM3, COM4), оба связаны с физическим последовательным кабелем. teraterm setup new-line setup 2

код PowerShell:

[System.IO.Ports.SerialPort]::getportnames() 
#prints COM1 COM3 COM4 

$STX = [char] 2 
$ETX = [char] 3 

$port= new-Object System.IO.Ports.SerialPort COM4,9600,None,8,one 
$port.open() 
$port.Write("Hello world\r\n") 
$port.close() 

$port.open() 
$port.Write("Hello world\n") 
$port.close() 

$port.open() 
$port.Write("Hello world\r") 
$port.close() 

$port.open() 
$port.WriteLine("Hello world") 
$port.close() 

$port.open() 
$port.WriteLine($STX+"Hello world"+$ETX) 
$port.close() 

read-host 

Все, что я пропустил или какие-либо указатели?

Дополнительно: попытался также посылать строки с CMD и C#
Нам удалось отправить строку из старого портативного устройства (так кабель хорошо)

+0

Вы пробовали подключения КПК и передачи данных на COM4, ​​а затем делать '$ Port.Open(); $ Port.ReadExisting(); $ Port.Close()', чтобы увидеть, если вы можете читать из порта? Поскольку это USB-адаптер, PowerShell может не видеть его так, как вы ожидали, поэтому вы можете отправлять данные в ничто. – TheMadTechnician

+0

Строка '" Hello world \ r \ n "' ... вы получаете другой ответ, если вы попробуете '' "Hello world'r'n" ''. Backtick - это escape-символ PowerShell. – Matt

+0

@Matt не меняет еще никакого ответа – dwana

ответ

0

Оказывается, что драйвер для USB преобразователи были плохими. Исправлена ​​проблема с виртуальными последовательными портами. Также обратите внимание, что в моей ситуации мне пришлось использовать ctrl + c (ETX) для отправки сообщения.

$port= new-Object System.IO.Ports.SerialPort COM3,9600,None,8,one 
$ETX = [char] 3 
$port.open() 
$port.WriteLine('Hello') 
$port.Write($ETX) 
$port.Close() 
Смежные вопросы