Как отправить / записать последовательную команду сканеру Honeywell 1300g через виртуальный COM-порт?
Я пытался взаимодействовать со сканером, подключенным через USB к виртуальному com-порту, чтобы запустить его с помощью последовательной команды. Я ограничен в использовании Powershell из-за характера среды (рабочий компьютер, нет доступа к другим приложениям или даже разрешено запускать скрипты.ps1). Я могу создать / открыть порт, установить некоторые параметры и получить данные от сканера, однако, похоже, что независимо от того, какую команду я отправляю через $ port.Write (command), ничего не происходит. У меня есть правильный COM-порт, подходящая скорость передачи данных. Согласно руководству пользователя команда для запуска - SYNTCR или 0x16 0x54 0x0d, но я просто не могу понять, как правильно ее отформатировать. Пока что я набираю в консоль вот что:
$port = New-Object System.IO.Ports.SerialPort COM3, 38400, None, 8, one
$port.DTREnable = $True
$port.RTSEnable = $True
$port.Open()
$port.Write(command)
$port.ReadExisting()
$port.Close()
Я безуспешно пробовал все следующие комбинации команд для отправки в порт:
- port.WriteLine ("\ x16 \ T")
- .WriteLine ("\ x16T")
- .WriteLine ("x16T")
- .Write ("\ x16 \ x54 \ x0d")
- .Write ('\ x16 \ x54 \ x0d')
- .Write ("x16 x54 x0d")
- .Write ("x16, x54, x0d")
- .Write ("\ x16M \ x0d \ x16T \ x0d")
- .Write ('\ x16M \ x0d \ x16T \ x0d')
- .Write ("\ x16T \ x0d")
- .Write ("\ x16T \ r \ n")
- .Write ("\ x16T \ r")
- .Write ("\ x16t \ r")
- .Write ("53,59,4e, 54,43,52")
- .Write ("0x53 0x59 0x4e 0x54 0x43 0x52")
- .Write ("53 59 4e 54 43 52")
Вот изображение, на котором показана дополнительная информация о порте $ от Powershell:
1 ответ
Чтобы отправить три байта 0x16 0x54 0x0d, попробуйте отправить:
[char]22+[char]84+[char]13