【发布时间】:2021-03-26 20:07:42
【问题描述】:
我正在为某事苦苦挣扎很长一段时间,我正在尝试根据一些变量生成 NMEA 消息,现在这些 0,0,0 需要是一个变量,所以我需要将我的变量连接到这个消息字符指针。有什么建议吗?
char * message = "$CONFI,0,0,0";
Serial.println(generateChecksum(message),HEX);
int generateChecksum(char *nmea_data)
{
int crc = 0;
int i;
// ignore the first $ sign, no checksum in sentence
for (i = 1; i < strlen(nmea_data); i ++) { // removed the - 3 because no cksum is present
crc ^= nmea_data[i];
}
return crc;
}
【问题讨论】:
-
不使用指针和文字字符串是好的开始。也许改用 Arduino 标准
String类。 -
谢谢,虽然我阅读了整个互联网以避免使用字符串类,因为他们使用了相当多的 Arduino,我也不知道如何生成我的 CRC。
-
@Someprogrammerdude String 类臃肿且浪费。因为这个,我从来没有使用过它。事实上,我从来没有为 Arduino 使用过任何库。即使在 STM32 上,我也更喜欢直接寄存器编程,也许还有 LL 调用。但从来没有 HAL。抽象=浪费,当空间很重要时,通常不能容忍浪费。我敢打赌,大多数拥有嵌入式设计专利的设计师(就像我一样)都会同意。