Как отправить / записать последовательную команду сканеру 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 
Другие вопросы по тегам