西门子TC35i AT指令集:控制GSM设备的实用工具

需积分: 3 0 下载量 40 浏览量 更新于2024-10-08 收藏 706KB PDF 举报
西门子TC35i是一款针对GSM网络开发的专业控制器,其内置了一套完整的AT指令集,这些指令用于管理和监控GSM设备的各种功能。以下是一些关键AT指令及其作用的详细介绍: 1. **at^sbv (查询供电电压)**: 这个指令用于获取设备当前的供电电压信息,结果如`^SBV:4065OK`,其中4065代表电压值,OK表示查询成功。 2. **at^scid (查询SIM卡信息)**: 此指令用于读取SIM卡的信息,如^SCID:89860050019919058974OK,显示的是SIM卡的识别号,确认连接状态。 3. **at^moni (查询当前小区信息)**: 该指令返回详细的服务小区信息,包括ServingCellID(小区ID)、专用频道、频道功率、MCC(移动国家码)、MNC(移动网络码)等,以及其他参数如RSSI(接收信号强度指示)和邻区信息。 4. **at^moni=? (定时获取小区信息)**: 设定查询间隔后,设备每指定秒数会自动提供当前小区信息,有助于实时监测网络状态。 5. **at^monp (查询邻近小区)**: 提供附近可用的小区列表,包括频道、功率等级、MCC/MNC等信息,帮助用户切换网络。 6. **at^sacm (充电询问)**: 检查和管理设备的电池充电状态,包括充电状态和充电控制信息。 7. **at^saic? (语音界面设置)**: 设置或查询语音交互界面的相关参数,如语音模式、按键响应等。 8. **at^sbc? (电池充电及控制)**: 查询电池充电状态和充电控制参数,确保电池健康和优化管理。 9. **at^scks? (设置和查询按键状态)**: 控制和检查设备按键的状态,以便于用户交互。 10. **at^sctm? (设置临界温度操作)**: 监控温度并设置阈值,确保设备在特定温度下正常工作。 11. **at^shom (查询是否本地操作)**: 判断设备是否处于本地操作模式,这对于网络连接的管理和安全很重要。 12. **at^slcd (查询通话时长)**: 显示上一次通话的持续时间,对通话记录管理有帮助。 13. **at^slck=? (查询多种状态)**: 可能包括电源状态、数据通信状态等多种系统状态信息。 14. **at^slms (查询存储容量)**: 显示不同类型存储器(如内存、短信存储等)的剩余空间。 15. **at^sm20? (设置和查询数据通信)**: 控制数据通信的开启和关闭,以及通信状态。 16. **at^smonc (小区信息监视)**: 长期监控和记录小区信息变化,有利于网络故障排查和优化。 通过这些AT指令,用户可以有效地远程控制和监控西门子TC35i的运行状态,提升设备的管理效率和可靠性。对于GSM网络设备的开发人员和维护人员来说,理解并熟练运用这些指令是至关重要的。

void SIM900A_Init(void) { USART_InitTypeDef USART_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1, ENABLE); // 配置USART1的GPIO GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); // 配置USART1 USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART1, &USART_InitStructure); USART_Cmd(USART1, ENABLE); // 等待SIM900A模块启动 delay_ms(5000); } void SIM900A_SendCommand(char* command) { while(*command) { USART_SendData(SIM900A_USART, *command++); while(USART_GetFlagStatus(SIM900A_USART, USART_FLAG_TC) == RESET); } } void SIM900A_SendSMS(char* phoneNumber, char* message) { SIM900A_SendCommand("AT+CMGF=1"); // 设置短信格式为文本模式 SIM900A_SendCommand("AT+CMGS=\"+86"); // 设置手机号码 SIM900A_SendCommand(phoneNumber); SIM900A_SendCommand("\""); SIM900A_SendCommand(message); // 发送短信内容 USART_SendData(SIM900A_USART, 0x1A); // 发送Ctrl+Z结束短信 while(USART_GetFlagStatus(SIM900A_USART, USART_FLAG_TC) == RESET); } void SIM900A_SendSMS_Chinese(char* phoneNumber, char* message) { char ucs2Message[200]; u8 i; u8 j; SIM900A_SendCommand("AT+CMGF=0"); // 设置短信格式为PDU模式 SIM900A_SendCommand("AT+CSCS=\"UCS2\""); // 设置字符集为UCS2 SIM900A_SendCommand("AT+CSMP=17,167,0,8"); // 设置短信参数 SIM900A_SendCommand("AT+CMGS=\"+86"); // 设置手机号码 SIM900A_SendCommand(phoneNumber); SIM900A_SendCommand("\""); for(i = 0, j = 0; i < strlen(message); i += 2, j += 4) { sprintf(&ucs2Message[j], "%02X%02X", message[i+1], message[i]); } ucs2Message[j] = '\0'; SIM900A_SendCommand(ucs2Message); // 发送短信内容 USART_SendData(SIM900A_USART, 0x1A); // 发送Ctrl+Z结束短信 while(USART_GetFlagStatus(SIM900A_USART, USART_FLAG_TC) == RESET); }

2023-06-12 上传