AT指令建立TCP/IP 链接,并自收发数据
来源:互联网 发布:linux dhcp服务器搭建 编辑:程序博客网 时间:2024/06/07 01:22
3G模块:华为MU709 MU509
内核版本:3.15
前面说过PPPD拨号及上网,今天说说AT指令建立TCP链接。
代码如下:
int tcp_3g_test(void)
{
int ret;
char AT[] = "AT\r\n"; //模块上电初始化完成后,发送AT,会回应"ok"
char ATE[] = "ATE0\r\n"; //关闭命令回显
char ATCMEE[] = "AT+CMEE=1\r\n"; //错误返回时,用错误代码代替错误详细文本
//char ATRST[] = "AT^RESET\r\n"; //立即复位模块,通过添加参数,可以延时复位
char ATCURC[] = "AT^CURC=0\r\n"; //关闭模块主动上传的信息,像^RSSI,^MODE,^SRVST,^SMMEMFULL.还会有一些命令自动上传
//char ATDVCFG[] = "AT^DVCFG=1\r\n"; //数据和语音, 数据优先模式
char ATCPIN[] = "AT+CPIN?\r\n"; //检查sim卡是否安装好?
char ATCSQ[] = "AT+CSQ\r\n"; //检查网络信号强弱
//internet service commands,用于向服务器发送TCP/UDP数据
char ATIPINIT[] = "AT^IPINIT=\"3GNET\"\r\n"; //初始化网络连接,能够获取一个IP
char ATIPCHECK[] = "AT^IPINIT?\r\n"; //初始化
char ATLISTEN[]="AT^IPLISTEN=\"TCP\",5000\r\n";//启用TCP监听
char ATIPOPEN[] = "AT^IPOPEN=1,\"TCP\",\"10.0.64.43\",5000,8000\r\n"; //建立TCP link 建立一个远程连接,连接远程服务器。IP地址、端口需要设置成真正的目标地址。
char ATIPOPENCHECK[] = "AT^IPOPEN?\r\n"; //查询当前 link 建立一个远程连接,连接远程服务器。IP地址、端口需要设置成真正的目标地址。
// char ATIPENTRANS[] = "AT^IPENTRANS=1\r\n"; //开启透明传输
char IPSEND1[] = "AT^IPSEND=1, \"this is 3g tcp send test\"\r\n"; //发送数据
char IPSEND2[] = "AT^IPSEND=1, \"this is wang shi zhu 3g tcp send test\"\r\n"; ////发送数据
char IPRECV[] = "AT^IPGETDATA?\r\n"; //数据包接收查询
ret=write_string(AT,__LINE__);
if(!ret)
{
printf("read at error in %d\n",__LINE__);
return -1;
}
ret=write_string(ATCPIN,__LINE__);
if(!ret)
{
printf("read at error in %d\n",__LINE__);
return -1;
}
SIM卡正常状态应为
ret=write_string(ATCSQ,__LINE__);
if(!ret)
{
printf("read at error in %d\n",__LINE__);
return -1;
}
if(csq==0||csq==99)
{
return -1;
}
正常情况下信号强度应该在11以上,我这是只插了天线接头,没接天线线体。如果不插天线,2个都是99,这样是无法建立tcp链接的
ret=write_string(ATE,__LINE__);
if(!ret)
{
printf("read at error in %d\n",__LINE__);
return -1;
}
ret=write_string(ATCMEE,__LINE__);
if(!ret)
{
printf("read at error in %d\n",__LINE__);
return -1;
}
ret=write_string(ATCURC,__LINE__);
if(!ret)
{
printf("read at error in %d\n",__LINE__);
return -1;
}
//------------------------------关闭之前的连接-------------------------
//IpLink=0,可能是本连接断开,“^IPSTATE: 1,0,0”;也可能是网络注册失效,“^IPSTATE: 7,0,2”
//为了能够重新连接成功,所以,重复发送下面的三条语句。
ret=write_string("AT^IPCLOSE=1\r\n",__LINE__);
if(!ret)
{
printf("read at error in %d\n",__LINE__);
//return -1;
}
ret=write_string("AT^IPCLOSE=6\r\n",__LINE__);
if(!ret)
{
printf("read at error in %d\n",__LINE__);
//return -1;
}
ret=write_string("AT^IPCLOSE=7\r\n",__LINE__);
if(!ret)
{
printf("read at error in %d\n",__LINE__);
//return -1;
}
ret=write_string(ATIPINIT,__LINE__);
if(!ret)
{
printf("read at error in %d\n",__LINE__);
return -1;
}
初始化网络连接,能够获取一个IP
ret=write_string(ATIPCHECK,__LINE__);
if(!ret)
{
printf("read at error in %d\n",__LINE__);
return -1;
}
查看获取到的IP
ret=write_string(ATLISTEN,__LINE__);
if(!ret)
{
printf("read at error in %d\n",__LINE__);
return -1;
}
sprintf(ATIPOPEN,"AT^IPOPEN=1,\"TCP\",%s,5000,8000\r\n",ip_3g);
printf("ATIPOPEN=%s\n", ATIPOPEN);
连接IP,就是上面初始化获取到的第一个IP地址
ret=write_string(ATIPOPEN,__LINE__);
if(!ret)
{
printf("read at error in %d\n",__LINE__);
return -1;
}
查看当前的链接
ret=write_string(ATIPOPENCHECK,__LINE__);
if(!ret)
{
printf("read at error in %d\n",__LINE__);
return -1;
}
有2个link,如下所示
ret=write_string(IPSEND1,__LINE__);
if(!ret)
{
printf("read at error in %d\n",__LINE__);
return -1;
}
发送数据
ret=write_string(IPSEND2,__LINE__);
if(!ret)
{
printf("read at error in %d\n",__LINE__);
return -1;
}
link1发送数据 “this is 3g tcp send test”
link2 接收到数据 如下所示
}
以上就是AT指令建立TCP链接进行自收发数据的过程。
- AT指令建立TCP/IP 链接,并自收发数据
- AT指令收发短信
- Android扫描局域网内IP并建立Socket连接,和PC服务端收发数据
- 20101013-华为GTM900C/EM310收发TCP数据AT命令流程
- 20101013-华为GTM900C/EM310收发TCP数据AT命令流程
- TCP/IP 协议 建立与链接
- UDP广播IP,PORT,TCP建立链接
- TCP/IP协议入门,与viz服务端收发数据
- SIM7600CE TCP AT指令
- sqlserver 建立跨IP跨数据库查询配置数据链接
- 建立tcp/ip连接,vc6实现客户端(发送数据)
- C# TCP/IP 连接实现数据收发 Demo (Visual Studio)
- 使用Java建立TCP连接并发送数据
- AT指令-通过串口收发短消息(上,下)
- 关于短信收发 的at指令方面的资料
- AT指令-通过串口收发短消息(上,下)
- 关于收发短信的AT指令(转载)
- TCP UDP建立链接对比
- 更新php并且安装php和mysql的扩展
- 电子书《自己动手写神经网络》2016总结
- keil用fromelf生成bin文件说明
- java处理excel的2大框架:jakarta POI和JavaExcelAPI(简称JXL)
- 使用Android Studio新建Project并建立多个module
- AT指令建立TCP/IP 链接,并自收发数据
- HDU【2222】Keywords Search
- 2.Redis常用命令
- Spring整合JMS(四)——事务管理 博客分类:
- 阿里云Ubuntu服务器上部署JavaWeb项目
- LeetCode 35:Search Insert Position
- 通过Linux学习RTOS
- (3)Jfreechart柱状图自定义柱子颜色以及柱子的方向
- AFNetworking2.0源码解析<三>