STM32-GPRS模块连接系统主站

news2026/4/30 11:23:20
目录一、GPRS基础讲解(GSM/CDMA/GPRS介绍)1、通信专业术语2、GPRS网络结构3、GPRS工作原理4、GPRS协议模型5、GPRS连接过程详解6、GPRS的应用---TCP/IP/PPP7、GPRS相关AT指令集二、GPRS或CDMA模块与网络连接方式三、系统主站访问GPRS/CDMA网络中的模块四、GPRS模块与主站通信流程五、GPRS项目开发方案1、主站协议2、底层驱动部分3、主循环部分附录1、SIM7600CE模块(GSM/GPRS)调试一、GPRS基础讲解(GSM/CDMA/GPRS介绍)1、通信专业术语1BSS--基站子系统通过无线接口与移动台直接联系负责在一定区域内和移动台通信。GSM2BTS--基站收发台可以看作一复杂的无线调制器BSS的主要部分每个分配有若干信道。GSM3RBS--Radio Base Station无线基站RBS是基站内所有设备的总称在GSM规范中对应的主要部分是BTS它由BSC来控制用来提供移动台与系统的无线接口它是CME20系统中的无线设备部分主要由无线收发信机构成。4BSC--基站控制器其功能是作为无线电设备与MSC的控制和通信的接口直接控制BTS。GSM5GPRS--General Packet Radio Service 通用分组无线电业务。GPRS是一种新的GSM数据业务它可以给移动用户提供无线分组数据接入服务。GPRS主要是在移动用户和远端的数据网络(如支持TCP/IP、X.25等网络)之间提供一种连接从而给移动用户提供高速无线IP和无线X.25业务。GPRS采用分组交换技术它可以让多个用户共享某些固定的信道资源。如果把空中接口上的TDMA帧中的8个时隙都用来传送数据那么数据速率最高可达164kb/s。GSM空中接口的信道资源既可以被话音占用也可以被GPRS数据业务占用。当然在信道充足的条件下可以把一些信道定义为GPRS专用信道。沿海部分城市已开通试营业。6GSM--Pan-European digital cellular land mobile telecommunication system 泛欧数字蜂窝移动通信系统。1982年欧洲邮电行政大会(CEPT)设立的移动通信特别小组(Group Special Mobile)即GSM提出的数字蜂窝移动通信系统其特点为用数字技术开发全欧统一的蜂窝系统以取代欧洲各种模拟蜂窝系统后来又易名为全球移动通信系统Global System for Mobile Communication。1989年制订了GSM标准1991年GSM系统正式在欧洲问世网路开通运行现已在全球获得广泛应用。该系统发射频段基台为 935~960MHz移动台为 890~915MHz双工间隔 45MHz射频载波间隔 200kHz采用时分多址技术语音编码采用规则脉冲激励长期预测编码(REP-LPC)算法小区半径 0.5~35km频谱效率与用户容量较 TACS、NMT 等模拟蜂窝移动通信系统要高。我国就大部分采用此技术。1991年又更名为SMG特别移动组。SMG1~SMG4 分别对应以前的 GSM1-GSM4而SMG5是致力与 GSM 形成后的“通用移动电信系统”1992年又建立了一个 SMG6负责起草运行和维护的规范。7GSN--GPRS Support Node1个 GSN 是一个网络节点它支持在 GSM核心网中对 GPRS 的使用。所有的GSN都应当拥有一个 Gn接口并支持 GPRS 隧道协议。GSN有两个关键的变种即网关(gateway)和业务(service)GPRS支撑节点。8IMEI--国际移动设备识别码。(GSM)9IMSI--国际移动用户识别码。储存在用户的 SIM卡内和 GSM系统存储器中以便系统识别任何唯一的移动台。(GSM)10MSC--移动交换中心应用在数字蜂窝系统中移动用户、PSTN 以及其他移动交换中和移动用户通过 MTS 产生联结。11SN--Serial Number的缩写有时也叫 SerialNo也就是产品序列号产品序列是为了验证产品的合法身份”而引入的一个概念它是用来保障用户的正版权益享受合法服务的。12HLR--归属位置寄存器。(GSM)13VLR--拜访位置寄存器。(GSM)14ISDN--综合业务数字网。15OPERATOR--运营者。16PDP-- Packet Data Protocol分组数据协议是外部PDN网与GPRS接口所用的网络协议。17PDN--Pubic Data Network公用数据网一种由电信运营商组建的广域网提供接入广域网的服务与技术为用户提供高质量数据传输服务。18PSPDN--公用分组交换数据网。19SMS--short message services--短消息业务。20SIM--用户识别码。21X.25--分组交换网内的一种通信协议。1976年批准并多次修改一般用于 ISDN 的分组交换中。包括三个层物理层、链路层、分组层。对应于 OSI模型的最低三层。2、GPRS网络结构图1 GPRS的原理结构图GPRS网络引入了分组交换和分组传输的概念使得 GSM网络对数据业务的支持上得到了加强它是通过在 GSM网络上增加 GGSN 和 SGSN 来实现的GGSN 和 SGSN 分别表示 GPRS网关支持节点和 GPRS服务支持节点。GPRS网络分为无线接入和核心网络两个部分无线接入部分是在移动台(MS)与基站子系统(BSS)之间传输数据核心网络在 BSS 与标准数据通信网边界网关之间中继传输数据。按 GSM规范提出的基本结构BSS 由两个基本部分组成通过无连接口与移动台一侧相连的基站收、发信机BTS和与交换机一侧相连的基站控制器(BSS)。GSN 是 GPRS网络中最重要的网络节点。GSN 具有移动路由管理功能它可以连接各种类型的数据网络并可以连到 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/IP 或 X.25网络。另外有的厂商提出了 GR(GSM RegisterGPRS数据库)的概念。GR 类似于 GSM 中的 HLR是 GPRS 业务数据库。它可以独立存在也可以和 HLR 共存由服务器或程控交换机实现。GR 这个名称在 ETSI 的建议中没有专门提及。3、GPRS的工作原理GPRS网络的工作原理体现在它的分组数据路由传输和传输协议模式上用户通讯数据通过串行或无线方式连接到 GPRS终端上然后 GPRS终端与 GSM基站通信这种方式与电路交换式数据呼叫不同GPRS分组是从基站发送到 GPRS服务支持节点(SGSN)而不是通过移动交换中心(MSC)连接到语音网络上。因此SGSN 与 GPRS网关支持节点(SGSN)进行通信GGSN 对分组数据进行相应的处理后再发送到目的网络如 Internet 或 X.25网络。如图 1 所示其具体的数据传输流程分为4步第1步用户设备通过串行接口向GPRS终端传输数据第2步经过处理后的GPRS分组数据发送到GSM基站第3步分组数据经GSM基站的SGSN封装后然后发送到GPRS骨干网第4步在 GPRS网关支持节点GGSN 对 SGSN分组数据进行相应的处理后再发送到目的网络移动台(MS)和GPRS 之间的分层传输协议模型主要由 GTP LLC 和 RLC协议构成Um接口是 GSM 的空中接口Um接口上的通信协议有 5 层自下而上依次为物理层、MAC层、LLC层、SNDC层和网络层RLC/MAC 为无线链路控制、媒质接入控制层LLC层为逻辑链路控制层GTP 是将用户数据及信令用隧道技术在 GPRS网络 GSN节点之间传送。4、GPRS协议模型Um接口是 GSM的空中接口。Um接口上的通信协议有5层自下而上依次为物理层、MAC Medium Access Control层、LLC(Logical Link Control)层、SNDC(Sub network Dependant Convergence)层和网络层。Um接口的物理层为射频接口部分而物理链路层则负责提供空中接口的各种逻辑信道。GSM 空中接口的载频带宽为 200kHz一个载频分为 8个物理信道。如果 8个物理信道都分配为传送 GPRS数据则原始数据速率可达 200kb/s。考虑前向纠错码的开销则最终的数据速率可达 164kb/s左右。MAC 为媒质接入控制层。MAC 的主要作用是定义和分配空中接口的 GPRS逻辑信道使得这些信道能被不同的移动台共享。GPRS 的逻辑信道共有 3类分别是公共控制信道、分组业务信道和 GPRS广播信道。公共控制信道用来传送数据通信的控制信令具体又分为寻呼和应答等信道。分组业务信道用来传送分组数据。广播信道则是用来给移动台发送网络信息。LLC层为逻辑链路控制层。它是一种基于高速数据链路规程 HDLC 的无线链路协议。LLC层负责在高层 SNDC层的 SNDC数据单元上形成 LLC地址、帧字段从而生成完整的 LLC帧。另外LLC 可以实现一点对多点的寻址和数据帧的重发控制。BSS 中的 LLR层是逻辑链路传递层。这一层负责转送 MS 和 SGSN 之间的 LLC帧。LLR层对于 SNDC数据单元来说是透明的即不负责处理 SNDC数据。SNDC 被称为子网依赖结合层。它的主要作用是完成传送数据的分组、打包确定 TCP/IP地址和加密方式。在 SNDC层移动台和 SGSN 之间传送的数据被分割为一个或多个 SNDC数据包单元。SNDC数据包单元生成后被放置到 LLC帧内。网络层的协议目前主要是 Phase 1阶段提供的 TCP/IP 和 L25协议。TCP/IP 和 X.25协议对于传统的 GSM网络设备(如BSS和NSS等设备)是透明的。在 GPRS网络传输中常用的有两种传输协议即 TCP 和用户数据报协议UDP 它们都是使用 IP 作为网络层协议每组数据都通过端系统和每个中间路由器中的 IP层在互联网中进行传输TCP主要负责把应用程序交给它的数据分成合适的小块然后再交给下面的网络层 确认接收到的分组 设置发送最后确认分组的超时时钟等是为两台主机提供高可靠性的数据通信。UDP协议与TCP协议最大的不同表现在数据传输的可靠性上UDP协议是一种不可靠的或最尽力的协议它本身不提供可靠的数据传输但并不意味着在 UDP协议之上就不能有可靠的数据传输 在网络传输中使用 UDP协议的应用程序要负责实施重传 过滤多余信息等等 如果一个 UDP包在传输过程中丢失或者损坏需要引起发送数据的应用程序注意才行 TCP协议和 UDP协议各有优势工业监控系统中究竟是采用 TCP协议还是 UDP协议可以根据实际条件和技术水平来综合考虑。5、GPRS连接过程详解1MS移动台附着在此过程中通过 BSC系统的 PCU模块进行接入控制和信道分配通过 SGSN 和 HLR 进行鉴权管理并从 HLR 中获得用户的签约信息最终在 MS、HLR 与 SGSN 内部形成有关用户的移动管理信息此时 MS 通过 HLR系统完成鉴权位置更新等过程最后由 HLR 通过 GR接口信令向 SGSN 发送鉴权三元组完成附着。当 MS 完成附着后它将在 RLC/MAC层使用 TLLI 作为身份标识这时 MS 进入 READY状态并在 MS 和 SGSN 中建立起 MM 上下文之后 MS 才可以发起 PDP 上下文激活过程在这个时刻以前的所有过程的成功与否均与PDP没有关系。即是用户在附着过程中主要涉及无线系统、如PCU、无线信道、SGSN和HLR等业务单元而与GGSN无关。2PDP激活作为 GPRS通信过程中第二个重要的过程在该过程中涉及中 DNS号段解析、DHCP地址分配、Radius认证过程等重要过程。当PDP激活成功后手机可以获得IP地址系统开始形成计费话单用户将进入通信前的临界状态。PDP 上下文包含与某个 APN 相关的地址映射以及路由信息。目前在我省主要的 APN应用由WAP、NET以及今后的行业 VPDN应用这些特定的应用均有相对应的IP地址网段、路由信息与之相匹配。MS 通过激活 PDP 上下文得到 GGSN系统分配的动态 IP地址后完成数据接入工作。所以MS能否正常从GGSN系统获得IP地址是PDP成功激活的关键所在。DNS系统解析是否成功直接关系到PDP激活是否成功。GPRS通信全过程包含ATTACH附着和PDP激活两个子过程。6、GPRS的应用---TCP/IP/PPP实际上GPRS DTU上实现的协议栈是TCP/IP Over PPP。1每一次DTU拨ATD*99***1#(或ATD*99***1#)之后其实都在采用PPP协议和移动的接入设备(一般是移动公司的一台特殊的GGSN路由器)进行握手当PPP协议握手成功后DTU都会获得一个动态IP地址。一般来说每一次DTU下线后挂断连接或者直接断电后在重新进行拨号和PPP握手后取得的动态IP地址都是不一样的。但是移动公司可以通过为客户开通特定的APN和发行特殊的SIM卡使得用这张SIM卡获得的动态IP地址每一次都不变。也就是说可以做到SIM卡和IP地址绑定。2我们在做测试时应当注意到如下事实在采用公网的APN(cmnet)的条件下如果我们用DTU主动向公网上的一个静态公网IP地址发起TCP连接只要这个公网上的机器确实有侦听相应的端口这样是可以连上的;但是相反地如果是由公网上的静态IP向DTU动态获得的IP地址主动发起的TCP连接将不会成功。这个现象的原因是实际上DTU获得的动态IP地址是移动的一个特殊的内部网段上的地址这个特殊内部网段里的地址如果要和外部网(公网)的地址进行TCP通信必须通过一个类似于TCP代理(或者NAT)的设备进行通信的转发。换句话说这个动态地址对于网络上的其他机器来说是不可访问的。3标准AT命令CGDCONT的主要作用是指定APN。APN 是 Access Point Name(访问接入点)的缩写移动通过开通特殊的 APN 为行业客户提供 VPN(Virtual Private Net) 服务。比如说如果是要上公网(Internet),应当使用“cmnet”作为 APN。又如某企业向移动公司申请了 VPN服务移动公司为其开通了一个 APN 为“hxsw.gd”则我们就应当用这个 APN 来设置 GPRS模块格式ATCGDCONT1,“IP”,“hxsw.gd”4确定一条 TCP 连接有 4个要素这 4个要素是双方的 IP地址和双方的 TCP端口号这也就是 DTU 为什么将本地端口、目的端口和目的IP地址结合起来作为连接的 ID号(DTU在PPP握手成功后获得的动态地址只要不断线重连就不会改变)的原因。5使用 TCP协议进行数据通信时必须要经过三个阶段第一个阶段是连接建立阶段第二个阶段是数据收发阶段第三个阶段是连接释放阶段。1连接建立阶段连接的建立又有主动连接和被动连接之分一般来说客户机都是主动发起连接的而服务器是被动接受连接的。所谓的主动连接是指本方主动向远端发起连接请求 而被动连接指的是本方侦听一个端口等待远端及其主动向自己发起一个连接请求并且进行回应并且最终握手建链成功。在连接成功切换到数据态后我们可以通过 OPEN命令帧控制 DTU 进行主动连接。当然连接时要指定对方的IP地址和端口号。2数据收发阶段当一条连接建立之后就可以在这条连接上进行数据收发了。可以使用 SEND命令帧控制 DTU 进行数据发送。当然发送时要指定连接号(通过本地端口、目的地址和端口唯一确定)。对于对方发送过来的数据DTU 首先将其存储在自身的数据缓冲区中然后将数据已到达此事件通知给上位机上位机读取到数据已到达事件后应当及时使用 RECV命令帧控制 DTU 将相应连接上的所有数据通过串口读出当数据读出后这些数据原先占用的数据缓冲区空间将会被释放。注意由于 DTU 的数据缓冲区有限所以对于对方发来的数据上位机一定要及时读出否则数据越积越多可能会导致数据缓冲区溢出丢失数据。3挂断连接阶段当一条连接上的所有数据都已经收发完成了不再需要这条连接时就可以把连接给挂断。和连接建立阶段相类似挂断也分为主动挂断和被动挂断。可以使用 RSET命令帧控制 DTU 进行连接的主动挂断如果连接被对方主动挂断DTU 将会把这个事件通知给上位机进行处理。7、GPRS相关AT指令集1GPRS指令ATCGATT1 //返回OK附着网络 ATCGACT1,1 //激活网络之后就可以使用TCP/IP的指令了2TCP/IP指令ATCIPSTARTTCP,121.41.97.28,60000 //连接TCP/IP服务器 ATCIPSEND20 //返回,就可以输入要发送的内容20表示有20个字节 ATCIPCLOSE //关闭TCP/IP连接 CIPRCV:5,12345 //收到服务器返回的5个字节3多路TCP/IP连接指令ATCGDCONT1,IP,cmnet //设置PDP参数cmnet是APN ATCGACT1,1 //激活PDP ATCIPSTATUS //查询ip连接情况共有8路实际最多支持同时开4路TCP/IP连接 ATCIPCLOSE //关闭该链路 ATCIPMUX //查询是否开启多连接 ATCIPMUX1 //开启多链接 ATCGPADDR //显示PDP地址 ATD*99***1# //请求GPRS服务二、GPRS或CDMA模块与网络连接方式1、主站系统具有公网固定IP的内网通过端口映射收发数据。这种方式要在最前端路由器上做一个端口映射。假如你的 CDMA模块终端要连接端口是 5002把这个端口映射给数据接收中心的那台电脑上即可。2、主站系统采用动态IP应用 DNS域名解析这种方式接收中心有路由器的话也需要端口映射。域名解析有很多软件可以用如花生壳、金万维之类。3、通过专线APN接入即IP对IP。GPRS 比 CDMA 要多一种方式点对点移动网内可以实现点对点。三、系统主站访问GPRS/CDMA网络中的模块GPRS/CDMA模块终端运行后会得到一个 IP地址这个地址是中国移动(GPRS)/中国联通(CDMA)内部网络地址不能从外部(如Internet)直接访问到此时可采用以下两种方案1、移动/联通内部网均可以访问 Internet因此如果主站在Inernet上有固定IP或域名则可以由终端首先访问主站主站收到终端访问时记录下终端IP(与终端在GPRS/CDMA内部网的IP不同是临时分配的一般在几十秒到几分钟内有效)可在其有效时间内用这个IP访问终端。该方案的缺点是如果终端访问主站的间隔过短则通信费用会大大增加如果过长则主站可能无法及时与终端通讯。如果用户的终端数量不多或主要是终端上报数据可采用此方案。主站也可以采取短信或电话振铃等辅助方式通知终端首先发起访问。2、对终端数量较多的用户应与中国移动/中国联通取得联系为终端建立专用的APN为主站开通专线或VPN联网这样终端可以获得固定的IP地址主站可以象在局域内一样与终端通讯便于整个系统维护。四、GPRS模块与主站通信流程GPRS模块通过串口连接到ARM板因此要进行通信首先要进行串口等初始化。GPRS模块供电以后SIM卡首先通过SGSN节点附在GPRS网络上(注册)然后通过PPP协议进行链接接着GPRS网络给SIM卡分配一个动态的IP地址(网内地址)进行TCP/IP连接。由于 GPRS 分配的是动态IP所以主站的 IP 要固定主站可以向移动提出申请固定IP(特殊服务据说收费很贵)或者利用专网VPN服务。在建立连接以后模块与上位机如何进行通信有两种协议内部协议和外部协议。内部协议是采用命令模式(AT指令集)外部协议采用命令模式或者数据模式。默认采用的是外部模式。可以通过 AT指令设置成内部模式。因此要与主站进行通信的流程就变的很明朗。以芯讯通SIM7600CE-A为例整个流程如下1模块上电后初始化初始化完毕后会送出pbready。如果没有收到检查模块串口是否通2检查SIM卡3检查信号强度4查询网络注册情况5设置内部协议栈6设置APN7对于一些专网若需要用户认证指令要进行用户认证8建立PPP连接9查询PPP链路状况10建立TCP/IP连接。整个流程代码量不大购买GPRS模块会附送参考代码。AT/r ATccid/r //检测是否装有SIM卡 ATcgmr/r //检测软件版本5.0以上的才有GPRS功能支持 ATcsq/r //检测信号质量确定是否可以登陆上网络若返回10--310之间的信号数字则继续如果信号是9999 //则应该考虑不停的的让模块去搜寻网络。 ATCGCLASSB/r //设置模块工作类型 ATCGDCONT1,IP,CMNET/r //设置PDP参数 ATCGATT1 //激活PDP获得IP ATCIPCSGP1,CMNET/r ATCIPSTARTTCP,10.56.12.207,2020/r ATCIPSEND/r //返回“”后输入要传输的数据再发送CTRLZ,即将所要发送的数据发送到指定IP的服务器上 发送成功会返回SEND OK ATCIPCLOSE/r //只有在TCP/UDP处于CONNECT OK的状态下才返回OK否则返回ERROR ATCIPSHUT/r //关闭移动场景 正常返回 SHUT OK五、GRPS项目开发方案1、主站协议百度网盘搜索“IHDC协议设计V1[1].4[无线模块协议]或者移步IHDC协议设计V_1.9(映翰通)下载”。2、底层驱动部分1IO口初始化控制 IO 和通讯 IO控制包括电源控制复位和低功耗模式通讯就是串口。在这个基础上还可以组合出复位的功能复位在GPRS连接出错时会用到或直接关闭模块电源再打开。2串口初始化模块的波特率为1152008位数据位1位停止位没有校验位和流控。串口还需要两个发送函数发送一个字节和发送一串字符串。串口中断处理函数放到后面说。3AT指令操作发送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卡模块是自带缓冲区的。3、主循环部分1TCP/IP连接流程控制step1AT\r\n //检测模块串口工作 step2ATCCID\r\n //检查是否插卡 step3ATCREG?\r\n //检查网络注册情况 step4ATCGATT1\r\n //附着网络 step5ATCGDCONT1,\IP\,\CMNET\\r\n //设置PDP参数其中CMNET是APN step6ATCGACT1,1\r\n //激活网络获得IP step7 ATCIPSTART\TCP\,\121.41.xxx.xxx\,port\r\n //连接TCP/IP服务器这个模块硬件初始化差不多就要10秒在硬件初始化完成后按照以上7步进行服务器连接。前面两步是硬件检测用的如果这2步都测不过那就需要检查下硬件是否完整。3到6步如果返回ERROR可重复发送直至返回OK每一步之间可间隔数秒。最后一步如果失败需先关闭连接再重新发起连接。如果第7步一直连接不成功那么可以控制IO复位模块当然也可以先确认下服务器的端口是否打开。我的经验是连接和通讯的过程中若出现错误的情况复位模块是最有效和快捷的方式。在确认硬件连接正常的情况下若多次发送命令失败返回ERROR的话那还是复位模块吧。另外两个AT命令也很好用ATCIPCLOSE\r\n //关闭TCP/IP连接 ATE0\r\n //关闭回显关闭自己发给模块的串口数据调试的时候可以不开启这个功能方便观察。2数据链路层数据处理实现GPRS数据接收/发送控制存储串口中断接收到的数据发送GPRS数据长度和GPRS数据内容。这个函数里面需要注意的是发送 GPRS长度和数据的操作需要在一次操作流程里面完成。我一开始脑残的将 GPRS数据长度和数据发送分开处理导致设置完数据长度后发送状态处于准备好的状态此时只要检测到有数据是需要发送的便会通过 GPRS 发送出去而无法保证是当前数据长度对应的数据帧我在这里一共开辟了 8个数据缓存但是没有对发送状态进行分开判断。在设置完数据长度后需要判断是否接收到字符大概需要 50ms 的时间。一开始分开发送也是和这个字符的操作有关的我已经帮大家试过了连在一起发就好了。发送完 GPRS 长度帧后返回字符接着发送数据帧在模块返回OK之前发送的数据都会被发送到服务器导致通讯出错。所以在数据发送后需要等待判断模块是否已经发送成功。3超时判断检测 GPRS 数据是否发送失败失败后可关闭 TCP/IP 连接进行重连如果还是失败可复位模块重新进行 TCP/IP 连接流程。附录1、SIM7600CE模块(GSM/GPRS)调试SIM7600CE模块(GSM/GPRS)调试路漫漫其修远兮吾将上下而求索。觉得不错动动发财的小手点个赞哦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2568623.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…