编写了一个基于python的串口通信,在ubuntu系统上通过串口来控制单片机,现在遇到的问题是运行python代码后,串口可以正常连接,但是指令没办法从PC端发到单片机端口,给单片机手动复位下后,指令就可以发送到单片机了,然后单片机正常控制电机。端口为ttyUSB0,端口权限也给了,实在想不明白什么问题,求大佬们解决一下。代码如下所示。
import serialimport threading # 导入线程包import timeimport sys#串口初始化data_ser = serial.Serial()data_ser.port='ttyUSB0'data_ser.baudrate=115200data_ser.bytesize=8data_ser.stopbits=1data_ser.parity="N"#奇偶校验位data_ser.setDTR(False)data_ser.setRTS(False)try: data_ser.open() print(f"成功打开串口")except serial.SerialException as e: print(f"无法打开串口: {e}") sys.exit(1)stop_event = threading.Event()def get_data(): while not stop_event.is_set(): # 使用 Event 判断线程是否需要停止 try: data_count = data_ser.inWaiting() if data_count != 0: recv = data_ser.read(data_ser.in_waiting).decode("gbk", errors="ignore") time.sleep(1) print(recv) process_received_data(recv) # 在这里调用处理函数 except Exception as e: print(f"读取串口数据时出错: {e}") time.sleep(0.1)data_thread = threading.Thread(target=get_data)def process_received_data(recv): # 假设 recv 是类似 "start:middle:end" 的形式 start_marker = 'MaiChong2的值为:' end_marker = 'MaiChong3' # 找到起始和结束标记的位置 start_index = recv.find(start_marker) end_index = recv.find(end_marker) if start_index != -1 and end_index != -1: # 从起始标记后到结束标记前的位置截取字符串 middle_part = recv[start_index + len(start_marker):end_index].strip() print(middle_part) else: print(f"Start or End marker not found")data_thread.start()angle1 = 'abcd700e1500f1000g0h250i0' + 'j0k0l0\r\n'data_ser.write(angle1.encode('utf-8'))# 等待一段时间,让线程运行time.sleep(5)
相同的程序将端口ttyUSB0换为COM11后,在windows系统上可以正常运行,不用手动复位。
这个问题可能是由于在连接单片机和PC时,两者之间的通信协议或参数不匹配所导致的。以下是一些可能的解决方案:
如果以上方法都不能解决问题,你可能需要更深入地调查这个问题,可能需要查看单片机的源代码或与单片机的制造商联系以获取更多的帮助。
本文向大家介绍Python中的Socket 与 ScoketServer 通信及遇到问题解决方法,包括了Python中的Socket 与 ScoketServer 通信及遇到问题解决方法的使用技巧和注意事项,需要的朋友参考一下 Socket有一个缓冲区,缓冲区是一个流,先进先出,发送和取出的可自定义大小的,如果取出的数据未取完缓冲区,则可能存在数据怠慢。其中【recv(1024)】表示从缓冲区里取
问题内容: 我正在尝试执行Java邮件,并且收到错误消息“无法将命令发送到SMTP主机”。任何帮助,将不胜感激。以及任何将来可能出现的问题的解决方案。确切的例外是 我的代码如下 问题答案: 服务器需要STARTTLS。如果我使用telnet进行手动SMTP会话,则会得到以下信息: 该服务器不接受未加密的连接
本文向大家介绍解决Windows下python和pip命令无法使用的问题,包括了解决Windows下python和pip命令无法使用的问题的使用技巧和注意事项,需要的朋友参考一下 一. python命令找不到 安装python之后经常会出现下面的问题 , python命令找不到,这是因为Windows的环境变量中没有定义python的安装路径 这个时候我们先找到python的安装路径(或者在Pyt
我试图用python控制总共6个LED。我使用pyserial向arduino发送一些数据,但遇到了几个问题。 我遇到的第一个问题是: 根据我在arduino上编写的代码,LEDS应该在接收到的特定数据中闪烁1秒。(这稍后会在下面解释。)但是,LEDS停留在它们应该闪烁的秒数上。这意味着如果LEDS应该闪烁10次。LEDS保持10秒并关闭。 第二个问题是: 我在代码中输入的if条件不符合顺序。正如
问题内容: 我正在尝试为python安装MySql接口,但出现错误(如下所述)。我知道解决方案:安装Microsoft Visual C 。除了安装Microsoft Visual C ,还有其他解决方案吗?我的意思是这真的伤害了我。我为什么要安装Microsoft Visual C ++仅仅是因为构建单个程序包,从开发人员的角度来看,这是一种无用且浪费时间的方法。这个问题有其他解决方案吗? 我在
本文向大家介绍解决python xlrd无法读取excel文件的问题,包括了解决python xlrd无法读取excel文件的问题的使用技巧和注意事项,需要的朋友参考一下 读取文件时报错: 该xls文件在打开时确实会警告该文件与扩展名格式不一致。用文本编辑器打开该xls文件查看,发现确实不是xls文件,而是xml文件被保存为了xls文件。 解决办法:将文件后缀名改为.xml,作为xml文件读入。