Sij*_*tha 2 python windows pyserial python-3.x
我有一个客户显示器,它连接到串行端口。为此,我正在使用 Windows 机器。
我想发送Ctrl+L来清除客户显示的显示,但我找不到对我有帮助的解决方案。基本上我希望Ctrl将来发送+'任何命令'。
在命令提示符中,我可以使用“ Ctrl+ L”清除现有显示并显示文本。以下是在提示符中显示的命令
echo ^LDisplay me > COMX // ^L is actually CTRL + L
Run Code Online (Sandbox Code Playgroud)
以上将输出为,
清除显示。
显示“显示我”
现在我正在尝试使用 Python 串行连接器来实现相同的目的。
import serial
ser = Serial ('COM5',timeout=2)
ser.write("\x0C") # equivalent to ctrl+L
Run Code Online (Sandbox Code Playgroud)
这根本行不通。我收到错误为`
串行连接异常:不支持unicode字符串,请编码为字节:'\x03'
但是,如果我对普通文本尝试以下操作,则效果很好,
ser.write("Display me".encode()
Run Code Online (Sandbox Code Playgroud)
这会在客户显示屏中显示“显示我”。
我尝试使用,ser.write("\x0C".encode())
但没有输出。
我得到错误
串行连接异常:不支持unicode字符串,请编码为字节:'\x1fc\x00'
我将不胜感激任何建议、改进和帮助解决这个问题。谢谢。
要将Ctrl+编码L为 Python3 中的字节,您应该使用:
b'\x0c'
Run Code Online (Sandbox Code Playgroud)
Ascii 控制字符被编码为它们在字母表中的位置,所以Ctrl+ C,因为它是字母表的第三个字母,编码为十六进制字符串,将是\x03
. 同样,Ctrl+L会\x0c
(十六进制 C 是十进制 12)。
在 python 3 中获取字节,您可以在字符串前加上b
.
归档时间: |
|
查看次数: |
2137 次 |
最近记录: |