鱼C论坛

 找回密码
 立即注册
查看: 1772|回复: 3

Python串口通讯

[复制链接]
发表于 2023-5-16 16:30:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import serial
import time
# 创建串口对象
def recieve():
    s2 = serial.Serial('COM2', timeout=0.05)
    s2.write(b'dfa')
    while True:
        time.sleep(1)
        print(s2.read_all())
recieve()

为啥输出打印的是空字符呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-16 16:31:35 | 显示全部楼层
在串口通讯中,有可能是因为以下原因导致输出为空字符:

1. 串口连接错误:请检查串口连接是否正确,例如串口号是否正确,波特率是否匹配等。

2. 写入数据格式错误:请检查写入数据的格式是否正确,例如是否使用了正确的编码方式。

3. 读取数据方式错误:请检查读取数据的方式是否正确,例如是否使用了正确的读取函数。

在你的代码中,你已经使用了正确的串口号和波特率,但是你在写入数据时使用了错误的编码方式。在Python中,字符串需要使用encode()函数进行编码,而不是直接使用b''的方式。因此,你需要将代码修改为:

s2.write('dfa'.encode())

此外,你在读取数据时使用了read_all()函数,这个函数会读取所有可读取的数据,包括之前已经读取过的数据。因此,你需要使用read()函数来读取最新的数据,代码修改为:

print(s2.read())

最后,你需要在程序结束时关闭串口,代码修改为:

s2.close()

完整的代码如下:

import serial
import time

def recieve():
    s2 = serial.Serial('COM2', timeout=0.05)
    s2.write('dfa'.encode())
    while True:
        time.sleep(1)
        print(s2.read())
    s2.close()

recieve()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-16 16:33:45 | 显示全部楼层
isdkz 发表于 2023-5-16 16:31
在串口通讯中,有可能是因为以下原因导致输出为空字符:

1. 串口连接错误:请检查串口连接是否正确,例如 ...

修改了之后 输出打印的还是空字符
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-16 16:45:12 | 显示全部楼层
Single丶LTz 发表于 2023-5-16 16:33
修改了之后 输出打印的还是空字符

如果修改后仍然输出为空,可能的原因有以下几种:

1. 硬件连接问题:请检查串口设备是否正确连接并且能够正常工作。你可以尝试更换串口线,或者更换另一个串口设备,来排除硬件问题。

2. 设备没有返回数据:你的设备可能没有按照你预期的方式返回数据。例如,你发送的数据可能没有正确地触发设备的响应,或者设备可能需要更多时间来处理你发送的数据。

3. 波特率不匹配:你需要确保你的设备和程序使用的波特率是一致的。不同的设备可能需要不同的波特率,你需要查看设备的说明书或者联系设备的制造商,来获取正确的波特率。

4. 数据位,停止位,校验位设置错误:除了波特率,你还需要确保数据位,停止位和校验位的设置也是正确的。这些设置都需要与你的设备匹配。

5. 串口权限问题:如果你在Linux或者MacOS操作系统上运行程序,你可能需要提供正确的权限才能访问串口。你可以尝试使用sudo命令来运行你的程序。

以上只是一些可能的原因,真正的原因可能需要你根据具体的情况来进行排查。你可以尝试使用一些串口调试工具,如putty,来测试你的设备和程序。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-23 05:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表