树莓派,C和调制解调器



我有一个通过USB连接SIM7600X调制解调器的树莓派4。我正在用C语言写一个程序,我需要检查移动网络的信号质量,并连接到互联网。在Minicom和Cutecom中一切都运行良好,但我无法通过c可靠地与调制解调器通信。下面是我的代码示例

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

int main()
{
FILE *modem;
int exitflag=0;
char buf[256];
char *line;
int res;

modem = fopen("/dev/ttyUSB2", "r+b");
if (modem == NULL) {
fprintf(stderr, "Unable to open modemn");
return(-1);
}
res = fputs("nnAT+CSQn", modem);
if (res < 0) 
{
fprintf(stderr, "failed to send to modem (res = %d)n",res);
fclose(modem);
return(-1);
}
exitflag=0;
while (exitflag==0)
{
line = fgets(buf, 256, modem);
if (line >= 0)
{
fprintf(stderr,"%s",buf);
}
else
{
exitflag=1;
fprintf(stderr,"nothingn");
}
}
fclose(modem);
return(0);
}

输出可以像这样结束:

AT+CSQ

+CSQ: 23,99

OK
AT+CS

ERROR
AT+CS

ERROR
AT+CS

ERROR
AT+CS

ERROR
AT+CS

ERROR
AT+CS

ERROR
AT+CS

ERROR
AT+CS

大多数调制解调器需要r而不是n

updateWaveshare对此没有多大用处。浏览一下它们的代码就会发现"SIM7600AT-COMMAND"我认为它与atinout相同,但在makefile中寻找我没有安装在Pi上的库。所以,我回到QMICLI获取信息并连接到互联网。它会冻结的原因是因为我认为我没有足够大的电源(5v @ 4a),但我必须为最终使用做一个新的24v到5v连接。

最新更新