# 跨平台支持说明 本项目支持在 **Windows** 和 **Linux** 上运行。 ## 串口配置 ### Windows Windows 使用 `COMx` 格式: ```json { "serial": { "path": "COM3", "baudRate": 115200 } } ``` 也可以直接写数字,程序会自动添加 `COM` 前缀: ```json { "serial": { "path": "3", "baudRate": 115200 } } ``` **查看可用串口**: ```powershell # 方法1: 设备管理器 devmgmt.msc # 方法2: PowerShell Get-WmiObject Win32_SerialPort | Select-Object Name, DeviceID # 方法3: 使用 mode 命令 mode ``` ### Linux Linux 使用 `/dev/ttyUSBx` 或 `/dev/ttyACMx` 格式: ```json { "serial": { "path": "/dev/ttyUSB0", "baudRate": 115200 } } ``` **查看可用串口**: ```bash # 查看所有USB串口设备 ls -l /dev/ttyUSB* ls -l /dev/ttyACM* # 查看详细信息 dmesg | grep tty # 使用 lsusb 查看USB设备 lsusb ``` **权限配置**(Linux必需): ```bash # 将当前用户添加到 dialout 组 sudo usermod -a -G dialout $USER # 注销并重新登录后生效,或临时授权 sudo chmod 666 /dev/ttyUSB0 ``` ## 平台差异 ### 文件路径 - Windows: 使用反斜杠 `\` 或正斜杠 `/` (Node.js会自动处理) - Linux: 使用正斜杠 `/` 本项目使用 Node.js 的 `path` 模块,会自动处理平台差异。 ### PM2 守护进程 Windows 和 Linux 都支持 PM2,但启动脚本略有不同: **Windows**: ```powershell pm2 start ecosystem.config.js pm2 save pm2 startup # 按提示执行生成的命令(需要管理员权限) ``` **Linux**: ```bash pm2 start ecosystem.config.js pm2 save pm2 startup # 按提示执行生成的命令(使用 sudo) ``` ### 日志目录 两个平台都会在项目根目录下创建 `logs/` 目录: - Windows: `.\logs\` - Linux: `./logs/` ## 测试串口连接 可以使用以下工具测试串口是否正常: ### Windows - **PuTTY**: https://www.putty.org/ - **Tera Term**: https://ttssh2.osdn.jp/ - **串口调试助手** ### Linux - **minicom**: `sudo apt install minicom && sudo minicom -D /dev/ttyUSB0 -b 115200` - **screen**: `sudo screen /dev/ttyUSB0 115200` - **picocom**: `sudo apt install picocom && sudo picocom /dev/ttyUSB0 -b 115200` 测试方法: 1. 打开串口工具,连接到对应COM口 2. 发送 `AT` 命令 3. 应该收到 `OK` 响应 ## 常见问题 ### Windows **Q: 提示串口被占用** ``` Error: Port is already open ``` A: 检查是否有其他程序(如Arduino IDE、串口调试助手)占用了该端口 **Q: 找不到COM口** A: 1. 检查设备管理器中4G模块是否正确识别 2. 确认驱动是否已安装 3. 尝试拔插USB重新识别 **Q: 权限不足** A: Windows通常不需要特殊权限,如果遇到问题,尝试以管理员身份运行 ### Linux **Q: 权限不足** ``` Error: Opening COM1: Permission denied ``` A: ```bash sudo usermod -a -G dialout $USER # 注销重新登录 ``` **Q: 串口不存在** ``` Error: No such file or directory, cannot open /dev/ttyUSB0 ``` A: ```bash # 检查设备是否识别 dmesg | tail -20 lsusb # 可能是 ttyACM0 而不是 ttyUSB0 ls /dev/tty* ``` **Q: ModemManager占用串口** A: 某些Linux发行版的ModemManager会自动占用4G模块 ```bash # 临时停用 sudo systemctl stop ModemManager # 永久禁用(不推荐,可能影响系统网络功能) sudo systemctl disable ModemManager ``` ## 开发环境 ### Node.js 版本 - 推荐: Node.js 18.x LTS 或更高 - 最低: Node.js 16.x ### 依赖库 所有依赖都是跨平台的: - `serialport` - 底层使用 C++ 绑定,支持 Windows/Linux/macOS - `express` - Web框架 - `nodemailer` - 邮件发送 - `axios` - HTTP客户端 - `winston` - 日志库 ## 性能建议 ### Windows - 关闭Windows Defender实时扫描对 `node_modules/` 的监控 - 使用SSD存储项目文件 ### Linux - 使用 `noatime` 挂载选项减少磁盘IO - 调整串口缓冲区大小(如有需要): ```bash setserial /dev/ttyUSB0 low_latency ``` ## 部署建议 ### Windows Server - 使用 PM2 作为守护进程 - 配置 Windows 防火墙允许 API 端口(默认3000) - 设置 PM2 开机自启动 ### Linux Server - 使用 PM2 + systemd - 配置 UFW/iptables 防火墙 - 考虑使用 Nginx 反向代理