(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 中尝试一下。


相关文章
|
2月前
|
弹性计算 开发工具 git
2分钟在阿里云ECS控制台部署个人应用(图文示例)
作为一名程序员,我在部署托管于Github/Gitee的代码到阿里云ECS服务器时,经常遇到繁琐的手动配置问题。近期,阿里云ECS控制台推出了一键构建部署功能,简化了这一过程,支持Gitee和GitHub仓库,自动处理git、docker等安装配置,无需手动登录服务器执行命令,大大提升了部署效率。本文将详细介绍该功能的使用方法和适用场景。
2分钟在阿里云ECS控制台部署个人应用(图文示例)
|
7月前
|
弹性计算 网络协议 Serverless
Serverless 应用引擎操作报错合集之使用ecs,反代到函数的内网域名上,提示{"ErrorCode":"DomainNameNotFound",是什么原因
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
137 7
|
8月前
|
存储 弹性计算 数据可视化
云实例
实例介绍
46 0
|
弹性计算 安全 API
通过ECS诊断服务自助解决实例、安全组等相关操作行为审计问题
用户在使用ECS云服务器时,有时会出现各种各样关于资源操作的疑惑,不知何时发生的这些操作。如果用户自己没有完善的日志审计,就很容易不知所措,此时只能提交工单由阿里云的人工服务帮助排查,因提交工单排查需要一定的时间和人力资源投入,所以用户需要等待一段时间,因而一定程度上会降低问题解决的效率,阿里云ECS团队推出用户操作记录的日志行为回溯功能,帮助用户快速自主查询和解决问题,提高工作效率。
通过ECS诊断服务自助解决实例、安全组等相关操作行为审计问题
|
监控 API
云监控 --- PutCustomEvent
调用PutCustomEvent接口上报自定义事件的监控数据。
124 0
云监控 --- PutCustomEvent
|
弹性计算 运维
云速搭CADT - 多地域模板
云速搭(Cloud Architect Design Tool,CADT)是一款为上云应用提供自助式云架构管理的产品,显著地降低应用云上管理的难度和时间成本。本产品提供大量预制的应用架构模板,同时也支持自助拖拽方式定义应用云上架构,支持大量阿里云服务的配置和管理,您可以方便地对云上架构方案的成本、部署、运维、回收进行全生命周期的管理
163 0
云速搭CADT - 多地域模板
|
存储 运维 架构师
云速搭CADT - 私有模板列表
云速搭(Cloud Architect Design Tool,CADT)是一款为上云应用提供自助式云架构管理的产品,显著地降低应用云上管理的难度和时间成本。本产品提供大量预制的应用架构模板,同时也支持自助拖拽方式定义应用云上架构,支持大量阿里云服务的配置和管理,您可以方便地对云上架构方案的成本、部署、运维、回收进行全生命周期的管理。
128 0
云速搭CADT - 私有模板列表
|
存储 运维 小程序
什么是小程序云&小程序云开通
小程序云是阿里云面向小程序场景提供的一站式云服务,帮助开发者实现一云多 端的业务战略。开发者可通过小程序云支撑各类小程序前端,在一朵云内实现统 一的资源管理、统一的数据运营和统一的业务设计。 小程序云提供小程序 Serverless 和小程序云应用服务,帮助小程序开发者降低 研发和运维成本。
1613 0
什么是小程序云&小程序云开通
|
弹性计算 运维 监控
基于ECS实例RAM角色的SLS与Splunk集成方案
阿里云日志服务(SLS)通过提供一个Splunk插件(Add-on)实现SLS与Splunk的日志对接, 以便确保阿里云上的所有法规、审计、与其他相关日志能够导入到客户的安全运维中心(SOC)中。本文主要介绍如何在该Splunk Add-on中使用ECS实例RAM角色的鉴权方式,完成日志服务(SLS)到Splunk的日志投递过程。
1480 0
|
弹性计算 开发者
新版阿里云控制台远程连接使用简介
阿里云控制台又改变了,今天登录控制台想找远程连接的地方,居然找了半天才找着。建议阿里云不要随便更改控制台的布局,否则对于用习惯了的人,突然的改变会让人很难适应,或许就会让部分用户转投他地。
4921 0
新版阿里云控制台远程连接使用简介