将RS232连接到串口,并从python脚本建立到Nextion显示器的连接

2024-09-26 17:52:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在python脚本和Nextion显示之间建立串行通信。 我想创建一个自定义固件上传,所以我可以用它代替Nextion编辑器。你知道吗

不幸的是,我无法建立一个连接到屏幕(RS232到串行正确连接和检测,我使用默认9600波特率)。 发送后

  DRAKJHSUYDGBNCJHGJKSHBDNÿÿÿ
  connectÿÿÿ
  ÿÿconnectÿÿÿ

它应该做出正确的反应。。。 我在Nextion中找到了一个解释上传协议的文档:https://nextion.tech/2017/12/08/nextion-hmi-upload-protocol-v1-1/

这是我的剧本,不时产生

b'$\xff\xff\xff'
import serial
from time import sleep
ser = serial.Serial('/dev/tty.usbserial-A94RJPXT',9600,timeout=0)
ser.write(str.encode("  DRAKJHSUYDGBNCJHGJKSHBDNÿÿÿ"))
ser.write(str.encode("\n"))
ser.write(str.encode("  connectÿÿÿ"))
ser.write(str.encode("\n"))
ser.write(str.encode("  ÿÿconnectÿÿÿ"))
ser.write(str.encode("\n"))

while True:
        print(ser.readline())
        sleep(0.1)

工作代码:

import serial
from time import sleep
ser = serial.Serial('/dev/tty.usbserial-A94RJPXT',9600,timeout=0)

ser.write("DRAKJHSUYDGBNCJHGJKSHBDNÿÿÿ".encode('iso-8859-1'))
ser.write("connectÿÿÿ".encode('iso-8859-1'))  # could try some other encodings
ser.write("ÿÿconnectÿÿÿ".encode('iso-8859-1'))

while True:
        data=ser.readline().decode('iso-8859-1')
        if data !="":
                print(data)
        sleep(0.1)


Tags: fromimportdataconnectserialisosleepser
1条回答
网友
1楼 · 发布于 2024-09-26 17:52:15

如果您查看thisGitHub commit,您会发现它们确实:

this->sendCommand("DRAKJHSUYDGBNCJHGJKSHBDNÿÿÿ");
this->sendCommand("connectÿÿÿ");
this->sendCommand("ÿÿconnectÿÿÿ");

这表明您不需要空格或换行符。如果这不起作用,您还应该考虑不同的编码(并明确当前的编码):

ser.write("DRAKJHSUYDGBNCJHGJKSHBDNÿÿÿ".encode('utf-8'))
ser.write("connectÿÿÿ".encode('utf-8'))  # could try some other encodings
ser.write("ÿÿconnectÿÿÿ".encode('utf-8'))

相关问题 更多 >

    热门问题