(7)UARTs和控制台

简介: (7)UARTs和控制台

前言

ArduPilot 中的很多组件都依赖于 UARTs。它们被用于调试输出、遥测、GPS 模块等等。了解如何通过 HAL 与 UART 通信将有助于你理解很多 ArduPilot 的代码。

1 8个UARTs

ArduPilot 的 HAL 目前定义了8个 UARTs。HAL 本身并没有为这些 UARTs 定义任何特定的角色,但是 ArduPilot 的其他部分认为它们将被分配特定的功能。

与 sim_vehicle.py 一起使用串口的命令行选项应该在前面加上 -A 以传递给飞行器的二进制文件。请确保包含了 uart 协议。指定一个波特率不是必须的,但更能体现出一致性。

例如,sim_vehicle.py --console --map -A --serial5=uart:/dev/ttyS15:115200。uartX 选项比较老,serialX 选项比较新,比较方便。

ParamPrefix

Sim_vehicle Cmd Line

Def Role

Default Connection

SERIAL0_

- -uartA= or - -serial0=

Console

tcp:localhost:5760:wait

SERIAL1_

- -uartC= or - -serial1=

MAVLink

tcp:localhost:5762

SERIAL2_

- -uartD= or - -serial2=

MAVLink

tcp:localhost:5763

SERIAL3_

- -uartB= or - -serial3=

GPS

Simulated GPS

SERIAL4_

- -uartE= or - -serial4=

GPS

Simulated GPS

SERIAL5_

- -uartF= or - -serial5=

SERIAL6_

- -uartG= or - -serial6=

SERIAL7_

- -uartH= or - -serial7=

如果你使用 ArduPilot HAL 编写自己的示例,那么你可以将这些 UART 用于任何你喜欢的目的,但是如果可能的话,你应该尽量使用上述分配,因为这将使你更容易适应现有代码。

你可以通过改变其 SERIALn_PROTOCOL 参数来改变 UART 的角色。可能的参数值在SERIAL1_PROTOCOL 的描述中列出。

去看看 libraries/AP_HAL/examples/UART_test 示例概述。它向前5个 UART 打印了一个 Hello 信息。在你的主板上试试,看看你是否能用 USB 串口适配器获得所有的输出显示。尝试改变示例中的波特率。

1.1 调试控制台

从历史上看,除了基本的5个 UARTs 外,在一些平台上还有一个附加的调试控制台。最近调试控制台被定向到 USB。在 SITL 上,调试被定向到一个终端,而 USB 在默认情况下被定向到端口5760。

如果你的板子确实设置了 HAL_OS_POSIX_IO(在 AP_HAL/AP_HAL_Boards.h 中检查),那么试着在 UART_test 示例中添加一些 ::printf() 和其他 stdio 函数。

如果运行不了::printf,可能是你的特定文件(例如一个库)顶部没有 #include <stdio.h>,只要加上它就可以了。

你也可以使用 hal.console->printf() 来指定 USB 端口。

2 UART功能

每个 UART 都有一些基本的 IO 功能可用。主要的功能有:

  • printf - 格式化的打印;
  • printf_P - 带有 progmem 字符串的格式化打印(在 AVR 板上可节省内存);
  • println - 打印和换行;
  • write - 写一堆字节;
  • read  - 读一些字节;
  • available - 检查是否有字节在等待;
  • txspace - 检查有多少可用的传出缓冲区空间;
  • get_flow_control - 检查 UART 是否具有流控制功能。

去看看 AP_HAL 中每个声明,并在 UART_test 中尝试一下。


相关文章
|
9月前
查看控制台输出
查看控制台输出
48 2
|
6月前
|
监控 Java
注册并配置ARMS实例
【8月更文挑战第24天】
93 4
|
9月前
|
数据安全/隐私保护
登录查询系统(控制台版)
登录查询系统(控制台版)
85 1
|
9月前
|
Web App开发 数据安全/隐私保护
防止打开控制台
防止打开控制台
462 0
HMI-45-【控制台】控制台代码迁移
今天实在是看不下去控制台了,多媒体先放一下,先搞一下控制台,说好听点就是优化一下控制台控制逻辑。
|
C#
创建C#控制台项目
创建C#控制台项目
139 1
创建C#控制台项目
|
移动开发 BI 开发工具
控制台使用|学习笔记
快速学习控制台使用
163 0
控制台使用|学习笔记
|
弹性计算 监控 对象存储
ROS 控制台功能概览|学习笔记
快速学习 ROS 控制台功能概览
ROS 控制台功能概览|学习笔记
|
监控 Dubbo 应用服务中间件
管理控制台|学习笔记
快速学习管理控制台
管理控制台|学习笔记