指令:AT
功能:测试AT指令功能是否正常
示例:
指令:AT+CPIN
功能:查询SIM卡是否正常,返回ready则表示SIM卡正常
示例:
指令:AT+CSQ
功能:查询模组的信号强度,第一个值为0-31则正常,99为不正常
示例:
指令:AT+CREG
功能:查询模组是否注册上GSM网络,+CREG:0,1 表示已注册上本地网,+CREG:0,5表示注册上漫游网。
示例:
指令:AT+CERGE
功能:查询模组是否注册上GPRS网络,+CGREG:0,1 表示已注册上本地网,+CGREG:0,5表示注册上漫游网。
示例:
指令:AT+QIFGTCNT=0
功能:配置当前场景
示例:
指令:AT+QICSGP=1, "CMNET"
功能:设置GPRS的APN,移动CMNET,联通UNINET
示例:
指令:AT+QIMODE=0
功能:设置数据传输模式,0表示非透传模式,1表示透传模式
示例:
指令:AT+QIDEACT
功能:在激活GPRS场景之前先关闭GPRS场景,确保连接正确
示例:
指令:AT+QIREGAPP
功能:启动任务并设置接入点APN、用户名和密码
示例:
指令:AT+QIACT
功能:激活移动场景
示例:
指令:AT+QILOCIP
功能:查看模组获取的IP地址
示例:
首先我们需要搭建一个TCP服务器,有两种方式:
因为M26模组直接注册的是公网ip地址,所以这里我们使用第一种方式,在Linux服务器上运行一个Python编写的tcp测试服务器:
这里的Python程序如下:
运行:
效果如下:
查询ip地址:
使用AT命令连接TCP服务器,其中第一个参数是协议类型,“TCP”则表示使用TCP协议,第二个参数是TCP服务器ip地址,也可以使用域名,最一个参数是TCP服务器开启监听的端口:
示例:
连接之后,在服务器端也可以看到:
模组连接到服务器后,服务器会自动发送消息,模组会打印出收到的信息:
使用如下的命令即可向TCP服务器发送消息,首先设置要发送数据的字节数,等待模组返回 > 后,输入要发送的数据即可,如果发送的数据超过了设置的n个字节,则只发送前n个字节,后面的数据被认为是无效数据,不会发送:
示例:
发送成功看服务器上运行的TCP服务器是否收到:
通信完毕之后,可以使用下面的命令关闭TCP连接:
示例:手机信号强度就是手机信号的强弱,表示方法:
手机上显示的数字的单位是dBm(可以用ALT+NMLL就可以让手机显示出当前的接收信号值了),这个值是负的,也就是说手机会显示比如 -67(dBm),那就说明信号很强了。
中国移动的规范规定,手机接收电平>=(城市取-90dBm;乡村取-94dBm) 时,则满足覆盖要求,也就是说此处无线信号强度满足覆盖要求。-67dBm要比-90dBm信号要强20多个dB,那么它在打电话接通成功率和通话过程中的话音质量都会好的多(当然也包括EDGE/GPRS上网的速度那些 )。
所以,那个值越大信号就越好,因为那是个负值,而且在你手里的时候它永远是负值,如果你感兴趣且附近有无线基站的天线的话,你也可以把你的手机尽量接近天线面板,那么值就越来越大;如果手机跟天线面板挨到一起,那么它可能十分接近于 0了(0是达不到的,这里的0的意思也不是说手机没信号了)。
dB,dBm 都是功率增益的单位,不同之处如下:
dB是一个表征相对值的值,纯粹的比值,只表示两个量的相对大小关系,没有单位,当考虑甲的功率相比于乙功率大或小多少个dB时,按这个计算公式:10log(甲功率/乙功率),如果采用两者的电压比计算,要用20log(甲电压/乙电压)。
[例] 甲功率比乙功率大一倍,那么10lg(甲功率/乙功率)=10lg2=3dB。也就是说,甲的功率比乙的功率大3 dB。反之,如果甲的功率是乙的功率的一半,则甲的功率比乙的功率小3 dB。
dBm是一个表示功率绝对值的值(也可以认为是以1mW功率为基准的一个比值),计算公式为:10log(功率值/1mw)。
[例] 如果功率P为1mw,折算为dBm后为0dBm。
[例] 对于40W的功率,按dBm单位进行折算后的值应为: 10log(40W/1mw)=10log(40000)=10log4+10log10000=46dBm。
总之,dB是两个量之间的比值,表示两个量间的相对大小,而dBm则是表示功率绝对大小的值。在dB,dBm计算中,要注意基本概念,用一个dBm减另外一个dBm时,得到的结果是dB,如:30dBm - 0dBm = 30dB。
信号强度和信号格数的显示的关系:
工程师就是根据接受电平数值进行信号格数的划分,将比较复杂的数据以信号格数直观地表达在我们眼前。说到此,就不由得提一下,许多网友说在同一个地方有的手机又一格两格信号,有的手机没有信号,相信大家现在都明白了。当然,这个除了电平数值进行信号格数的划分存在细小差别外,手机之间也会存在个体差异和电平接受能力的差别。看无线网卡信号接受是否稳定方法:
用NetStumbler先确定下你的信号强度和连接质量,如果信号强度高,连接质量低,SSID名字跟你附近的信号有没有冲突,在就调节下你的信道,看是不是别的信号干扰的。
家电,手机等对信号都有干扰作用,先去掉这些干扰,然后在说扩充硬件的事。
无线网卡是终端无线网络的设备,是不通过有线连接,采用无线信号进行数据传输的终端。无线网卡根据接口不同,主要有PCMCIA无线网卡、PCI无线网卡、MiniPCI无线网卡。
BC35-G 是一款高性能、低功耗的多频段 NB-IoT 无线通信模块,支持 B1/B3/B8/B5/B20/B28 频段,在设计和AT指令上与BC95兼容。
小熊派开发板右上角的开关拨到AT-PC一端,则模组直接与PC相连,方便调试。
指令:AT
功能:测试AT指令功能是否正常
示例:
指令:AT+CSQ
功能:返回从 UE 接收到的信号强度指示 <rssi> 和信道误码率 <ber> ,其中第一个值rssi应当在0-31之间,如果为99则表示信号无法检测,第二个参数ber因为模组当前不支持,所以始终为99。
示例:
指令:AT+CEREG
功能:查询当前 EPS 网络注册状态,该指令返回的第一个参数为0则表示禁止网络注册URC,第二个参数表示网络注册状态,1表示已注册本地网,5表示已注册漫游网络,其余值则表示注册失败。
示例:
指令:AT+CGATT
功能:该命令用于查询当前是否将 UE 附着于 PS 域,返回值为1则表示已附着,即网络激活成功。
示例:
指令:AT+CGPADDR
功能:该命令用于查询模组当前的ip地址。
示例:
由于NB-IoT模组可以直接对接IoT平台,所以在单独测试使用UDP连接时,需要 在激活网络成功之后,在获取ip地址之前,关闭IoT平台注册功能 。
使用如下命令禁止该功能:
首先我们需要搭建一个UDP服务器,有两种方式:
因为 NB-IoT 模组直接注册的是公网ip地址,所以这里我们使用第一种方式,在Linux服务器上运行一个Python编写的UDP测试服务器:
这里的Python程序如下:
运行:
效果如下:
使用AT命令连接UDP服务器,首先需要创建一个 UDP 类型的 Socket,创建socket的指令如下:
其中第一个参数是socket类型,DGRAM表示UDP,STREAM表示UDP;第二个参数表示协议类型,UDP 为 17, UDP 为 6,最后一个参数指定socket使用的本地端口,如果为0则表示随机分配。
所以创建UDP socket的示例如下:
指令:
其中第一个参数是由 AT+NSOCR 返回的 Socket 编号,第二个参数是UDP服务器ip地址,也可以使用域名,第三个参数是UDP服务器开启监听的端口,第四个是发送数据的长度,最后一个是要发送的十六进制数据。
示例:
发送之后,在服务器端也可以看到:
模组发送数据到服务器后,服务器会自动发送消息,模组会打印出收到信息的提示:
该信息表示编号为1的socket收到了18字节的数据。
可以使用如下命令查看收到的数据,第一个参数是socket编号,第二个参数是查询的数据长度:
查看刚刚收到的数据:
其中收到的数据为倒数第二个参数,是十六进制格式:
使用 在线工具 将数据转化为字符串即可:
通信完毕之后,可以使用下面的命令关闭最开始创建的socket:
示例:
AT+CSQ怎么返回的信号强度为99只要在服务器端进行了TCP加速,所有访问此服务器的客户端都会受益,并且不需要客户端安装任何软件或部署硬件设备。这样,就更加适用于服务器的访问对象不固定的情况,例如某个服务器是广大的互联网用户来访问。
但是,单边TCP加速无法直接实现压缩、缓存等功能,如果要实现这些功能,同样也需要双边部署。
商业化的TCP加速
1) AppEx Networks(北京华夏创新科技有限公司)的Zeta-TCP
2) FastSoft公司的FastTCP
3) Riverbed/BlueCoat,将TCP协议转换为自定义协议
4) QuickBI,将TCP协议转换为UDP协议,同时采用FEC
5)ServerSpeeder 锐速
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)