Как отправить / записать последовательную команду сканеру Honeywell 1300g через виртуальный COM-порт? - PullRequest
0 голосов
/ 03 августа 2020

Я пытался взаимодействовать со сканером, подключенным через 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()

Я безуспешно пробовал все следующие комбинации команд для отправки на порт:

  • порт. 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")

Вот изображение, на котором показана дополнительная информация о $ port от Powershell: https://i.stack.imgur.com/3Aje4.png

1 Ответ

1 голос
/ 03 августа 2020

Чтобы отправить три байта 0x16 0x54 0x0d, попробуйте отправить:

[char]22+[char]84+[char]13 
...