怎样用java实现GPRS无线数据处理java 开源库

查看:4329|回复:2
求源码,想做着学学
搞出来了么,最近也要做这个,可以交流下么我要用JAVA编写程序,连接GPRS模块的服务器,不知怎么写,各位大神帮帮忙 _百度知道
我要用JAVA编写程序,连接GPRS模块的服务器,不知怎么写,各位大神帮帮忙
电脑与GPRS模块通信时,先将数据转发到GPRS模块厂商的服务器上,然后再由服务器转发到GPRS模块。服务器的网址是42.96.196.194。连接端口为25565。ID号为,。连接服务器的方法为:客户端连接服务器后发送注册包,注册包为ID X-...
您的回答被采纳后将获得:
系统奖励15(财富值+成长值)+难题奖励20(财富值+成长值)
我有更好的答案
能够使用JAVA的环境,就是当MODEM连接、再传送的了
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。java服务器与底层硬件通过GPRS传输数据
项目进行到使用sim900a通过GPRS向服务器发送数据,结果服务器建立了连接但是没有办法接收sim900a发送的数据。
硬件使用的是sim900a,服务器是使用的阿里云服务器,用java编写的服务器程序,传输协议用的是TCP。服务器程序参照教程上编写的,与手机客户端发送接收数据都正常。
遇到问题后在各大论坛上找了很久相关的问题和博客,大家也遇到了很多自身遇到的问题,也提出了很多的解决方案,从线程阻塞到数据发送的具体格式等等,但是都没有办法解决项目中遇到的问题。
找了很久,最后在一个人的回复中我发现了问题的所在,java中readUTF必须读取用writeUTF函数输出的中数据,也就是说这种方法只适用于用java写的程序,用其他语言写的程序发送的数据,readUTF是没有办法读取出来的,会一直阻塞在这一行。虽然是一个小问题但是分析起来非常的困难,一方面没有系统的学习java的网络中数据流的相关理论,另一方面网络上资源的确非常少。最后用了字符数组的接收方法,服务器收到相应数据并与发送的数据一致。
所以不同软件进行通信最好使用相对底层的一些发送和接收方法,这样会避免此类问题的发生。
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!MCU:STM32F103RET6 (调试器:J-Link)
GSM模块:Ai-Thinker_A6 (安信可)(还需要配一个串口打印工具,当初选这个模块纯粹是因为价格是最便宜的)
-------------------------------------------------------------------------
-------------------------------------------------------------------------
& & 经过两周时间的编码、调试,终于实现了GSM模块通过GPRS连接服务器的功能,并成功移植到了公司自己的项目里面。趁着有点空,我就把整个开发调试的过程记录下来,给自己做个备忘,也给大家做个参考。
-------------------------------------------------------------------------
2天时间完成底层驱动部分函数的编写。
4天时间完成模块与服务器的连接,测试实例:获取服务器的RTC信息。
1天时间移植到公司的项目,纯代码搬运工作。
3天时间测试修复BUG并优化代码,找BUG的这几天,有1天只修改了1条代码,我也是醉了。
-------------------------------------------------------------------------
函数清单和注意事项
(底层驱动部分)
1. IO口初始化:控制 IO 和通讯 IO,控制包括电源控制,复位和低功耗模式,通讯就是串口啦,相信大家应该都很熟悉了。
& & & & & & & & & & & 当然在这个基础上还可以组合出复位的功能,复位在GPRS连接出错的时候会用到。
2. 串口初始化:模块的波特率为位数据位,1位停止位,没有校验位和流控。
& & & & & & & & & & & 串口还需要两个发送函数,发送一个字节和发送一串字符串的。串口中断处理函数放到后面说。
3. AT指令操作:发送AT指令
& & & & & & & & & & & & 设置GPRS数据长度
& & & & & & & & & & & & 发送GPRS数据内容
& & & & & & & & & & & & 接收GPRS数据内容
& & & & & & & & & & & & AT指令/GPRS数据解析
4. 串口中断函数:包含AT指令/GPRS数据解析 和&接收GPRS数据内容,判断AT指令是否发送成功。
AT指令返回的结束符除了设置GPRS数据长度的是'&',其他都是"\r\n"。但是在判断接收结束的时候不能只考虑这两种情况,还有一个情况需要特殊处理,那就是当接收到GPRS数据的时候,完全有可能会出现'\r','\n'对应的十六进制数。解决的办法就是在接收到"+CIPRCV:xxx,"的时候,附带判断接收到的数据长度,"xxx"代表的是GPRS数据长度信息,字符型格式,在这里还需要做一个格式转换。数据长度的位数根据字符&','来进行判断,','
将AT命令和GPRS数据进行分割。"xxx"换算过来的数值决定了 ',' 后面接收到的数据长度。
& & 由于目前采用的SIM卡模块内部没有自带缓冲区,在GPRS数据接收的时候,需要另外开辟一个存储空间用于数据的临时存储,建议采用环形缓冲区Buffer,
将串口接收到的数据按顺序存储,这个部分在串口中断函数里面实现。在大循环里面将数据取出处理,并设置相关标志位。我一开始设计的时候只开辟了一个非环形的缓冲区,每次接收到完整的数据,会从缓冲区的0地址重新开始存储,那么就会导致未及时处理的数据被新的数据冲掉。
不知道有没有别家的SIM卡模块是自带缓冲区的。&
(主循环部分)
1. TCP/IP连接流程控制:
& & step1、"AT\r\n"//检测模块串口工作
& & step2、"AT+CCID\r\n"//检查是否插卡
& & step3、"AT+CREG?\r\n"//检查网络注册情况
& & step4、"AT+CGATT=1\r\n"//附着网络
& & step5、"AT+CGDCONT=1,\"IP\",\"CMNET\"\r\n"//设置PDP参数
& & step6、"AT+CGACT=1,1\r\n"//激活网络
& & step7、&"AT+CIPSTART=\"TCP\",\"121.41.xxx.xxx\",port\r\n"//连接TCPIP服务器
我用的这个模块硬件初始化差不多就要10秒了,在硬件初始化完成后,按照以上七步进行服务器连接,测试下来,连接的成功率还是蛮高的。前面两步是硬件检测用的,如果这两步都测不过,那就需要检查下硬件是否完整。三到六步如果返回ERROR,可重复发送,直至返回OK,每一步之间可间隔数秒。最后一步如果失败,需先关闭连接,再重新发起连接。如果第七步一直连接不成功,那么可以通过控制
IO 复位模块,当然也可以先确认下你的服务器的端口是否打开。
& & 我的经验是连接和通讯的过程中,如果出现错误的情况,复位模块是最有效和快捷的方式。在确认硬件连接正常的情况下,如果多次发送命令失败,返回ERROR的话,那你还是乖乖的复位它吧。
& & 另外两个AT命令也很好用
"AT+CIPCLOSE\r\n"//关闭TCPIP连接
"ATE0\r\n"//关闭回显,关闭自己发给模块的串口数据,调试的时候可以不开启这个功能,方便观察
2. 数据链路层数据处理:实现GPRS数据接收/发送控制,存储串口中断接收到的数据,发送GPRS数据长度和GPRS数据内容。
& & 这个函数里面需要注意的是发送GPRS长度和数据的操作,需要在一次操作流程里面完成。我一开始脑残的将GPRS数据长度和数据发送分开处理,导致设置完数据长度后,发送状态处于准备好的状态,此时只要检测到有数据是需要发送的,便会通过GPRS发送出去,而无法保证是当前数据长度对应的数据帧(我在这里一共开辟了8个数据缓存,但是没有对发送状态进行分开判断)。在设置完数据长度后,需要判断是否接收到字符'&',大概需要50毫秒的时间。一开始分开发送也是和这个'&'字符的操作有关的,我已经帮大家试过了,连在一起发就好了。
& & 发送完GPRS长度帧后,返回字符'&',接着发送数据帧,在模块返回"OK"之前,发送的数据都会被发送到服务器,导致通讯出错。所以在数据发送后,需要等待判断模块是否已经发送成功。
3. 超时判断:检测GPRS数据是否发送失败,失败后可关闭TCP/IP连接,进行重连,如果还是失败,可复位模块,重新进行TCP/IP连接流程。
-------------------------------------------------------------------------
1、官方的例程里面,在GPRS数据发送完之后,需要发送结束符0x1A,其实是不需要的。
最近一直有朋友问我要代码,我整理了一下,代码和资料已经放到资源里面了,有需要的朋友请自行下载。
阅读(...) 评论()无线通信技术CDPD vs GPRS大比拼_Java教程_动态网站制作指南
无线通信技术CDPD vs GPRS大比拼
来源:人气:2423
  无线通信现在已经在全球范围得到了迅猛发展,采用无线手段提供数据业务的应用成为新的通信热点。目前,各运营商、制造商和内容提供商都非常积极地工作,先后推出了GS技术、CDPD技术等,这些技术为无线业务的迅速开展发挥了重要的作用。对于GPRS通信技术,相信许多网友对其肯定有了一定的了解,因为目前有关GPRS技术的手机已经上市,不少用户已经开始与GPRS技术进行了亲密接触;而对于CDPD通信技术来说,个人用户就很少能熟悉这种通信技术了。那么同样作为无线通信技术,CDPD与GPRS到底有什么异同呢?本文下面的内容将对这两种技术进行分别阐述!    概念  GPRS的英文全称为General Packet Radio Service,成中文就是通用分组无线业务的意思,这种无线业务是在现有GSM网络上开通的一种新型的分组数据传输业务,它是利用而"分封交换"(Packet-Switched)的概念所发展出的一套无线传输方式。GPRS采用分组交换技术,它可以让多个用户共享某些固定的信道资源。假如把空中接口上的TDMA帧中的8个时隙都用来传送数据,那么数据速率最高可达164kb/8.GSM空中接口的信道资源既可以被话音占用,也可以被GPRS数据业务占用。当然在信道充足的条件下,可以把一些信道定义为GPRS专用信道。GPRS技术能让通信永远在线,GPRS的实时功能可以使诸如新闻标题、比赛成绩、交通路况等重要数据均可在语音呼叫之外的一个独立的信道自由进出而不影响正常的通话,GPRS网络的传输速度最快将达到115K,其上网速度比家用电脑使用的56.6kbp s调制解调器上网速率还要快;其收费方式是以流量的多少计算费用,用户只需按实际传送的数据量付费。    CDPD的英文全称为Cellular Digital Packet Data,中文的意思为蜂窝式数字分组数据,这种技术是由美国移动通信公司(AMCI)等八大公司联合推出蜂窝数字分组数据通信(CDPD)系统的一种无线数据通信技术规范,这种规范是以数字分组数据技术为基础,以蜂窝移动通信为组网方式的移动无线数据通信技术。CDPD是一个新型的无线广域网系统,它与现在市面上所见的无线局域网不同的是,该通信网络的工作在800兆频段之间,该频段具有一定的穿透和绕射能力,干扰较少。该网络所能达到的信道速率为19.2Kbps,去掉分组数据打包以及信道复用的一些开销,对用户来说数据传输速率一般为5-10Kbps,最高可以达到15Kbps左右。使用CDPD技术组成的通信系统,采用全双工的通信方式,所以它可以同时收发数据,另外该通信网络通过FEC前向纠错和自动反馈重发技术,保证在其网络上传输的数据不会出现差错。    原理  GPRS网络并不是一种全新的通信网络系统,这种网络系统只是在原有的GSM通信网络的基础上增加一些重要节点,如GGSN(Gateway GPupporting Node,网关GPRS支持节点)和SGSN(Serving GSN,服务GPRS支持节点)组合成的另外一种网络,这种网络保留了GSM网络的所有特点。而新增加的GSN节点是GPRS网络中最重要的网络节点,这个节点具有移动路由治理功能,它可以连接各种类型的数据网络,并可以连到GPRS寄存器。GSN可以完成移动台和各种数据网络之间的数据传送和格式转换。GSN可以是一种类似于路由器的独立又备,也可以与GSM中的MSC集成在一起。GSN有两种类型:一种为SGSN(Serving GSN,服务GSN),另一种为GGSN(Gateway GSN,网关GSN),SGSN的主要作用是记录移动台的当前位置信息,并且在移动台和GGSN之间完成移动分组数据的发送和接收。    GGSN主要是起网关作用,它可以和多种不同的数据网络连接,如ISDN、PSPDN和LAN等。有的文献中,把GGSN称为GPRS路由器。GGSN可以把GSM网中的GPRS分组数据包进行协议转换,从而可以把这些分组数据包传送到远端的TCP/或X.25网络。CDPD网络系统则是一个独立于GSM的网络系统,这套网络系统主要要基站、交换机和网络治理系统三部分组成。    每个基站最多可安装六块信道板,每块信道板为移动终端提供一个19.2Kbps的空中接入,使移动终端进行全双工分组数据传输;同时它也负责频谱监测、频率治理。它通过一根64Kbps帧中继与交换机相联接。基站上的电路所有可以热插拔,更换元器件不会影响服务。CDPD交换机主要由两部分组成,它们是分组服务器和治理服务器。其中分组服务器负责分组数据交换,治理服务器负责用户帐户治理以及计费信息治理。交换机中的每个模块都是双个的,互为热备份,如一个模块发生故障,自动切换到另一个。而网络治理系统是负责对整个CDPD网络进行治理,网络的任一部分发生故障,就马上能观察到,并能远程进行设置和修改。CDPD网络系统是建立在TCP/IP基础上的一种开放系统结构,将开放式接口、高传输速度、用户单元确定、空中链路加密、空中数据加密、压缩数据纠错和重发和运用世界标准的IP寻址模式无线接入有力的结合在一起,提供同层网络的无缝连接、多协议网络服务。    功能  尽管GPRS和CDPD都是属于无线技术的范畴,但这两种技术的功能是完全不一样的,其中GPRS技术侧重于为个人用户服务,而CDPD则是为各级用户提供一种平台服务,具体表现在:GPRS技术包含点对点面向连接的数据业务,该业务是为两个用户或者多个用户之间发送多分组的业务,该业务要求有建立连接、数据传送以及连接释放等工作程序;点对多点业务,该业务可以根据某个业务请求者的要求,把单一信息传送给多个用户。该业务又可以分为点对多点多信道广播业务、点对多点群呼业务和IP多点传播业务;点对点无连接型网络业务,该业务中的各个数据分组彼此互相独立,用户之间的信息传输不需要端到端的呼叫建立程序,分组的传送没有逻辑连接,分组的交付没有确认保护,是由IP协议支持的业务;GPRS除了提供点对点、点对多点的数据业务外,还能支持用户终端业务、补充业务、GSM短消息业务和各种GPRS电信业务。    CDPD适用的业务种类很多,例如在商业金融交易领域,如持卡购物、证券交易、电子银行、金融保险、POS系统等,都可用上CDPD系统。使用CDPD系统时,用户无需进行复杂的布线,无需经过漫长的拨号交易等待,对于一些临时性商业活动,可在银行取得实时的信用卡验证。    与此同时,CDPD还可帮助实现"流动银行";进行远程监控,运用CDPD作为您公司远程监控设备的通信手段,可节省经费、提高反映时间、提高服务水平。主要应用范围:供电部门的变压器设备、排水系统的泵站设备、气象数据采集设备、大街上的贩卖机、大楼电梯的监控等,CDPD还可满足对各类营业场合的财务、仓购以及住宅区的安全防范需求;在交通运输行业,如汽车调度、路由导引,车流量测控、车辆GPS自动定位跟踪、汽车防盗、出租车移动刷卡消费等场合,都可使用CDPD系统。    CDPD与GPS技术结合,可实现车辆实时定位、报警、调度和治理,具有以下几个优点:实时跟踪车辆位置、多文档界面、全面的车辆信息、方便的查询方式、静态漂移的解决、历史数据的存储以及回放功能等;进行移动办公,现代的生活节奏是快速的,许多工作或业务都需要在办公室以外的地方进行,如交警、工商、税务人员、新闻记者、律师、房地产代理、保险经纪、银行经理、行政官员等,他们需要利用移动数据终端查询主机,进行实时数据交换,访问及控制,实现新闻采访的文件传递、现场办公服务等等;进行无线炒股,现在人们有各种方法了解股市行情,但没有一种象CDPD炒股那样能同时具备:较高的传输速率、完备的信息查询、全面的图形显示、方便的使用携带以及低廉的通信费用等特点。    综合  通过上面的分析,我们对GPRS与CDPD的概念以及技术特点都有了一定的了解。为了能更好地了解这两种技术的异同,我们特意从下面几个方面进行一下比较:    1、通信速度  GPRS通信所能达到的传输速度要比CDPD通信要高,不过GPRS通信的高速是通过牺牲信道资源来获取的。假如GSM一个载频中的8个信道全部被GPRS占用,传输速率可达到115kbit/s(理论上的无干扰情况);假如仅占用一个信道,除去协议及纠错等信息外,真正用于传输数据的只有14kbit/s。而现有的大部分数据应用都是一些低速数据,CDPD所具有的19.2kbit/s已足够90%以上的应用需求。    2、投资成本  每一种通信网络都有自己的建设成本,假如投资成本较高的话,可能会影响到网络的进一步发展。经过测算,在GSM网络中每发展一个用户的成本约为2000元,GRPS用户的成本是根据网络规模决定的。一般来说,在CDPD的建网初期,基站数不会很多,加上必须的交换机与网管的投资,平摊到每个用户的成本约为元左右。随着网络覆盖规模及网络容量的扩大,用户成本会显著降低。    3、使用情况  到目前为止,GPRS的标准仍没有规范化,在欧洲仍处于实验阶段,真正投入商用更是需要一段时间。并且GPRS并非是在GSM网络中传输数据的最终技术。在GSM网络的数据技术演进过程中,从电路型数据业务、HSCSD、GPRS、EDGE到最终的IMT-2000,这些技术并非都会实现,某些仅仅会成为过渡技术。而CDPD从1992年开始出现到现在,技术已经很成熟,并有了一套完整的CDPD规范,各个运营商可以根据这个统一的标准进行开发和应用。在许多国家和地区,CDPD在很多领域已得到了广泛的应用。在CDPD未出现以前,无线数据网络运营者只能选择专用网络。目前在美国乃至全世界,CDPD已成为最具竞争力的无线数据网络。    4、通信频率  GPRS与GSM共用频段,可用频段在900MHz有9MHz,1800MHz为10MHz。GSM采用TDMA/FDMA多址工作方式,每个频道有8个时隙(8信道)。依据小区用户数量(密度),GSM可采用不同的小区频率复用方式。CDPD是工作在AMPS频段,只有1MHz频段。由于GPRS可用频段宽,因此GPRS每个小区内可用于数据的信道数远大于CDPD,轻易满足组建公网对信道数的需要。    5、通信资源  GPRS是通过占用GSM的语音信道来传输数据,这势必给本已拥塞的GSM带来更大的负担
优质网站模板}

我要回帖

更多关于 java json数据处理 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信