pyserial安装失败

安装pyserial时发现编译失败,提示pythonnot decodable from utf-8。

发现python路径有中文名,我老婆的电脑用户名是中文......

重新安装python搞定。

以下是使用pyserial实现Ymodem协议的示例代码: ```python import serial import time import os import sys def send_ymodem(file_path, port): ser = serial.Serial(port=port, baudrate=115200, timeout=0.5) # 发送文件名 file_name = os.path.basename(file_path) file_size = os.path.getsize(file_path) print('file name: {}, size: {} bytes'.format(file_name, file_size)) ser.write(bytes('C', encoding='utf8')) ser.write(bytes(file_name + '\0', encoding='utf8')) ser.write(bytes(str(file_size) + ' ', encoding='utf8')) ser.write(bytes(str(int((file_size + 1023) / 1024)) + ' ', encoding='utf8')) ser.write(bytes('\r\n', encoding='utf8')) # 等待 ACK ack = ser.read(1) if ack != bytes('\0', encoding='utf8'): print('send file name failed') ser.close() return # 发送文件内容 with open(file_path, 'rb') as f: seq = 0 data = f.read(1024) while data: seq += 1 if seq == 1: ser.write(bytes('SOH', encoding='utf8')) else: ser.write(bytes('STX', encoding='utf8')) ser.write(bytes(chr(seq), encoding='utf8')) ser.write(bytes(chr(255 - seq), encoding='utf8')) ser.write(data) if len(data) < 1024: # 文件内容长度不足1024字节时,填充0x1A直到达到1024字节 ser.write(bytes(1024 - len(data) * '\0', encoding='utf8')) crc = 0 for byte in data: crc = crc ^ byte for i in range(8): if crc & 0x01: crc = (crc >> 1) ^ 0x8C else: crc >>= 1 ser.write(bytes(chr(crc), encoding='utf8')) # 等待 ACK ack = ser.read(1) if ack != bytes('\0', encoding='utf8'): print('send file content failed') ser.close() return data = f.read(1024) # 发送 EOT ser.write(bytes('EOT', encoding='utf8')) # 等待 ACK ack = ser.read(1) if ack != bytes('\0', encoding='utf8'): print('send EOT failed') ser.close() return ser.close() print('send file succeed') if __name__ == '__main__': if len(sys.argv) < 3: print('usage: python ymodem.py file_path port') sys.exit(1) file_path = sys.argv[1] port = sys.argv[2] send_ymodem(file_path, port) ``` 注意:该代码只是一个示例,可能需要根据具体情况进行修改。特别是在发送文件内容时,需要根据协议计算CRC校验码,并且需要等待接收端的ACK响应,否则会导致传输失败
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值