java服务器与底层硬件通过GPRS传输数据

        项目进行到使用sim900a通过GPRS向服务器发送数据,结果服务器建立了连接但是没有办法接收sim900a发送的数据。

硬件使用的是sim900a,服务器是使用的阿里云服务器,用java编写的服务器程序,传输协议用的是TCP。服务器程序参照教程上编写的,与手机客户端发送接收数据都正常。

         遇到问题后在各大论坛上找了很久相关的问题和博客,大家也遇到了很多自身遇到的问题,也提出了很多的解决方案,从线程阻塞到数据发送的具体格式等等,但是都没有办法解决项目中遇到的问题。

         找了很久,最后在一个人的回复中我发现了问题的所在,java中readUTF必须读取用writeUTF函数输出的中数据,也就是说这种方法只适用于用java写的程序,用其他语言写的程序发送的数据,readUTF是没有办法读取出来的,会一直阻塞在这一行。虽然是一个小问题但是分析起来非常的困难,一方面没有系统的学习java的网络中数据流的相关理论,另一方面网络上资源的确非常少。最后用了字符数组的接收方法,服务器收到相应数据并与发送的数据一致。

所以不同软件进行通信最好使用相对底层的一些发送和接收方法,这样会避免此类问题的发生。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: STM32GPRS是一种集成了STM32微控制器和GPRS通信模块的设备,用于实现物联网应用和数据传输。要将STM32GPRS的数据传输到服务器上,可以按照以下步骤进行: 1. 配置GPRS通信模块:使用STM32GPRS上的AT指令或者在相应的开发环境中,通过串口与GPRS通信模块进行通信,配置相关的参数,例如APN(接入点名称)、用户名、密码等,以便能够与GPRS网络建立连接。 2. 连接GPRS网络:通过发送相应的AT指令,使GPRS通信模块能够连接到GPRS网络。这样,STM32GPRS就能够通过GPRS网络与服务器进行通信。 3. 编写程序:在STM32微控制器上,编写程序以实现数据的采集和传输。可以使用STM32的GPIO口、模拟输入口、定时器等功能,获取传感器数据、监测系统状态等。 4. 封装数据:将获取到的数据进行封装,使其符合特定的协议,方便在服务器端进行解析和处理。可以使用JSON、XML等常用的数据格式。 5. 通过GPRS网络传输数据:使用GPRS通信模块的AT指令或者GPRS库函数,将封装好的数据通过GPRS网络传输到服务器上。可以使用TCP/IP或者HTTP协议进行数据传输。 6. 在服务器端接收和处理数据:服务器端可以使用相应的网络编程技术,监听指定端口,接收STM32GPRS发送过来的数据。然后根据协议进行解析和处理,将数据存储到数据库或者进行相应的业务处理。 7. 建立双向通信:如果需要实现双向通信,服务器可以通过GPRS网络向STM32GPRS发送指令或者控制信号。STM32GPRS接收到指令后,执行相应的操作。 通过以上步骤,可以将STM32GPRS的数据传输到服务器上,实现数据的监测、控制和存储等功能。 ### 回答2: 将STM32GPRS的数据传输到服务器上可以通过以下步骤实现: 1. 配置STM32GPRS模块:首先,需要在STM32控制器上配置GPRS模块的通信参数,如波特率、串口等。这可以通过编程或者使用相关的配置工具完成。 2. 建立GPRS连接:使用STM32控制器向GPRS模块发送AT命令来建立与服务器GPRS连接。通过AT命令可以设置APN地址、用户名和密码等参数。 3. 数据封装:将需要传输的数据按照协议要求进行封装。可以使用JSON、XML等格式对数据进行结构化。 4. 数据传输:使用GPRS模块和STM32控制器进行数据传输。可以通过串口通信或者使用相关的通信接口(如SPI、I2C等)将封装好的数据发送给GPRS模块。 5. 接收数据:服务器将接收到的数据进行处理并返回响应。可以使用HTTP或者其他协议进行数据传输。 6. 数据处理:STM32控制器接收到服务器的响应后,可以对数据进行解析处理,如提取关键信息或者进行状态判断。 7. 数据存储:根据实际需求,可以将数据存储在STM32控制器的内部存储器或者外部存储器中,也可以直接将数据传输到服务器上进行存储。 需要注意的是,在进行以上步骤时,要确保网络连接的稳定性和数据的安全性,可以使用加密算法对数据进行加密传输,以保护数据的隐私和完整性。 ### 回答3: 将STM32和GPRS模块连接在一起后,可以通过以下步骤将数据传输到服务器上: 1. 配置GPRS模块:首先,需要通过AT指令初始化和配置GPRS模块。使用串口通信将STM32与GPRS模块连接,并发送AT指令进行模块的初始化。设置GPRS模块的APN、用户名、密码等网络参数,以便连接到互联网。 2. 建立GPRS连接:使用AT指令建立GPRS连接。通过发送指令实现与GPRS网络的连接,比如使用AT+CSTT指令设置APN、AT+CIICR指令建立GPRS连接。 3. 建立TCP连接:使用AT指令建立与服务器的TCP连接。通过AT+CIPSTART指令设置服务器的IP地址和端口号,实现与服务器的TCP连接。 4. 发送数据:将需要传输的数据打包成符合服务器要求的格式,并通过AT+CIPSEND指令发送到服务器。发送前可以通过AT+CIPSEND指令设置数据长度。 5. 接收响应:等待服务器的响应。发送数据后,使用AT指令等待服务器的响应。通过AT+CIPRECVDATA指令可以接收从服务器返回的数据。 6. 关闭连接:数据传输完毕后,使用AT指令关闭与服务器的TCP连接和GPRS连接。通过AT+CIPCLOSE指令实现关闭连接。 通过上述步骤,就可以将STM32上的数据通过GPRS传输到服务器上。但需要注意的是,具体的AT指令会根据使用的GPRS模块服务器的要求有所不同,需要根据实际情况进行相应的配置和调试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值