概述
发送AT指令配置a7670C模块上网
- 内核配置
- 调试验证
- 应用的编写
- AT的指令的使用
内核配置
概要:基于rv1126平台调试SIMCOM 7670C 4G模块。
1,内核配置及内核代码修改
1.1按照芯片data sheet修改kernel代码,添加PID和VID。
此处根据不同的芯片按照其datasheet进行修改。
1.2 内核配置修改
1.2.1 打开USB gadget的RNDIS功能
1.2.2使能 USB 串口 GSM、CDMA 驱动
1.2.3,使能USB network,配置rndis host
调试验证
2.1 如果内核配置和代码修改正确,设备启动后,ifconfig -a可以看到usb0节点
2.2 用AT指令测试4G模块与主控是否通讯正常
发送如下指令,如果看到回复OK,就证明4G模块与主控通讯正常。
至此驱动层应该算调试OK了。
cat /dev/ttyUSB2 &
echo -e “atrn”>/dev/ttyUSB2
应用的编写
fd_Card1 = open("/dev/ttyUSB1", O_RDWR);//打开4G USB串口节点
iot_tty_set_speed(st_tty.fd_net, 115200); //串口配置,关回显
iot_tty_set_Parity(st_tty.fd_net, 8, 'N', 1);
//AT指令发送的函数
iot_tty_send(&st_tty, "AT+CSQrn", &errcode, buf);
int iot_tty_send(tty_dev_t *tty, char *cmd, int *errcode, char *result)
{
char buf[MAX_AT_SIZE];
fd_set rdfds;
struct timeval tv;
int count = 0; //记录超时次数,多次无法获取结果直接退出了,避免发生阻塞
int i;
int ret;
int error_cnt = 0;
BOOL bRecv = FALSE; //是否已经接收过数据
char *ptr = NULL;
char cmd_tmp[64] = {0}; //去掉AT和? rn 只保留参数
*errcode = 0;
if((ptr=strstr(cmd, "r")) != NULL)
{
memcpy(cmd_tmp, cmd, ptr - cmd); //去掉 r
}
if((ptr=strstr(cmd_tmp, "?")) != NULL)
{
*ptr = '