gpt4 book ai didi

c++ - AT命令响应解析器

转载 作者:行者123 更新时间:2023-11-30 19:29:59 28 4
gpt4 key购买 nike

我正在开发自己的实现,使用微 Controller 和 c/c++ 从调制解调器读取 AT 命令

但是!!总是一个但是!在我的程序中有两个“线程”之后,第一个是我使用 strcmp 比较来自 Moden 的可能回复,我认为这非常慢

比较功能

if (strcmp(reply, m_buffer) == 0)
{
memset(buffer, 0, buffer_size);
buffer_size = 0;
memset(m_buffer, 0, m_buffer_size);
m_buffer_size = 0;
return 0;
}
else
return 1;

这个对于我来说可以很好地使用 AT 命令(例如 AT 或 AT+CPIN)吗?调制解调器的最后一个响应是“OK”,中间没有任何内容,但它不能使用像 AT+CREG 这样的命令?它的响应在哪里:

+REG: n,n 
OK

我正在寻找“+REG: n,n”,但我相信 strncpy 非常慢,并且我的缓冲区数据被替换为“OK”

第二个“线程”,它启用 UART RX 中断并在每次接收新数据时替换我的缓冲区数据

中断句柄:

m_buffer_size = buffer_size;
strncpy(m_buffer, buffer, buffer_size + m_buffer_size);

你知道有比 strcmp 更快的吗?或者改善 AT 命令响应读​​取的方法?

最佳答案

这有 XY Problem 的气味

如果您发现缓冲区内容被覆盖,您可能需要查看 thread safe queue将消息从 RX 线程传递到解析线程。这样,即使在处理第一条消息时到达第二条消息,也不会遇到“缓冲区覆盖”问题。

关于c++ - AT命令响应解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51957796/

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