AT+CSQ语法

命令解释:检查网络信号强度
命令格式:AT+CSQ<CR>
命令返回:+CSQ:  **, ##           其中:

  • **应在 0 到 31 之间(99表示无信号),数值越大表明信号质量越好;
  • ##为误码率,值在 0 到 99 之间。否则应检查天线或 SIM 卡是否正确安装

测试结果:AT+CSQ<CR>
                     +CSQ: 31, 99

计算公式:信号强度 = -113dBm + (rssi * 2)

通过AT+CSQ指令获取GPRS模块信号强度

如下图所示:

信号格数与信号强度的关系

手机格数与手机接收基站的信号强度有关,目前行业中并没有明确的标准,格数与信号强度关联均为厂商而定,iPhone 4信号强度与格数如下图:

诺基亚手机和iPhone 4信号强度与格数对比如下:

信号格数

接收电平强度

诺基亚

iPhone4

5格:

大于-85dBm

大于-91dBm

4格:

-85dBm至-90dBm

-91dBm至-101dBm

3格:

-90dBm至-95dBm

-101dBm至-103dBm

2格:

-95dBm至-100dBm

-103dBm至-107dBm

1格:

-100dBm至-105dBm

-107dBm至-113dBm

脱网:

小于-105 dBm

小于-113dBm

注:上表数据均为5格信号显示方式,如N97等7格信号原则与上述不同。

在这里,我采用了android系统上关于GSM模块信号格数与信号强度的对应关系,如下代码所示:

public int getGsmLevel() {int level;// ASU ranges from 0 to 31 - TS 27.007 Sec 8.5// asu = 0 (-113dB or less) is very weak// signal, its better to show 0 bars to the user in such cases.// asu = 99 is a special case, where the signal strength is unknown.int asu = getGsmSignalStrength();if (asu <= 2 || asu == 99) level = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;else if (asu >= 12) level = SIGNAL_STRENGTH_GREAT;else if (asu >= 8)  level = SIGNAL_STRENGTH_GOOD;else if (asu >= 5)  level = SIGNAL_STRENGTH_MODERATE;else level = SIGNAL_STRENGTH_POOR;if (DBG) log("getGsmLevel=" + level);return level;
}

上面的asu即AT+CSQ指令返回的RSSI值。

参考文章:http://blog.csdn.net/garybook/article/details/17006609

如果是CDMA模块,应该可以参考下面的代码:

参考文章:http://www.2cto.com/kf/201306/218756.html

在Android4.0的系统中,手机中显示信号强度格数的代码在

frameworks\base\telephony\java\android\telephony\SignalStrength.java

getLevel( )函数,该函数是主要用来获取信号的强度。

public int getLevel() { int level; if (isGsm) { level = getLteLevel(); if (level == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) { level = getGsmLevel(); } } else { int cdmaLevel = getCdmaLevel(); int evdoLevel = getEvdoLevel(); if (evdoLevel == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) { /* We don't know evdo, use cdma */ level = cdmaLevel; } else if (cdmaLevel == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) { /* We don't know cdma, use evdo */ level = evdoLevel; } else { /* We know both, use the lowest level */ //level = cdmaLevel < evdoLevel ? cdmaLevel : evdoLevel;  level = cdmaLevel > evdoLevel ? cdmaLevel : evdoLevel; } } if (DBG) log("getLevel=" + level); return level; } public int getLevel() {int level;if (isGsm) {level = getLteLevel();if (level == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) {level = getGsmLevel();}} else {int cdmaLevel = getCdmaLevel();int evdoLevel = getEvdoLevel();if (evdoLevel == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) {/* We don't know evdo, use cdma */level = cdmaLevel;} else if (cdmaLevel == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) {/* We don't know cdma, use evdo */level = evdoLevel;} else {/* We know both, use the lowest level *///level = cdmaLevel < evdoLevel ? cdmaLevel : evdoLevel;level = cdmaLevel > evdoLevel ? cdmaLevel : evdoLevel;}}if (DBG) log("getLevel=" + level);return level;}

getCdmaLevel( )获取CdmaLevel,同样也有getEvdoLevel( )函数,在上一个函数中,通过比较Evdo和Cdma的强度,来最终确定信号的显示强度,也就是我们在通知栏里看到的信号格数。

public int getLevel() { int level; if (isGsm) { level = getLteLevel(); if (level == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) { level = getGsmLevel(); } } else { int cdmaLevel = getCdmaLevel(); int evdoLevel = getEvdoLevel(); if (evdoLevel == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) { /* We don't know evdo, use cdma */ level = cdmaLevel; } else if (cdmaLevel == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) { /* We don't know cdma, use evdo */ level = evdoLevel; } else { /* We know both, use the lowest level */ //level = cdmaLevel < evdoLevel ? cdmaLevel : evdoLevel;  level = cdmaLevel > evdoLevel ? cdmaLevel : evdoLevel; } } if (DBG) log("getLevel=" + level); return level; } public int getLevel() {int level;if (isGsm) {level = getLteLevel();if (level == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) {level = getGsmLevel();}} else {int cdmaLevel = getCdmaLevel();int evdoLevel = getEvdoLevel();if (evdoLevel == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) {/* We don't know evdo, use cdma */level = cdmaLevel;} else if (cdmaLevel == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) {/* We don't know cdma, use evdo */level = evdoLevel;} else {/* We know both, use the lowest level *///level = cdmaLevel < evdoLevel ? cdmaLevel : evdoLevel;level = cdmaLevel > evdoLevel ? cdmaLevel : evdoLevel;}}if (DBG) log("getLevel=" + level);return level;}

» 本文地址: http://velep.com/archives/1147.html

» 文章出处: reille博客—http://velep.com , 如果没有特别声明,文章均为reille博客原创作品

AT+CSQ语法即GPRS模块信号格数与信号强度的关系相关推荐

  1. 手机信号格数与GPRS关系

    我们在做GPRS覆盖区的调查时,由于没有专用的仪器!我们用移动的手机来测当地GPRS覆盖好坏!能不能这样说手机信号格数越多GPRS信号就强,覆盖就好!反之也成立 用普通手机信号格数来大概判断信号覆盖的 ...

  2. Android:获取4G模块卡运营商、网络类型、数据连接状态和信号格数

    代码 import android.annotation.SuppressLint; import android.content.Context; import android.os.Bundle; ...

  3. iphone11看信号强度_信号格不等于信号强度 千万别被满格信号格骗了

    大家常用手机状态栏的信号格来衡量当前的信号强度,当信号格小于3格时,人们会下意识认为当前信号不佳,可能事实并非如此. 新款iPhone被指责信号还是差 比如,同在电梯,别人手机信号只有1格还能热火聊天 ...

  4. 测试手机信号格数软件,手机信号格数显示测试是怎么测试的啊?帮忙指导一下吧...

    手机信号格数显示测试是怎么测试的啊?帮忙指导一下吧 了解了,谢谢上楼 用传导和耦合都可以测试,传导测试准确一些. 用仪器打出一个信号强度(CMU和8960都可以),手机中查看,调整补偿值使得两者一致. ...

  5. 测试手机信号格数软件,超详细教程之教你如何查询手机信号的强度

    在日常生活中,相信不少朋友都曾经遇到过这种情况,明明自己的手机信号格显示得很多,但是为什么信号反而更差呢?其实信号格越多,并不代表手机的信号就越强.因为在某些低端机或者是山寨机上,手机厂商会在信号格上 ...

  6. Android获取手机信号强度/信号格数

    这里的信号强度和格数是指状态栏里的信号条数目

  7. GPRS模块中CSQ信号值相关

    我们一般用AT指令去查询模块的信号强度 如: 命令:AT+CSQ 返回:+CSQ: **, ## 其中: **应在 0 到 31 之间(99表示无信号),数值越大表明信号质量越好: ##为误码率,值在 ...

  8. Android 信号格客制化问题处理

    [Android Q] 信号强度客制化代码位置: NR(5G) CellSignalStrengthNr.java updateLevel() LTE MtkSignalStrength.java u ...

  9. cmgr linux命令,linux下利用GPRS模块发短信、打电话

    本文转自:http://www.cnblogs.com/wss-linux/p/3986006.html 一.开发环境 内核版本:linux-3.0 开发板:FL2440(nandflash:K9F1 ...

最新文章

  1. 多版本python共存,安装三方库到指定python版本 多Python版本和虚拟环境
  2. 深大计算机与科学,陆楠 - 深圳大学 - 计算机与软件学院
  3. 「小程序JAVA实战」小程序我的个人信息页面开发(41)
  4. ant design pro取消登录_JeecgBoot实战按需加载 Ant-Design-Vue和Icon
  5. Vue009_过渡动画
  6. C语言结构和高二的知识,c语言基础知识复习.pdf
  7. Java Web会话管理
  8. 第四届大数据科学与工程国际会议(2019)
  9. Linux 设置定时任务 清空日志
  10. 什么是锚点?锚点应该如何用?
  11. 华为交换机关闭网口_华为交换机如何关闭网络端口号
  12. 2021厦门LED照明产业展览会
  13. el-table大数据量渲染卡顿的一种思路
  14. 解决Android studio启动模拟器一直Waiting for target device to come online的一种方式
  15. 标准盒模型 和怪异盒模型
  16. 硬核,这 3 款 IDE 插件让你的代码牢不可破
  17. 计算机输入法切换用户,电脑的输入法切换不了怎么办,教您如何解决电脑系统输入法...
  18. 吴恩达-目标检测讲解笔记
  19. sql中in和exists、not in 和 not exists的区别
  20. adblock过滤规则编写

热门文章

  1. DWZ 提交表单前验证
  2. 计算机考证等级要一级一级考吗
  3. fileinput 时间_Bootstrap的fileinput插件实现多文件上传的方法
  4. 【自考】信息系统开发与管理
  5. Color argb()方法的参数
  6. 双目立体视觉三维重构总结
  7. 百度地图开发-搭建基础脚手架 01
  8. 第十四届华中科技大学程序设计竞赛-L—Fresh Air,bfs拓展,倒着bfs
  9. Windows 10 安装 IDEA(社区免费版)ideaIC-2020.3.3
  10. 警惕职业生涯发展“七宗罪”