目录
SIM908/508 GPRS发送数据中的控制符
今天发送一组数据,发现数据每次都是只发送到一半,后面的数据都没有了,检查了一下发送出去的数据,和要待发的数据在哪个地方断开,发现是在0x19和0x1A处断开,所以0x19和0x1A是比较特殊的数值,经过比较,发现是0x1A导致的后面的数据丢失,0x1A 刚好是发送控制符,也就是数组中的0x1A导致了数据的提前发送,后面的数据就没发出去。去掉0x1A后,发现问题换成另一个问题,那就是,数据根本就没有发出去,后来了解得知,是0x1B的问题,0x1B刚好是模块的“退出”控制符,所以模块在接收到0x1B时,模块退出发送状态,导致数据无法发送出去。
以前没有发现这个问题,是因为以前测试用的事变动的数据,数据一直在变动,所以导致一两条数据没有发出去,我们察觉不出来。
有人有相似的经验:
请教关于SIMCOM 的GPRS 模块,关于IP发送结束字符CTRL+Z的问题 - 捷配电子市场网
SIM908解决方式很简单,无需上面连接提到的方法,只需利用AT+CIPSEND 的length参数,控制发送的长度即可
,使用length 参数 还看免去 ctrl+z 这一步,非常方便。UESTC LCX 2012.3.25
AT+CIPSEND=length
例如:
AT+CIPSEND=9
AT+CIPSEND=09
AT+CIPSEND=009
以上等效。
sim300 GPRS数据收发程序
2011-05-21 11:41:39
原文地址:sim300 GPRS数据收发程序作者:半岛鱼
sim300 GPRS数据收发程序
//int openport(char *Dev) //打开串口
//int setport(int fd, int baud,int databits,int stopbits,int parity)//设置串口,波特率,数据位,停止位,校验
//int readport(int fd,char *buf,int len,int maxwaittime)//读数据,参数为串口,BUF,长度,超时时间
//int writeport(int fd,char *buf,int len) //发送数据
//int modem_init(int fd) // modem设备的初始化
//int modem_send() //数据发送
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <termios.h>
#include <sys/time.h>
#include <stdlib.h>
unsigned char rbuf[256],rbuf1[256];
int openport(char *Dev)
{
int fd = open( Dev, O_RDWR|O_NOCTTY|O_NDELAY );
if (-1 == fd)
{
perror("Can''t Open Serial Port");
return -1;
}
else
return fd;
}
int setport(int fd, int baud,int databits,int stopbits,int parity)
{
int baudrate;
struct termios newtio;
switch(baud)
{
case 300:
baudrate=B300;
break;
case 600:
baudrate=B600;
break;
case 1200:
baudrate=B1200;
break;
case 2400:
baudrate=B2400;
break;
case 4800:
baudrate=B4800;
break;
case 9600:
baudrate=B9600;
break;
case 19200:
baudrate=B19200;
break;
case 38400:
baudrate=B38400;
break;
default :
baudrate=B9600;
break;
}
tcgetattr(fd,&newtio);
bzero(&newtio,sizeof(newtio));
//setting c_cflag
newtio.c_cflag &=~CSIZE;
switch (databits)
{
case 7:
newtio.c_cflag |= CS7; //7位数据位
break;
case 8:
newtio.c_cflag |= CS8; //8位数据位
break;
default:
newtio.c_cflag |= CS8;
break;
}
switch (parity) //设置校验
{
case 'n':
case 'N':
newtio.c_cflag &= ~PARENB;
newtio.c_iflag &= ~INPCK;
break;
case 'o':
case 'O':
newtio.c_cflag |= (PARODD | PARENB);
newtio.c_iflag |= INPCK;
break;
case 'e':
case 'E':
newtio.c_cflag |= PARENB;
newtio.c_cflag &= ~PARODD;
newtio.c_iflag |= INPCK;
break;
case 'S':
case 's':
newtio.c_cflag &= ~PARENB;
newtio.c_cflag &= ~CSTOPB;break;
default:
newtio.c_cflag &= ~PARENB;
newtio.c_iflag &= ~INPCK;
break;
}
switch (stopbits)//设置停止位
{
case 1:
newtio.c_cflag &= ~CSTOPB; //1
break;
case 2:
newtio.c_cflag |= CSTOPB; //2
break;
default:
newtio.c_cflag &= ~CSTOPB;
break;
}
newtio.c_cc[VTIME] = 10;
newtio.c_cc[VMIN] = 0;
newtio.c_cflag |= (CLOCAL|CREAD);
newtio.c_oflag|=OPOST;
newtio.c_iflag &=~(IXON|IXOFF|IXANY);
cfsetispeed(&newtio,baudrate);
cfsetospeed(&newtio,baudrate);
//newtio.c_cflag &= ~CNEW_RTSCTS;
newtio.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
newtio.c_oflag &= ~OPOST;
tcflush(fd, TCIOFLUSH);
if (tcsetattr(fd,TCSANOW,&newtio) != 0)
{
perror("SetupSerial 3");
return -1;
}
return 0;
}
int readport(int fd,unsigned char *buf,int len,int maxwaittime)//读数据,参数为串口,BUF,长度,超时时间
{
int no=0;int rc;int rcnum=len;
int gotend=0;
struct timeval tv;
fd_set readfd;
tv.tv_sec=maxwaittime/1000; //SECOND
tv.tv_usec=maxwaittime00*1000; //USECOND
FD_ZERO(&readfd);
FD_SET(fd,&readfd);
rc=select(fd+1,&readfd,NULL,NULL,&tv);
if(rc>0)
{
//while(len)
{
while(!gotend)
{
rc=read(fd,&buf[no],1);
if(no>=2)
{
if(((buf[no]==0x0A)&&(buf[no-1]==0x0D))||(buf[no]=='#')||((buf[no-1]=='>')&&(buf[no]==0x20))) gotend=1; //(buf[no]==' ')||
}
if(rc>0)
no=no+1;
len=len-1;
}
}
// printf("t buf=%cn",buf[2]);
if(no!=rcnum)
return no; //如果收到的长度与期望长度不一样,返回-1
return rcnum; //收到长度与期望长度一样,返回长度
}
return -1;
}
//csshixia
#if 0
int readport_1(int fd,unsigned char *buf,int len,int maxwaittime)//读数据,参数为串口,BUF,长度,超时时间
{
int no=0;int rc;int rcnum=len;
int gotend=0;
struct timeval tv;
fd_set readfd;
tv.tv_sec=maxwaittime/1000; //SECOND
tv.tv_usec=maxwaittime00*1000; //USECOND
FD_ZERO(&readfd);
FD_SET(fd,&readfd);
rc=select(fd+1,&readfd,NULL,NULL,&tv);
if(rc>0)
{
while(len)
{
//while(!gotend)
{
rc=read(fd,&buf[no],1);
//printf("%dn",rc);
// printf("t buf=%cn",buf[no]);
// {
if((no>=2)&&(buf[no]=='#')) break; //(buf[no]==' ')||
// }
if(rc>0)
no=no+1;
len=len-1;
}
}
// printf("t buf=%cn",buf[2]);
if(no!=rcnum)
return no; //如果收到的长度与期望长度不一样,返回
return rcnum; //收到长度与期望长度一样,返回长度
}
return -1;
}
#endif
//ceshi
int writeport(int fd,unsigned char *buf,int len) //发送数据
{
write(fd,buf,len);
}
void clearport(int fd) //如果出现数据与规约不符合,可以调用这个函数来刷新串口读写数据
{
tcflush(fd,TCIOFLUSH);
}
int check_recv(unsigned char *buf,int sno)
{
switch(sno)
{
case 0:
case 1:
case 3:
if(strcmp(&buf[2],"OK")==0)
{
printf("%dn",strcmp(&buf[2],"OK"));
return 0;
}
else
return -1;
//if(strcmp(buf,"ERROR")==0
break;
case 2:
if(strcmp(&buf[2],"SHUT OK")==0)
{
printf("%dn",strcmp(&buf[2],"SHUT OK"));
return 0;
}
else
return -1;
break;
case 4:
if(strcmp(&buf[2],"CONNECT OK")==0)
{
printf("%dn",strcmp(&buf[2],"CONNECT OK"));
return 0;
}
else
return -1;
break;
case 5:
if(strcmp(&buf[2],"> ")==0)
{
printf("%dn",strcmp(&buf[2],"> "));
return 0;
}
else
return -1;
break;
case 6:
if(strcmp(&buf[2],"SEND OK")==0)
{
printf("%dn",strcmp(&buf[2],"SEND OK"));
【GPRS透明传输】GPRS透明传输
GPRS应用中TCP与UDP的比较
批注:
TCP是电话连接,有线路实现的.
UDP是 手机短信,在正式通信前不必与对方先建立连接,不管对方状态就直接发送,只需要输入对方手机号即可,不保证能收到。
中国移动、中国联通推行的GPRS网络、CDMA网络已覆盖大量的区域,通过无线网络实现数据传输成为可能。无线Modem采用GPRS、CDMA模块通过中国移动、中国联通的GPRS、CDMA网络进行数据传输,并通过TCP/IP协议进行数据封包,可灵活地实现多种设备接入,工程安装简单,在工业现场数据传输的应用中,能很好的解决偏远无网络无电话线路地区的数据传输的难题。同传统的数传电台想比较,更具有简便性、灵活性、易操作性,同时还降低了成本,无线Modem传输方案是现代化工业现场数据传输最好的选择方案。
目前中国移动、中国联通提供的GPRS网络、CDMA网络的数据传输带宽在40Kbps左右,且受带宽的限制,数据采集方案最好采用于主动告警、数据轮巡采集、告警主动回叫等对传输带宽占用较少的采集方式。同时考虑对前置机实时采集方案的支持,无线Modem传输方案只能作为目前传输方案的补充。
随着无线通讯技术的不断发展,无线传输数据带宽将不断提高,采用3G无线网络,数据传输带宽将达到2M,无线传输方案将逐渐成为监控传输组网的主要应用方案。
目前,由于GPRS和CDMA固有的特性,在各个领域中GPRS和CDMA的应用也越来越广泛,但是关于传输中使用TCP/IP协议还是UDP协议,却争论很多。
这里先简单的说一下TCP与UDP的区别:
1。基于连接与无连接
2。对系统资源的要求(TCP较多,UDP少)
3。UDP程序结构较简单
4。流模式与数据报模式
5。TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证
另外结合GPRS网络的情况具体的谈一下他们的区别:
1。TCP传输存在一定的延时,大概是1600MS(移动提供),UDP响应速度稍微快一些。
2。TCP包头结构
源端口16位
目标端口 16位
序列号 32位
回应序号 32位
TCP头长度 4位
reserved 6位
控制代码6位
窗口大小16位
偏移量16位
校验和16位
选项 32位(可选)
这样我们得出了TCP包头的最小大小.就是20字节.
UDP包头结构
源端口16位
目的端口16位
长度 16位
校验和 16位
UDP的包小很多.确实如此.因为UDP是非可靠连接.设计初衷就是尽可能快的将数据包发送出去.所以UDP协议显得非常精简.
3。GPRS网络端口资源,UDP十分紧缺,变化很快;而TCP采用可靠链路传输,不存在端口变化的问题
工业场合的应用一般都有以下特点,
1。要求时时传输,但也有一些场合是定时传输,总的来说在整个传输过程中要求服务器中心端和GPRS终端设备能相互的、时时的传输数据。
TCP本身就是可靠链路传输,提供一个时时的双向的传输通道,能很好的满足工业现场传输的要求。但是GPRS网络对TCP链路也存在一个限制:此条链路在长时间(大概20分钟左右,视具体情况而定)没有数据流量,会自动降低此链路的优先级直至强制断开此链路。所以在实际使用中也会采用心跳包(一般是一个字节的数据)来维持此链路。
UDP由于自身特点,以及GPRS网络UDP端口资源的有限性,在一段时间没有数据流量后,端口容易改变,产生的影响就是从服务器中心端向GPRS终端发送数据,GPRS终端接收不到。具体的原因就是移动网关从中作了中转,需要隔一定时间给主机发UDP包来维持这个IP和端口号,这样主机就能主动给GPRS发UDP包了并且我在测试中发现,这个间隔时间很短,我在1多分钟发一次UDP包才能够维持,但是再长可能移动网关那边就要丢失这个端口了,此时如果主机想主动发数据给GPRS,那肯定是不行的了,只有GPRS终端设备再发一个UDP包过去,移动重新给你分配一个中转IP和端口,才能够进行双向通讯。
2。要求数据的丢包率较校有些工业场合,例如电力、水务抄表,环保监测等等,不容许传输过程中的数据丢失或者最大限度的要求数据的可靠性。
从这一点来看,很显然在无线数据传输过程中,TCP比UDP更能保证数据的完整性、可靠性,存在更小的丢包率。在实际测试中也是如此。以厦门蓝斯通信有限公司提供的GPRS终端设备为例:TCP的在千分之9,UDP的在千分之17左右。
3。要求降低费用。目前有很大部分GPRS设备的应用都是取代前期无线数传电台,除了使用范围外,其考虑的主要问题就是费用。能降低费用当然都是大家最愿意接受的。和费用直接相关的就是流量了,流量低,费用就低了。
虽然TCP本身的包头要比UDP多,但是UDP在实际应用中往往需要维护双向通道,就必须要通过大量的心跳包数据来维护端口资源。总的比较起来,UDP的实际流量要比TCP还要大。很多使用者在初期的时候并不了解UDP需要大量心跳包来维持端口资源这个问题,往往都认为UDP要比TCP更节省流量,实际上这里存在着一个误区。
4。在某些特定的应用场合,例如一些银行的时时交互系统,对响应速度要求很高,此时数据传输频率较快,不需要大量心跳包维持UDP端口资源,采用UDP就比较有利了。
5。在目前的1:N的传输模式中,既有多个GPRS终端设备往一个服务器中心传输数据,此时采用UDP会比TCP要好的多,因为UDP耗用更少的系统资源。但是在实际应用中却发现,很多用户还是采用TCP的传输方式,建立二级中心1:A(1:N),即每一个分中心对应N/A台设备,独立处理数据,再统一将数据传送到主中心。这样既能保证了传输过程中采用了TCP的传输协议,又能很好处理了中心服务器的多链路的系统耗用的问题。
总的来说,我认为TCP/IP协议更能满足目前各行业对远程数据传输的要求,它提供更稳定更便利的传输通道,很好的满足了远程数据传输的要求。
转自:
http://www.gg-led.com/thread-738516---.html
TCP
通过IP的源/目的可以唯一的区分网络中的两个设备的链接,通过socket的源/目的可以唯一的区分网络中两个应用程序的连接。
TCP三次握手协议:三次握手_百度百科
滑动窗口协议:流量控制简析_雪狼虎的技术博客_51CTO博客
【GPRS IP地址】GPRS IP地址的问题
http://www.gongkong.com/webpage/forum/200406/2-AF42-F296B18EA42D-1.shtml
呵呵,也不一定是DHCP分配的啦,GGSN可以内部维护一个地址池,由自己分配终端地址,另外RADIUS服务器也可以分配地址的。分配的这个地址一般是内部地址,访问外网的话需要GGSN作NAT映射。这个地址在一次PDP会话过程中保持不变,这也是GPRS号称永远在线的原因,一次PDP会话是指激活PDP上下文和去活PDP上下文这个时间区间。一般来说,可以认为在拨号时分配的地址不会变。如果你一段时间内不发送数据来维持链路的话,IP会重新分配一般来说10分钟内要发送一个维持包
厦门四信通信科技有限公司
手 机:13950002847
直线电话: 0592-6300324
技术交流:MSN: lxj7871@tom.com QQ:17817807
引用 | 回复
| 管理
| 设为最佳回复
| 2004-06-25 01:11:00 2楼冯铭
林胖胖,你们的宣传不错啊
引用 | 回复
| 管理
| 设为最佳回复
| 2004-06-25 02:56:00 3楼林湘建
谢谢冯瘦瘦来捧场,希望以后能常看到你的身影.技术方面请多指教!
引用 | 回复
| 管理
| 设为最佳回复
| 2004-06-25 11:47:00 4楼winter-01
这里好热闹啊。我刚入行的,多多指教啊。
引用 | 回复
| 管理
| 设为最佳回复
| 2004-06-25 11:48:00 5楼winter-01
冯瘦瘦你可知道林胖胖的女朋友是非常非常的,哇靓及了。
引用 | 回复
| 管理
| 设为最佳回复
| 2004-08-13 14:20:00 6楼茜茜
热闹,林胖胖的女朋友不说1000里挑1,也是10000里挑2,哈哈
引用 | 回复
| 管理
| 设为最佳回复
| 2004-09-14 22:38:00 7楼金枪鱼
林胖胖的女朋友不说1000里挑1,也是10000里挑2!!!!!! 真的么,楼上的你见过没?? 关注ing~~~~~~~~~~~~~~ ~_~
引用 | 回复
| 管理
| 设为最佳回复
| 2004-09-27 13:56:00 8楼月照西风血满楼
TO 老林:如果一段时间内不发送数据来维持链路的话,IP会重新分配吗?可是我的SOCKET连接还建立着呢!能否详细解释一下,这与我理解的完全不同,我的理解是:只要我的GPRS终端和上位机服务器的连接建立着,即使没有数据流量,连接也不会被自动断开(号称永远在线呀),并且IP地址的分配是在GPRS模块附着到GPRS网络的过程中由GGSN分配的,只要GPRS模块没有掉电重启,该IP地址相对来说是固定不变的。
引用 | 回复
| 管理
| 设为最佳回复
| 2004-09-27 15:14:00 9楼北京映翰通
GPRS的“永远在线” 是这样理解的 GPRS模块如果在长时间内没有数据流量的话,那么它肯定是会吊线的。GPRS模块吊线后,如果它要重新拨号登入网络的的话,那么它可以在非常短的时间内重新拨号上网,建立网络连接,这个拨号时间非常之短(<1S),短到可以理解为它没有吊过线,而这时它又会被分配了一个新的IP。因此通常情况下会根据当地网络的情况自行设置在每隔一小段时间内来发维持包来做这样的维持连接,而保持它的IP地址不变,这个维持连结包也能检测到模块是否吊线,如果吊线,模块将重新拨号上网
引用 | 回复
| 管理
| 设为最佳回复
| 2004-10-09 09:04:00 10楼沈文建
我觉得永远在线的说法主要来自于模块本身的自动拨号功能,模块在前端有数据传输的时候可以自动拨号自动上传。我们用GPRS传图像时就是这样的。
引用 | 回复
| 管理
| 设为最佳回复
| 2004-10-13 22:11:00 11楼枪林弹雨
枪林弹雨
积分:1
帖子:0
注册:04-10-13 [个人博客] [个人播客]
[加为好友] [发送消息]
有在东北用过用GPRS网络参与控制的么?我们在东北的一个项目,GPRS数据丢包现象太严重,与山东、江浙一带根本没有办法比。
引用 | 回复
| 管理
| 设为最佳回复
| 2004-10-14 12:47:00 12楼槿
我们在东北用过,TCP协议的,还可以啊!
引用 | 回复
| 管理
| 设为最佳回复
| 2004-10-15 00:46:00 13楼林湘建
北京映翰通说得对,其实不用拘泥与下位机IP变不变,大部分GPRS连接都是有下位机发起的,关键是上位机IP固定与否!
厦门四信通信科技有限公司
手 机:13950002847
直线电话: 0592-6300324
技术交流:MSN: lxj7871@tom.com QQ:17817807
引用 | 回复
| 管理
| 设为最佳回复
| 2004-10-19 16:46:00 14楼小奕
请问林大侠: 1、心跳维持包可以是发给DTU自己的包吗? 2、GPRS固定IP的申请费用和使用费用是多少? 谢谢!
引用 | 回复
| 管理
| 设为最佳回复
| 2004-10-19 22:18:00 15楼林湘建
TO:小奕 1.可以发给自己,但发给自己并不能起到维持链路的作用,所以没有实际使用价值!具体原理就不详说了. 2.GPRS的固定IP每个地市的移动政策和费用都不一样,我没办法确切回答,也不易公开!您可以发邮件告诉我您的区域,和想应用的行业和数量.
厦门四信通信科技有限公司
手 机:13950002847
直线电话: 0592-6300324
技术交流:MSN: lxj7871@tom.com QQ:17817807
引用 | 回复
| 管理
| 设为最佳回复
| 2004-10-20 08:50:00 16楼小奕
TO林湘建: 心跳包发给自己虽然不能维持链路,但可以维持自己的IP不变,是吗?
引用 | 回复
| 管理
| 设为最佳回复
| 2004-10-20 09:39:00 17楼北京映翰通
发送心跳包可以做到维持这样的连接保持其IP 但是你不能保证它的IP永远固定不变,因为这和很多因素有关 所以发送心跳包同时也能检测到模块是否吊线,如果吊线,模块将会自动登入网络
引用 | 回复
| 管理
| 设为最佳回复
| 2004-10-20 11:32:00 18楼晕中漫步
TO林湘建: 你好!可以给我一些心跳周期检测方面的资料吗 wuxiaozan@hotmail.com
引用 | 回复
| 管理
| 设为最佳回复
| 2004-10-21 14:30:00 19楼北京映翰通
林工 你的人气很旺嘛呵呵我也想看一下心跳周期相关的资料:) pjx@inhand.com.cn
引用 | 回复
| 管理
| 设为最佳回复
| 2004-10-22 00:40:00 20楼林湘建
TO:小奕 GPRS链路断开之前IP是不会变的,目前下位机的IP不需要固定,大多是采用ID编号或者利用手机号码来辨别下位机设备的身份! TO:和女朋友冷战中 ,北京映翰通心跳周期检测方面的资料全是现场测试经验,每个地区的网络环境都不一样,所以经验也是相对的.只有自己亲自在当地检测才能够得出准确合适的心跳周期!
厦门四信通信科技有限公司
手 机:13950002847
直线电话: 0592-6300324
技术交流:MSN: lxj7871@tom.com QQ:17817807
引用 | 回复
| 管理
| 设为最佳回复
| 2004-12-01 10:37:00 21楼mahic
TO林湘建:你谈到“分配的这个地址一般是内部地址,访问外网的话需要GGSN作NAT映射。”,这具体怎么理解?能说的详细点吗?我现在用拨号网络拨上后,分配到的是10.*.*.*的地址,而且无法通过这个连接上网,怎么解决?
引用 | 回复
| 管理
| 设为最佳回复
| 2004-12-02 16:58:00 22楼林湘建
你是用什么设备拨号,具体的拨号过程说一下!
厦门四信通信科技有限公司
手 机:13950002847
直线电话: 0592-6300324
技术交流:MSN: lxj7871@tom.com QQ:17817807
引用 | 回复
| 管理
| 设为最佳回复
| 2004-12-06 11:54:00 23楼mahic
我现在用的WIN2000上的拨号网络。我在win2000中在com1口创建了一个19200的标准modem,8-n-1,无流控制,在高级选项中填了at+cgdcont=1,ip,cmnet 然后,使用这个modem建立一个拨号连接,号码:*99***1# 拨号后,能注册到远程机器,得到10.*的地址,但ping不通动态分配的DNS等。而且,当我访问网页或其他活动时,可以看到有数据发送,但速度相当缓慢。而接收字节数却不变化。在linux下,我用kppp+pppd,也能拨上,但情况和windows下一样。
引用 | 回复
| 管理
| 设为最佳回复
| 2004-12-27 13:15:00 24楼dongfanglu
正在上传…重新上传取消
dongfanglu
积分:5
帖子:1
注册:04-12-27 [个人博客] [个人播客]
[加为好友] [发送消息]
在linux下面最好用pppd call gprs-link,自己写脚本的方式,用kppp好像不行。(这是我自己测试的,在redhat9.0下) GPRS-LINK: /dev/ttyS0 57600 nocrtscts connect "/usr/sbin/chat -v -f /etc/ppp/peers/gprs-chat" noipdefault usepeerdns noauth defaultroute connect-delay 5000 GPRS-CHAT: ABOUT BUSY ' AT+CGDCONT=1,"IP","cmnet","0.0.0.0",0,0 OK ATDT*99**PPP*1#
引用 | 回复
| 管理
| 设为最佳回复
| 2004-12-27 13:41:00 25楼dongfanglu
在linux下面最好用pppd call gprs-link,自己写脚本的方式,用kppp好像不行。(这是我自己测试的,在redhat9.0下) GPRS-LINK: /dev/ttyS0 57600 nocrtscts connect "/usr/sbin/chat -v -f /etc/ppp/peers/gprs-chat" noipdefault usepeerdns noauth defaultroute connect-delay 5000 GPRS-CHAT: ABOUT BUSY '' AT+CGDCONT=1,"IP","cmnet","0.0.0.0",0,0 OK ATDT*99**PPP*1#
引用 | 回复
| 管理
| 设为最佳回复
| 2005-01-31 17:11:00 26楼天畅信息
我公司已解决gprs ip地址问题真正的双向数据传输,应用完全透明具体方案请联系 021-64831501-85 baoxj@techown.com
引用 | 回复
| 管理
| 设为最佳回复
| 2005-02-03 16:01:00 27楼locke
GPRS的动态地址问题是可以解决的,应用企业可以通过特定的技术分配固定的IP地址,并对其进行主动访问。
引用 | 回复
| 管理
| 设为最佳回复
| 2005-02-03 23:33:00 28楼林湘建
lxj7871
积分:1667
帖子:70
注册:03-04-07 [个人博客] [个人播客]
[加为好友] [发送消息]
楼上的朋友,GPRS网络是移动公司建立的,一切的网络资源都由移动公司来分配.包括固定GPRS的IP地址. 你说的由应用企业来解决固定IP地址的问题,而且还能对其主动访问,好象不太可能.希望你能说出过程和实现方法。
厦门四信通信科技有限公司
手 机:13950002847
直线电话: 0592-6300324
技术交流:MSN: lxj7871@tom.com QQ:17817807
引用 | 回复
| 管理
| 设为最佳回复
| 2005-03-09 21:58:00 29楼gongkongedit
各位大侠你们好我是一个初来入道的我主要负责四川省桑荣GPRS CDMA 无线数传终端设备全透明传输和GSM MODEM CDMA MODEM等无线数传终端设备销售具体详情来电028-81377589 蒋军华帮你解决数传问题,让你享受星级服务
引用 | 回复
| 管理
| 设为最佳回复
| 2005-03-11 10:39:00 30楼云飘渺
企业自己实现固定IP问题???没听说过~~~
引用 | 回复
| 管理
| 设为最佳回复
| 2005-03-16 22:05:00 31楼无聊的贴
上海和北京为什么GPRS对GPRS就不能访问?
引用 | 回复
| 管理
| 设为最佳回复
| 2005-04-09 14:23:00 32楼gongkongedit
实现固定IP是可以的,向移动公司申请为每张SIM卡绑定一个IP,但是仅限于少量应用,否则很浪费IP资源,移动不会批准的。而由企业自己实现固定IP问题,理论上来说似乎不大可能。如果locke兄所说属实,建议把实现过程描述一下,让大家开开眼界。
引用 | 回复
| 管理
| 设为最佳回复
| 2005-04-09 16:54:00 33楼林湘建
TO:兼容1 上海和北京因为语音业务比较繁忙而且利润比数据传输高,所以把许多小规模应用挡在门外.也就是所说的GPRS--GPRS. TO:akakok 不好意思纠正你一个理解错误.移动的固定IP和公网固定IP不一样.每个APN下面就是一个局域网,IP是局域网IP,是很丰富的,不会紧张..而且大多是大的项目才推荐应用APN固定IP.移动是大力支持APN绑定IP的!
厦门四信通信科技有限公司
手 机:13950002847
直线电话: 0592-6300324
技术交流:MSN: lxj7871@tom.com QQ:17817807
引用 | 回复
| 管理
| 设为最佳回复
| 2005-04-12 19:36:00 34楼thor
不好意思,关于APN的概念能详细介绍一下吗?另外,我发现使用TCP连接,不移动的情况下发送心跳可以保持连接,但是一旦移动(接入点改变了),仍然会让连接无效,而且连接并不是断开,服务器和移动终端的Socket连接都显示连接正常,发送数据也不会有错误报告,但是对端却接收不到数据,请问各位大侠知不知道这是为什么吗?
引用 | 回复
| 管理
| 设为最佳回复
| 2005-04-19 09:31:00 35楼华夏
我们已经做了很多的点,都试使用移动公司分配的固定IP,很稳定,而且移动公司也十分支持这样的事情,给予很达的配合。^_^固定IP多的是,基本上没有资源枯竭的可能,林工说得对,移动公司不同的APN下即使是相同的IP也不能互访,所以,资源丰富的很,大家都去找找移动吧,只要应用多一点,没问题的。
引用 | 回复
| 管理
| 设为最佳回复
| 2005-05-31 10:31:00 36楼郑双华
啊!好久没来了。 湘建:好久不见了,近来好吧?你好像好久没回来。
引用 | 回复
| 管理
| 设为最佳回复
| 2005-05-31 11:14:00 37楼林湘建
欢迎到厦门来
引用 | 回复
| 管理
| 设为最佳回复
| 2005-05-31 13:59:00 38楼zhongdingjidian
相同APN下,IP之间可以互访,关键是APN用户允许与否。现在有些小户在测试时用的别人的APN,一般的大户APN都屏蔽了IP互访的功能。,目的是防止别人用该用户的APN进行其他方面的应用。
引用 | 回复
| 管理
| 设为最佳回复
| 2005-06-21 13:17:00 39楼菜鸟小王
GPRS长时间没有数据流,肯定要吊线,但是,我知道一种GPRS模块也提到“永远在线”,以我的经验是定时发射“心跳包”,来维持在线状态。
引用 | 回复
| 管理
| 设为最佳回复
| 2005-07-02 17:44:00 40楼Dec
发心跳包是GPRS给服务器发送就可以了吗?我我听说在GPRS给服务器发送的同时还要服务器也给GPRS发送。是这样吗?thank for a answer!
引用 | 回复
| 管理
| 设为最佳回复
| 2005-07-03 14:44:00 41楼林湘建
GPRS和服务器之间如果是TCP的心跳包是有相互应答机制的,有双向流量.如果是UDP心跳包则只有GPRS给服务器的数据
厦门四信通信科技有限公司
手 机:13950002847
直线电话: 0592-6300324
技术交流:MSN: lxj7871@tom.com QQ:17817807
引用 | 回复
| 管理
| 设为最佳回复
| 2005-08-19 15:05:00 42楼郑双华
厦门宇能科技公司一直以来专业从事着GSM/GPRS/CDMA无线数传产品。现把无线部分与控制部分融合成一体,全面推出厦门宇能的YN8080 IO、YN4040 IO 等新系列产品,这是一种多路控制器,应用无线方式,广泛应用于电力、环保、水文水利监测等,电力方面举列:比如抄表系统,不仅能远程抄表,还能远程控制,对于违规使用或不能按时缴费者进行远程断电的操作。 欢迎广大用户前来咨询! 厦门宇能科技有限公司(http://www.xmyn.com) 联系人:郑双华(0592-5710230-806,13178254762)
引用 | 回复
| 管理
| 设为最佳回复
| 2005-08-19 18:36:00 43楼ack8899
GPRS和SERVER间,协议TCP的心跳包是有实际意义的.而UDP心跳包则只能单相思!!! 北京万和众达高新技术有限公司 Http://www.bjwhzd.com T e l:(010) 82110298, 86663860 F a x:(010) 82110298转806 联系人:沈 锋 E-mail: ack8899@126.com
引用 | 回复
| 管理
| 设为最佳回复
| 2005-08-30 17:14:00 44楼devil
请教林工: 有公网IP的pc机能否主动发送控制指令给GPRS终端。 多谢!
引用 | 回复
| 管理
| 设为最佳回复
| 2005-08-30 17:52:00 45楼林湘建
to:张朋不能由公网IP连接GPRS,具体原理请参考下面的文章GPRS应用中TCP/IP/PPP的基本概念
厦门四信通信科技有限公司
手 机:13950002847
直线电话: 0592-6300324
技术交流:MSN: lxj7871@tom.com QQ:17817807
引用 | 回复
| 管理
| 设为最佳回复
| 2005-09-05 10:03:00 46楼twodiamond
林工,下面一段是你的说明: 4. 确定一条TCP连接有4个要素,这4个要素是双方的IP地址和双方的TCP端口号,这也就是SARO-1010P为什么将本地端口、目的端口和目的IP地址结合起来作为连接的ID号(SARO-1010P在PPP握手成功后获得的动态地址只要不断线重连就不会改变)的原因。 不知是否可以这样理解你的意思: DTU附着到GPRS上时,GGSN会分配一个内网IP和一个端口号给DTU,接着,DTU向一个公网的固定IP和端口发起连接请求,这样服务器就能获得DTU的所在的APN的IP及分配给DTU的端口,通过获得该信息来与DTU通信。有几个问题要请教: 1、DTU向服务器发起连接时,连接包都有哪些内容:包括APN的IP地址和DTU端口号? 2、服务器会收到GGSN动态分配给DTU的IP吗? 3、是否有可能在连接包中加入一个ID字段,而不用将端口IP等结合作为ID号″? 4、SIM只有序列号,DTU怎样能获得与该SIM有关的手机号码? 非常感谢!
引用 | 回复
| 管理
| 设为最佳回复
| 2005-09-05 12:40:00 47楼林湘建
有几个问题要请教: 1、DTU向服务器发起连接时,连接包都有哪些内容:包括APN的IP地址和DTU端口号? 答:DTU只有在和中心端建立连接的时候会产生连接包,就是把自身的信息发给中心,以后只要在这链路未断的情况下,发送的数据是不会产生连接包。连接包为45个字节,具体格式如下: 8位HEXID(4位) + 11位电话号码 + 0 + 登入时间 + 其它信息 = 45个 2、服务器会收到GGSN动态分配给DTU的IP吗? 答:会收到DTU的IP 3、是否有可能在连接包中加入一个ID字段,而不用将端口IP等结合作为ID号″?答:可以分别把IP,ID,手机号作为终端设备的身份标识,无须结合. 4、SIM只有序列号,DTU怎样能获得与该SIM有关的手机号码? 答:DTU不能直接读取手机号码,客户必须自行对设备进行设置.如:AT+PHON=13900000001
引用 | 回复
| 管理
| 设为最佳回复
| 2005-09-05 14:21:00 48楼twodiamond
林工果然高人快语,还是有一点不明白的: 1、从你给出的连接包上看,有一个4字节的ID号,请问是哪里设置的;另外如果没有采用"AT+PHON"命令,连接包中的电话号码是什么;还有连接包中的其他信息是否包含IP地址和端口,如果有,是GGSN的还是DTU本身的。 2、中心什么时候会收到DTU的IP地址,DTU送出的每个TCP/UDP包里都含有其本身的IP地址吗? 3、命令"AT+PHON"是sangrong的DTU独有的吗? 谢谢!
引用 | 回复
| 管理
| 设为最佳回复
| 2005-09-05 15:31:00 49楼林湘建
1、从你给出的连接包上看,有一个4字节的ID号,请问是哪里设置的;另外如果没有采用"AT+PHON"命令,连接包中的电话号码是什么;还有连接包中的其他信息是否包含IP地址和端口,如果有,是GGSN的还是DTU本身的。答:at+idnt是设置ID号;如果没有设置at+phon那连接包中的电话号码就是默认的13912345678;有包含IP地址,但不包含端口号是DTU本身的IP 2、中心什么时候会收到DTU的IP地址,DTU送出的每个TCP/UDP包里都含有其本身的IP地址吗? 答:只有第一次DTU发送注册信息时会把DTU的IP地址发送出去!其它都没有IP地址信息 3、命令"AT+PHON"是 的DTU独有的吗? 答:at+phon是我们自己定义的指令!
厦门四信通信科技有限公司
手 机:13950002847
直线电话: 0592-6300324
技术交流:MSN: lxj7871@tom.com QQ:17817807
引用 | 回复
| 管理
| 设为最佳回复
| 2008-05-12 17:29:44 50楼海南工控
呵呵 第一次搞无线通讯,虽然试验已经通过,但还是一知半解.欢迎各位高手热烈讨论,偶在旁边学习.
想学习,顶一下