用于发送CTRL + L的Python串行命令

时间:2017-07-06 02:59:33

标签: python windows python-3.x pyserial

我有一个客户显示器,它已连接到串口。我正在使用Windows机器。

Image

我想发送 Ctrl + L 来清除客户显示的显示,但我找不到可以帮助我的解决方案。基本上我希望发送 Ctrl +'任何命令'将来。

在命令提示符中我可以使用" Ctrl + L "清除现有显示并显示文本。以下是在提示

中显示的命令
echo ^LDisplay me > COMX // ^L is actually CTRL + L 

以上将输出为,

  1. 清除显示。

  2. 显示"显示我"

  3. 现在我正在尝试使用Python串行连接器实现相同的功能。

    import serial
    ser = Serial ('COM5',timeout=2)
    ser.write("\x0C") # equivalent to ctrl+L
    

    这根本不起作用。我得错误为

      

    串行连接异常:不支持unicode字符串,请编码为字节:' \ x03'

    但是,如果我尝试以下正常文本,它可以很好地工作,

    ser.write("Display me".encode()
    

    显示"显示我"在客户展示中。

    我尝试使用ser.write("\x0C".encode()),但我没有输出。

    我收到错误

      

    串行连接异常:不支持unicode字符串,请编码为字节:' \ x1fc \ x00'

    我将不胜感激任何建议,改进和帮助来解决这个问题。感谢。

1 个答案:

答案 0 :(得分:2)

要在Python3中将 Ctrl + L 编码为字节,您应该使用:

b'\x0c'

为什么?

Ascii控制字符被编码为它们在字母表中的位置,因此 Ctrl + C ,因为它是字母表的第三个字母,编码为十六进制字符串,将是\x03。同样, Ctrl + L \x0c(十六进制C为十进制12)。

在python 3中获取字节,你可以用b预先挂起字符串。