tianyiran02 发表于 2014-4-8 22:42:07

3G模块数据通信格式问题,求助各大神!!!

本帖最后由 tianyiran02 于 2014-4-8 22:49 编辑

楼主在用HUAWEI EM770W 3G模块上传一个数据。遇到一个问题,希望大家指导下。

1. 不能发送回车的问题。

之前使用SIM900A模块的时候,输入AT%CIPSEND之后就在串口中直接输入

POST /ws/DataPoint HTTP/1.0
Host: login.etherios.com
Accept: */*
Content-Length:143
Authorization: Basic c2VhbnByaWRkeTpvOWk4dTd5RVQk
 
<DataPoint>
<data>51</data>
<timestamp>2014-03-09T12:51:50+00:00</timestamp>
<streamId>Channel/DeviceID/Sensor/Temp</streamId>
</DataPoint>

就能得到正确的反馈信息。

现在改用EM770W,首先模块不支持HTTP,需要用TCPIP连接之后按照HTTP格式发送数据。但模块发送数据的指令AT%IPSEND=<id>,<user_data>当中,user_data不能包含回车。如果发送含有回车,就直接在回车出现的地方终止了,如下图,


我又将回车改成\n,如下图


3G模块返回的值仅仅是OK,server也没有收到数据。这种返回情况根本就没有出现在数据手册里嘛。正常情况应该返回的值是:



是不是说明就不能直接模拟HTTP协议了啊?

2. 编码方式的问题。

我查询了数据手册,datasheet关于user_data的说明是支持GSM7和USC2 coding。我把包涵回车的内容转成GSM7格式能够正确发送,但是也出现一个问题,就是datasheet提到%IPSEND最多支持512个字符。项目的HTTP是用GET方法上传数据,转换过后长度一定是大于512了,是不是也就意味着没法用HTTP了呢?

tianyiran02 发表于 2014-4-8 23:00:42

是不是可以理解为user_data这个项""内的都是用ASCII码表示的字符,这些字符编码成了GSM7或者USC2。新的问题是我如果用GSM7发送数据给了目标的80端口,目标收到的应该也是GSM7编码的数据,server需要先解码才能响应请求是么?这是常规做法么?还是我的哪里不对。。。

xukai871105 发表于 2014-4-9 21:10:22

user_data不能包含回车

不会吧,那就真的不能组HTTP头了,每行结尾必须是回车和换行。你再仔细看看!

tianyiran02 发表于 2014-4-9 21:42:23

xukai871105 发表于 2014-4-9 21:10
user_data不能包含回车

不会吧,那就真的不能组HTTP头了,每行结尾必须是回车和换行。你再仔细看看! ...

但是在第二张图片里面确实是包涵回车(串口直接打出来的回车),就直接在回车处断开了。返回也是error。。。

tianyiran02 发表于 2014-4-16 00:10:01

问题解决了,传送门: http://www.amobbs.com/forum.php?mod=viewthread&tid=5576715&pid=7465734&page=1&extra=#pid7465734
页: [1]
查看完整版本: 3G模块数据通信格式问题,求助各大神!!!