-1

我一直在尝试与通过 USB 在虚拟 com 端口上连接的扫描仪进行接口,以便通过串行命令触发它。由于环境的性质(工作计算机,无法访问其他应用程序,甚至不允许运行.ps1 脚本),我仅限于使用 Powershell。我能够创建/打开一个端口,设置一些参数并从扫描仪接收数据,但是似乎无论我通过 $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 的 $port 的更多信息: https ://i.stack.imgur.com/3Aje4.png

4

1 回答 1

1

要发送三个字节 0x16 0x54 0x0d 尝试发送:

[char]22+[char]84+[char]13 
于 2020-08-03T19:55:02.367 回答