gpt4 book ai didi

C - 从 uint8_t 函数返回失败

转载 作者:太空宇宙 更新时间:2023-11-03 23:26:25 25 4
gpt4 key购买 nike

我有一个函数可以在 UART 缓冲区非空时从 UART 设备获取一个字符。

uint8_t getByte(void) {
while(!uartCharsAvail(uartBase)) {
// Wait for a character to become available
}
return uartGetChar(uartBase);
}

现在的问题是我想引入一个超时,这样如果等待时间过长,该函数将返回一个失败。

uint32_t replyTimeout;
uint8_t getByte(void) {
replyTimeout = 0;
while(!uartCharsAvail(uartBase)) {
// Wait for a character to become available
if (replyTimeout++ > MAX_REPLY_TIME) {
return -1;
}
delay(1);
}
return uartGetChar(uartBase);
}

这里的问题当然是我从 uint8_t 函数返回负数。

有没有简单的方法来解决这个问题?我能想到的唯一方法是使函数成为 bool 值并将 uint8_t 指针作为参数传递。

最佳答案

就像int fgetc()一样,使用EOF这样的负值来表示文件结束(串口不再可用)或IO错误(例如超时)。

对于数据返回,使用 0 到 255 不会与 EOF 冲突。

关键是 getByte() 需要返回 257 个不同的东西(256 个不同的字节和超时)。 uint8_t 缺少该范围。

关于C - 从 uint8_t 函数返回失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26287301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com