Linux 擷取 4G 訊號強度__Linux

來源:互聯網
上載者:User

找了好多資料還是沒找到 擷取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 signalsignalStrenght = 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");}






聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.