EG64X (RK3506) RS485 串口使用例程 —— 操作命令
=============================================================

【例程简介】
   EG64X 提供 4 路隔离 RS485 串口（2 线 A/B，凤凰端子），硬件自动换向，
   对应设备节点 /dev/ttyS1 ~ /dev/ttyS4（ttyS0 不是用户串口）。
   本例程演示串口的打开、参数配置（波特率/数据位/校验位/停止位）、
   发送一条测试帧并循环接收打印，提供 C（termios）与 Python（pyserial）两个版本。

一、上传文件到设备
   设备登录（以设备实际 IP 为准，下同）：
       ssh root@192.168.5.1（默认密码 123456）
   上传例程（在 PC 上执行，以 /userdata 为例）：
       scp uart_rw.c uart_rw.py root@192.168.5.1:/userdata/
   Windows 下若无 scp，可用 pscp：
       pscp -pw 123456 uart_rw.c uart_rw.py root@192.168.5.1:/userdata/

二、C 版（板上编译，设备预装 gcc 11.4.0）
   登录设备后：
       cd /userdata
       gcc uart_rw.c -o uart_rw
       ./uart_rw                     # 默认 /dev/ttyS1 @ 115200 8N1
       ./uart_rw /dev/ttyS2 115200   # 指定串口设备与波特率
   Ctrl+C 退出。

三、Python 版
       python3 uart_rw.py
   依赖：设备需安装 python3 与 pyserial，可用下面命令确认：
       python3 -c "import serial"
   若设备未预装 pyserial，请改用 C 版或下方 shell 命令测试。

四、快速 shell 验证（免编译）
   配置串口（以 /dev/ttyS1 115200 8N1 为例）：
       stty -F /dev/ttyS1 115200 cs8 -cstopb -parenb
   后台接收：
       cat /dev/ttyS1 &
   发送数据：
       echo -n "hello" > /dev/ttyS1
   接线：
       RS485 为 A(+)/B(-) 两线。自发自收时将 A 接 A、B 接 B 短接；
       与对端设备连接时按 A-A、B-B 对应连接，必要时共地。
   两机/两路串口互测（如本机 ttyS1↔ttyS2 对接，两端都运行例程即可双向收发）：
       - 【重要】RS485 为半双工、无缓冲：必须先启动接收端（进入监听），
         再启动发送端，否则先发出的帧在接收端打开前就会丢失
         （表现为"只收到单向"）。
       示例（终端 1 先接收、终端 2 后发送）：
         终端 1：./uart_rw /dev/ttyS2 115200    # 先启动，进入接收
         终端 2：./uart_rw /dev/ttyS1 115200    # 后启动，发送并接收

五、注意事项
   1. raw 模式：串口默认带 icrnl/ixon/echo 等终端行规则，直接收发二进制
      可能被转换，程序应配置为 raw 模式（C 版例程已处理）。
   2. 打开串口后建议先 tcflush 清掉残留数据，避免首帧读到旧内容
      （C 版例程已处理）。
   3. 参数范围：波特率 1200 ~ 1500000；校验位 NONE / EVEN / ODD / MARK / SPACE；
      数据位 5 / 6 / 7 / 8（9 位不支持）；停止位 1 / 1.5 / 2；无流控。
   4. RS485 硬件自动换向，无需软件控制收发方向。
   5. ttyS0 不是用户串口。若 /dev 下看不到某个串口节点，
      先执行 ls /dev/ttyS* 确认。
