arduino - M600Pro 和 Arduino 之间没有干净的串行通信
问题描述
我有一个 DJI M600 Pro 连接到 Arduino Uno 上基于软件的串行端口,但我没有收到干净的信号。
DJ Assistant 中的波特率设置为 115200,Arduino 串行监视器也是如此。在 DJI 助手中启用 API 并禁用除 GPS 数据之外的所有输出并将其设置为 1HZ 以便于读取以进行测试。
我可以看到数据以 1HZ 飞入,但串行输出主要是问号和中间的一些字母。
串行数据是否加密?如果是这样,我该如何解密它?
这是代码:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX
void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(234000);
while (!Serial) {
; // wait for serial port to connect. Needed for Native USB only
}
Serial.println("Goodnight moon!");
// set the data rate for the SoftwareSerial port
mySerial.begin(234000);
mySerial.println("Hello, world?");
}
void loop() // run over and over
{
if (mySerial.available())
Serial.write(mySerial.read());
if (Serial.available())
mySerial.write(Serial.read());
}
解决方案
你说波特率是 115200,但代码说它是 234000。Arduino 软件说它可以达到 115200。使用较旧的 ATmega8 处理器数据表中的 UART 详细信息,尝试获得 234000 波特率确实可以获得 250000 波特率 - 大约 6.8% 的误差。
也许尝试慢得多的东西 - 只是看看它是否可以工作。
推荐阅读
- javascript - flex item CSS中文本的对齐方式
- android-studio - Android App中的Documents4j java库将Docx转换为Pdf
- c# - CollectionView 中的按钮不可点击
- php - 在 null 上调用成员函数 compileColumnListing()
- reactjs - Graphql 突变类型
- angular - 在 Angular Highcharts 中使用模式时出错
- office-js - Outlook 加载项权限被拒绝
- python - 通过python烧瓶从json获取数据
- excel - 在 Excel 中插入所有文件名
- f# - 有没有办法从 F# 代码运行 ILASM?