c++ - 为什么我的 AT 命令在我的 GSM 调制解调器中回显?

标签 c++ gsm at-command

我有一个 GSM 调制解调器并用腻子对其进行了测试。有用。然后我用我的 C++ 程序发送 AT,但调制解调器回复 AT。它只是回应我的命令,没有回答 OK。
这是我的代码:

#include <QCoreApplication>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <termios.h>
#include <iostream>
int fd;
int openport(void)
{

fd=open("/dev/ttyUSB0",O_RDWR|O_NOCTTY|O_NDELAY);

        if (fd==-1)
                {
                perror("open_port: unable to open port /dev/ttyUSB0\n");
                return -1;
                }
        else
                {
                printf("open_port: succesfully open port /dev/ttyUSB0\n");
                fcntl(fd,F_SETFL,0);
                return 1;
                }
}
void closeport(void)
{
    close(fd);
}
void configport(void)
{
struct termios options;
tcgetattr(fd,&options);
cfsetispeed(&options,B9600);
cfsetospeed(&options,B9600);
options.c_cflag |=  (CLOCAL | CREAD);
tcsetattr(fd,TCSANOW,&options);
options.c_cflag &= ~CSIZE;
options.c_cflag |= CS8;
options.c_cflag &= ~ PARENB;
options.c_cflag &= ~CSTOPB;
options.c_cflag &= ~CSIZE;
options.c_cflag |= CS8;
options.c_iflag &= ~(IXON|IXOFF|IXANY);
}
void writeport1(void)
{
    char w[]="AT\r\n";

    //std::cout << strlen(w);
    //std::cout << w;

    write(fd,w,sizeof(w));
}



int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    int aa ;
    char i[10];
    aa=openport();
    if (aa==1)
    {
        configport();
        writeport1();
        printf("start reading ..... \n");
        aa=read(fd,i,sizeof(i));
        i[aa]=0;//terminate the string
        //std::cout << i << std::endl;
        printf("finish reading ..... \n");

    }

    closeport();
    return a.exec();
}

输出是这样的:

Go to open port open_port:
succesfully open port /dev/ttyUSB0 port
[root@FriendlyARM /]#./SerialPort -qws
open_port: succesfully open port /dev/ttyUSB0
start reading .....

我的错误在哪里?

最佳答案

默认情况下,GSM 模块返回与 GSM 调制解调器相同的“AT”命令。因此,您可以通过发送命令“ATE0”关闭回显,并通过发送命令“AT&W”将设置保存到永久内存,然后按“OK”。 如果您再次需要,可以通过发送命令“ATE1”重新启用回显。

关于c++ - 为什么我的 AT 命令在我的 GSM 调制解调器中回显?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33143209/

相关文章:

driver - 是否可以在连接时从 GSM/CDMA 调制解调器读取信号质量?

c++ - boost :text_file_backend file_name 和收集器目标

c++ - 如何重新绑定(bind)自定义分配器?

gsm - gsm map /inap 的 asn.1 文件

android - Android 中的 SQI 和 CQI 值

at-command - sim900查找sim卡号的AT命令

C++ realloc same pointer warranty

python - 混淆将 c++ 库包装到 python

android - 在 Android 2.3 上获取移动基站定时提前

mysql - 列名前的 SQL 语句中的 At-Sign