第二章 上位机开发环境搭建

说实话,很多初学者一上来就急着写代码,结果环境没配好,折腾半天连个Hello World都跑不出来。我见过太多这样的案例了。所以这一章,咱们老老实实把开发环境搭好。磨刀不误砍柴工嘛。

2.1 Python环境配置

Python版本怎么选?我个人习惯用Python 3.8或3.9。为什么?因为PyQt5和python-can这些库,对3.10以上版本的支持偶尔会出点小毛病。我在项目中就踩过这个坑——用Python 3.11装PyQt5,死活装不上,最后发现是版本兼容问题。

下载地址:python.org,别去其他地方乱下。安装时记得勾选「Add Python to PATH」,这个很重要。不勾的话,你后面在命令行敲python会提示找不到命令。

小技巧:安装完后,打开命令行输入 python --version,如果显示版本号,说明装好了。如果没显示,检查一下PATH。

2.2 PyCharm安装与调试

PyCharm分专业版和社区版。咱们做BMS上位机开发,社区版完全够用。别一上来就破解专业版,没必要。

安装过程很简单,一路Next就行。但有几个设置我建议你改一下:

  • 字体大小:默认的12号字看着累,我一般调到16。Settings → Editor → Font
  • 自动保存:PyCharm默认不会自动保存,记得勾上「Save files on frame deactivation」
  • 代码提示:把「Case sensitive completion」改成None,这样你打小写也能提示大写开头的函数

调试功能怎么用?你想想看,写上位机最怕什么?最怕串口数据解析出错。这时候断点调试就派上用场了。在代码行号旁边点一下,出现红点就是断点。然后点右上角的小虫子图标(Debug),程序就会停在断点处。你可以一行一行地看变量值,特别直观。

注意:调试时如果程序卡住了,先检查是不是串口被占用了。我曾经调试到一半,发现程序一直卡在serial.read(),折腾了半天才发现是串口线松了。

2.3 虚拟环境管理

虚拟环境这东西,说白了就是给你的每个项目单独搞一个小房间。A项目用PyQt5 5.15,B项目用PyQt6,互不干扰。没有虚拟环境的话,你装一个库就会全局生效,时间长了版本冲突能把你搞疯。

PyCharm创建虚拟环境很简单:

  1. 新建项目时,选择「New environment using Virtualenv」
  2. Python解释器选你刚装的那个
  3. 勾上「Inherit global site-packages」——这个看情况,我一般不勾,保持干净

如果你喜欢用命令行,也可以这样:

# 创建虚拟环境
python -m venv bms_env

# 激活(Windows)
bms_env\Scripts\activate

# 激活(Mac/Linux)
source bms_env/bin/activate

# 退出
deactivate

嗯,这里要注意:激活后,命令行前面会出现 (bms_env) 字样,说明你已经在虚拟环境里了。这时候装的所有库,都只在这个环境里生效。

2.4 常用库安装

接下来装几个核心库。咱们做BMS上位机,主要用这四个:

库名 用途 安装命令
PyQt5 图形界面开发 pip install PyQt5
pyserial 串口通信 pip install pyserial
python-can CAN总线通信 pip install python-can
matplotlib 数据可视化(画曲线图) pip install matplotlib

安装命令很简单,在终端里敲 pip install 库名 就行。但有几个坑我得提醒你:

避坑指南:
  • PyQt5安装慢?换国内镜像源:pip install PyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simple
  • python-can装完后,记得装对应的驱动库。比如用PCAN硬件,要装python-can[pcan]
  • matplotlib如果画图时中文乱码,是因为缺少中文字体。解决方案:下载SimHei字体放到matplotlib的字体目录下

装完后怎么验证?写个简单的测试代码:

import serial
import can
import matplotlib.pyplot as plt
from PyQt5 import QtWidgets

print("所有库导入成功!")
print(f"PySerial版本: {serial.__version__}")
print(f"python-can版本: {can.__version__}")

如果没报错,说明环境搭好了。如果报错,多半是库没装全或者版本不对。别慌,看看错误信息,一般都能解决。

我的经验:把所有库的版本号写到一个requirements.txt文件里,下次换电脑直接 pip install -r requirements.txt 一键安装。省心。

好了,环境搭完,咱们就可以正式开始写上位机代码了。下一章,我会带大家用PyQt5搭一个简单的界面,把串口数据读上来。到时候你就知道,前面这些准备工作有多重要了。