OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4574|回复: 14

移植LWIP后,做了个发送ADC数值的例程,通讯成功,但是收到的报文看不明白。

[复制链接]

27

主题

427

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
4356
金钱
4356
注册时间
2017-5-30
在线时间
578 小时
发表于 2017-11-23 13:24:33 | 显示全部楼层 |阅读模式
10金钱
请大神告知我一下该如何处理。收到的及格报文格式如下:
CD 6C 0B 3E 01
33 F3 08 3E 01
9A B9 0E 3E 01
CD 6C 0B 3E 01
9A 99 0A 3E 01

最佳答案

查看完整内容[请看2#楼]

问题已解决。因为我发送的是FLOAT,我把数据转换成整形之后就可以正常的收到16进制的转换后的电压数据。然后下一步就是把16进制的数据转换成10进制的更直观,这样我的这个小项目就算是完成了。最后希望我能把热拔插也一起能做好。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

27

主题

427

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
4356
金钱
4356
注册时间
2017-5-30
在线时间
578 小时
 楼主| 发表于 2017-11-23 13:24:34 | 显示全部楼层
问题已解决。因为我发送的是FLOAT,我把数据转换成整形之后就可以正常的收到16进制的转换后的电压数据。然后下一步就是把16进制的数据转换成10进制的更直观,这样我的这个小项目就算是完成了。最后希望我能把热拔插也一起能做好。
回复

使用道具 举报

27

主题

427

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
4356
金钱
4356
注册时间
2017-5-30
在线时间
578 小时
 楼主| 发表于 2017-11-23 13:25:34 | 显示全部楼层
发送的是 temp=(float)adcx*(3.3/4096);的值。
回复

使用道具 举报

27

主题

427

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
4356
金钱
4356
注册时间
2017-5-30
在线时间
578 小时
 楼主| 发表于 2017-11-23 14:45:51 | 显示全部楼层
在网络调试助手上如果不选择16进制显示,就是乱码,16进制显示就是这些数据。
回复

使用道具 举报

42

主题

297

帖子

0

精华

高级会员

Rank: 4

积分
994
金钱
994
注册时间
2016-7-22
在线时间
318 小时
发表于 2017-11-25 09:10:21 | 显示全部楼层
char buffer【1024】;
float rms1,rms2,rms3;

memcpy(buffer,      &rms1, 4);//float占用4个字节
memcpy(buffer+4,  &rms2, 4);
memcpy(buffer+8,  &rms3, 4);
我是这么搞得
回复

使用道具 举报

27

主题

427

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
4356
金钱
4356
注册时间
2017-5-30
在线时间
578 小时
 楼主| 发表于 2017-11-25 09:35:49 | 显示全部楼层
hi我歌月徘徊 发表于 2017-11-25 09:10
char buffer【1024】;
float rms1,rms2,rms3;

我来理解一下你的做法,定义一个数组char buff[1024],3个变量float rm1 rm2 rm3.
然后把rm1的值 拷贝给buff rm2拷贝给buff+4(下一个字节)以此类推。这样BUFF里面就有3个数据了。然后发送这个数组就行了吗?
回复

使用道具 举报

27

主题

427

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
4356
金钱
4356
注册时间
2017-5-30
在线时间
578 小时
 楼主| 发表于 2017-11-25 11:33:55 | 显示全部楼层
hi我歌月徘徊 发表于 2017-11-25 09:10
char buffer【1024】;
float rms1,rms2,rms3;

我表示很遗憾,使用你的方法没用做出来,你看看我哪里出错了。
adcx=Get_Adc_Average(ADC_Channel_5,20);
temp=(float)adcx*(3.3/4096);
temp是求出来FLOAT的数据
#define TCP_SERVER_TX_BUFSIZE        4     
extern u8 tcp_server_sendbuf[TCP_SERVER_TX_BUFSIZE];//TCP服务器发送数据缓冲区
下面是发送函数
if((tcp_server_flag & LWIP_SEND_DATA) == LWIP_SEND_DATA)
                                {
                                        memcpy(tcp_server_sendbuf,&temp,4);
                                        err = netconn_write(newconn ,tcp_server_sendbuf,strlen((char*)tcp_server_sendbuf),NETCONN_COPY); //发送tcp_server_sendbuf的数据
                                        memset(tcp_server_sendbuf,0,TCP_SERVER_TX_BUFSIZE);
                                        tcp_server_flag &= ~LWIP_SEND_DATA;
                                }
回复

使用道具 举报

42

主题

297

帖子

0

精华

高级会员

Rank: 4

积分
994
金钱
994
注册时间
2016-7-22
在线时间
318 小时
发表于 2017-11-25 13:55:59 | 显示全部楼层
whj467467274672 发表于 2017-11-25 11:33
我表示很遗憾,使用你的方法没用做出来,你看看我哪里出错了。
adcx=Get_Adc_Average(ADC_Channel_5,20) ...

看起来没有问题,但是我习惯在数据拷贝之前把buffer清空,还有strlen函数,有时候不准,我都是写固定字节数的。
回复

使用道具 举报

27

主题

427

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
4356
金钱
4356
注册时间
2017-5-30
在线时间
578 小时
 楼主| 发表于 2017-11-25 14:44:51 | 显示全部楼层
hi我歌月徘徊 发表于 2017-11-25 13:55
看起来没有问题,但是我习惯在数据拷贝之前把buffer清空,还有strlen函数,有时候不准,我都是写固定字节 ...

就算不清空,也不应该数据为空的啊,我现在数据没有,就是完全没有拷贝过来啊
回复

使用道具 举报

42

主题

297

帖子

0

精华

高级会员

Rank: 4

积分
994
金钱
994
注册时间
2016-7-22
在线时间
318 小时
发表于 2017-11-25 16:34:00 | 显示全部楼层
whj467467274672 发表于 2017-11-25 14:44
就算不清空,也不应该数据为空的啊,我现在数据没有,就是完全没有拷贝过来啊

memcpy不能拷贝?
temp难道是空的吗
回复

使用道具 举报

27

主题

427

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
4356
金钱
4356
注册时间
2017-5-30
在线时间
578 小时
 楼主| 发表于 2017-11-25 17:48:36 | 显示全部楼层
本帖最后由 whj467467274672 于 2017-11-25 17:50 编辑

对的,temp是空的。我尝试先用sprintf把temp转换成字符串,在拷贝,发现sprintf也不能转换,但是temp是确实有值的。
回复

使用道具 举报

5

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2017-2-16
在线时间
23 小时
发表于 2017-12-4 16:06:00 | 显示全部楼层
楼主,可否分享例程?918100424
回复

使用道具 举报

3

主题

7

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2018-3-8
在线时间
7 小时
发表于 2018-3-8 10:05:40 | 显示全部楼层
楼主,我也是自己修改程序,将ADC采集的数据通过LWIP发送,可就是没有数据发送出去;能否参考一下你的程序,万分感谢
回复

使用道具 举报

3

主题

7

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2018-3-8
在线时间
7 小时
发表于 2018-3-8 10:44:00 | 显示全部楼层
我的ADC数据一直发送不出去,且网络连接断开后就连接不上了
回复

使用道具 举报

20

主题

169

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1012
金钱
1012
注册时间
2017-7-27
在线时间
162 小时
发表于 2018-3-18 17:03:59 | 显示全部楼层
whj467467274672 发表于 2017-11-25 11:33
我表示很遗憾,使用你的方法没用做出来,你看看我哪里出错了。
adcx=Get_Adc_Average(ADC_Channel_5,20) ...

楼主,对于学校里面的客户端如何实现连接到阿里云服务器,有固定的IP和端口,但是就是连接不上
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 21:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表