nordic9160获取当前接入网络制式、LAC、运营商编码及运营商名称、信号强度、流量统计信息(上传/下载流量)、卡的IMSI/ICCID
时间: 2023-09-25 20:15:00 浏览: 166
流量信息获取
、当前基站信息(基站编号、经纬度、覆盖范围等)等。
实现这些功能需要使用AT命令和相关API。以下是一些示例代码:
1. 获取当前接入网络制式
使用AT命令AT+COPS?可以查询当前注册的运营商信息,其中包括网络制式。示例代码如下:
```
nrf_modem_at_cmd("AT+COPS?\r\n", response_buf, sizeof(response_buf), NULL);
if(strstr(response_buf, "LTE") != NULL) {
// 当前为LTE网络
} else if(strstr(response_buf, "GSM") != NULL) {
// 当前为GSM网络
} else if(strstr(response_buf, "WCDMA") != NULL) {
// 当前为WCDMA网络
} else {
// 未知网络
}
```
2. 获取LAC、运营商编码及运营商名称
使用AT命令AT+COPS?也可以获取LAC、运营商编码和运营商名称。示例代码如下:
```
nrf_modem_at_cmd("AT+COPS?\r\n", response_buf, sizeof(response_buf), NULL);
char *lac = strtok(response_buf, ",");
char *mcc = strtok(NULL, ",");
char *mnc = strtok(NULL, ",");
char *operator_name = strtok(NULL, ",");
```
3. 获取信号强度
使用AT命令AT+CSQ可以获取当前信号强度。示例代码如下:
```
nrf_modem_at_cmd("AT+CSQ\r\n", response_buf, sizeof(response_buf), NULL);
char *rssi_str = strtok(response_buf, ":");
int rssi = atoi(strtok(NULL, ","));
```
4. 获取流量统计信息
使用AT命令AT+CGSN可以获取上传和下载的流量统计信息。示例代码如下:
```
nrf_modem_at_cmd("AT+CGSN\r\n", response_buf, sizeof(response_buf), NULL);
char *rx_bytes_str = strtok(response_buf, ",");
char *tx_bytes_str = strtok(NULL, ",");
unsigned long rx_bytes = strtoul(rx_bytes_str, NULL, 10);
unsigned long tx_bytes = strtoul(tx_bytes_str, NULL, 10);
```
5. 获取卡的IMSI/ICCID
使用AT命令AT+CIMI可以获取卡的IMSI,AT+CCID可以获取卡的ICCID。示例代码如下:
```
nrf_modem_at_cmd("AT+CIMI\r\n", response_buf, sizeof(response_buf), NULL);
char *imsi = response_buf;
nrf_modem_at_cmd("AT+CCID\r\n", response_buf, sizeof(response_buf), NULL);
char *iccid = response_buf;
```
6. 获取当前基站信息
使用AT命令AT+CEREG?可以查询当前注册的基站信息。示例代码如下:
```
nrf_modem_at_cmd("AT+CEREG?\r\n", response_buf, sizeof(response_buf), NULL);
char *status_str = strtok(response_buf, ",");
int status = atoi(strtok(NULL, ","));
if(status == 1 || status == 5) {
// 注册成功,可以获取基站信息
nrf_modem_at_cmd("AT+CEREG=2\r\n", NULL, 0, NULL);
nrf_modem_at_cmd("AT+CEREG?\r\n", response_buf, sizeof(response_buf), NULL);
char *lac_str = strtok(response_buf, ",");
char *ci_str = strtok(NULL, ",");
char *tac_str = strtok(NULL, ",");
char *cell_id_str = strtok(NULL, ",");
char *earfcn_str = strtok(NULL, ",");
char *rsrp_str = strtok(NULL, ",");
char *rsrq_str = strtok(NULL, ",");
char *ta_str = strtok(NULL, ",");
int lac = strtol(lac_str, NULL, 16);
int ci = strtol(ci_str, NULL, 16);
int tac = strtol(tac_str, NULL, 16);
int cell_id = strtol(cell_id_str, NULL, 16);
int earfcn = atoi(earfcn_str);
int rsrp = atoi(rsrp_str);
int rsrq = atoi(rsrq_str);
int ta = atoi(ta_str);
}
```
注意:以上代码仅供参考,具体实现可能会因为不同的模块或运营商而有所不同。
阅读全文