LINUX 获取4G信号强度的应用代码

找了好多资料还是没找到 获取4G信号强度的应用代码

最后没办法了, 只能自己写了

首先要知道AT指令是什么 这个可以参考下面的连接:

https://www.cnblogs.com/yuweifeng/p/5587473.html

如果4G设备正常运行 在终端输入下面命令会得到设备当前的信号

命令:cat /dev/ttyUSB2&
echo -e "AT+CSQ\r\n" > /dev/ttyUSB2

得到:

AT+CSQ
+CSQ: 28,99
OK
AAT+CSQ
+CSQ: 28,99

28 只是 rssi 转换成信号格 参考文章 http://velep.com/archives/1147.html

大概了解一下就行了 下面是代码 是在qt写的,共同探讨 ,欢迎留言


void MainWindow::GetCurSignalStrenght(void)
{
    printf("============Geting CurSignalStrenght============\n");
    int SentATcount = 100;
    
    if(ec20check==1)
    {
        system("cat /dev/ttyUSB2 | grep \'CSQ\' > signalstrength&");
        
        while(SentATcount--)
        {
            printf("============Launch AT command============\n");
            system("echo -e \"AT+CSQ\\r\\n\" > /dev/ttyUSB2");
            printf("echo -e \"AT+CSQ\\r\\n\" > /dev/ttyUSB2\n");
            usleep(1000);
            
            QFile tempFile("signalstrength");
            
            if (!tempFile.open(QIODevice::ReadOnly | QIODevice::Text))
            {
                qDebug()<<"open signalstrength fail";
            }
            else
            {
                QTextStream tempLineFile(&tempFile);
                QString templine ;
                templine = tempLineFile.readLine().simplified();
                tempFile.close();
                if(!templine.isEmpty())
                {
                    printf("============Get data from temp file, say oh ho!!!!============\n");
                    break;
                }
                else
                {
                    printf("============Fuck , There no useful data yet============\n");
                    //continue wile do nothine
                }
            }
            
        }
        
        system("grep \'+CSQ:\' signalstrength > tempfilesignal");
 
        QFile signalFile("tempfilesignal");
 
        if (!signalFile.open(QIODevice::ReadOnly | QIODevice::Text))
        {
            signalStrenght = 0;
             qDebug()<<"open tempfilesignal fail";
        }
        else
        {
            QTextStream infile(&signalFile);
            QString line ;
            line = infile.readLine().simplified();
            signalFile.close();
    
            if(!line.isEmpty())
            {
                //--------------------------
                QString linedate ;
                QString rssi;
                bool ok;  
                rssi = line.mid(6,2);
                qDebug() << " signal number is -tmpchr>="<<rssi;
                printf(" tmp.toInt(&ok,10) is ->%d\n",rssi.toInt(&ok,10));
                int signalTrans =-113 + (2 * rssi.toInt(&ok,10));
                
                printf(" signalTrans is ->%d\n",signalTrans);
 
                if(signalTrans >-91)
                {
                    signalStrenght = 5;
                }
                else if(signalTrans <= -91 && signalTrans>-101)
                {
                    signalStrenght = 4;
                }
                else if(signalTrans <= -101 && signalTrans>-103)
                {
                    signalStrenght = 3;
                }
                else if(signalTrans <= -103 && signalTrans>-107)
                {
                    signalStrenght = 2;
                }
                else if(signalTrans <= -107 && signalTrans>-113)
                {
                    signalStrenght = 1;
                }
                else
                {     
                    //no signal
                    signalStrenght = 0;
                }
                printf("=======Get signalStrenght success.= signalStrenght is %d=======\n",signalStrenght);
            }
            else
            {
                printf("=======Get signalStrenght failed...==set signalStrenght zero=======\n");
                signalStrenght = 0;
            }
        }
    }
    
    system("rm tempfilesignal -rf");
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Linux可以通过使用AT命令来获取4G信号强度。具体步骤如下: 1. 打开终端,输入以下命令:sudo apt-get install minicom 2. 连接4G模块到电脑上,并通过终端输入以下命令:sudo minicom -s 3. 在minicom的配置界面中,选择“Serial port setup”,然后设置串口参数,如波特率、数据位、停止位等。 4. 选择“Modem and dialing”,然后输入以下AT命令:AT+CSQ 5. 按下回车键,就可以获取4G信号强度了。 注意:不同的4G模块可能需要不同的AT命令,具体请参考模块的说明书。 ### 回答2: 在Linux系统中,可以通过一些命令和工具来获取4G信号强度。 1. 使用AT命令:通过AT命令可以与4G无线模块进行交互,获取信号强度信息。使用以下命令: ``` echo -e 'AT+CSQ\r\n' > /dev/ttyUSB0 ``` 这将向4G无线模块发送AT命令,然后读取返回的信号强度信息。通过解析返回的信息,可以得出信号强度的数值。 2. 使用ModemManager:ModemManager是一个用于管理无线模块的守护程序,可以提供一些工具和API来获取信号强度。可以使用以下命令安装和运行ModemManager: ``` sudo apt-get install modemmanager sudo systemctl start ModemManager ``` 然后,可以使用mmcli工具(ModemManager Command-Line Interface)来获取信号强度信息: ``` mmcli -m 0 ``` 这将列出第一个4G无线模块的详细信息,包括信号强度。 3. 使用网络管理器:如果你使用的是有图形界面的Linux发行版,并且通过网络管理器连接4G网络,你可以通过网络管理器来获取信号强度。一般来说,网络管理器会在任务栏或系统设置中提供一个图标,你可以通过点击图标查看信号强度信息。 需要注意的是,具体的命令和工具可能因Linux发行版和无线模块型号而有所不同。建议查阅相关文档或在相应的论坛中寻求帮助来获取准确的命令和工具使用方式。 ### 回答3: 要获取4G信号强度,你可以使用Linux系统中的一些命令和工具。以下是一种可能的方法: 首先,你可以使用以下命令来查看系统中的无线网卡设备: ``` ifconfig -a ``` 接下来,找到你的无线网卡设备名称,通常以 "wlan" 或 "wlp" 开头。例如,设备名称可能是 "wlan0"。 然后,你可以使用以下命令来扫描并获取4G信号强度信息: ``` sudo iwlist wlan0 scan ``` 这将扫描附近的无线网络,并显示它们的详细信息,包括信号强度。你可以查找关于4G网络的信息,它的名称通常以 "4G" 或 "LTE" 开头。 另外,你也可以使用一些第三方工具来获取更详细的信号强度信息,例如Cellular Network Signal Strength(Cellular-NS)等。这些工具可能需要额外的安装和配置步骤。 总之,通过上述方法,你可以在Linux系统上获取并监测4G信号强度

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值