- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在做一个涉及 GSM 模块和 ATMEGA328P 之间通信的项目。在实际尝试使用 AVR 检查我的程序是否正常工作之前,我尝试通过终端模拟 GSM 模块,但是每当我输入一个由“gets”函数读取的字符串时,该字符串都没有被正确捕获。我通过在阅读后尝试用“printf”显示它来进行检查,它只显示前两个字符。知道为什么会这样吗?我尝试在键入字符串后清空缓冲区:“while ((ch = getchar()) != '\n'); 以避免出现问题,因为我必须读取多个值并且每当我键入时我都会附加 CR+LF正如 GSM 模块所做的那样回答。
部分代码如下:
writeSerial("AT+CMGF=1");
clear();
readSerial(status);
writeSerial(status);
上面列出的函数声明如下:
void clear(void){
char ch;
while ((ch = getchar()) != '\n');
}
void readSerial(char *arr){
gets(arr,sizeof(arr));
}
void writeSerial(char *arr){
printf("%s\r\n", arr); //CR+LF
}
最佳答案
考虑将您的 readSerial 函数重写为:
void readSerial(char *arr, size_t array_size ){
gets(arr, array_size);
}
函数应该这样调用:
char a[20] = {0};
readSerial( a, sizeof(a) );
在您的情况下,运算符的大小返回指向 char ( char * ) 的指针的大小,而不是数组的大小。
关于c++ - 进入 AVR 单片机只读取两个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26709928/
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我有以下设置。我发现我的arduino又重新启动了。我有Arduino板、液晶显示器、传感器。传感器和 LCD 显示屏共享 7805 IC 的公共(public)地和 5v 电源,Arduino 板使
我在 MPLAB 中为 18F2480 处理器编写了引导加载程序代码。我当前的项目要求我将微 Controller 升级到 18F2680。 (两种芯片之间的主要区别在于2480具有16K程序存储器/
我是一名优秀的程序员,十分优秀!