完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
按照原子例程,已经实现了通讯。但是还要问题没有解决。
我做得是采集ADC信号,通过网线发出来。 领导希望发出来的是10进制的数据,比如2.5V发出来的数据就是2.5,我把采集的数据x100得到的数据取整,我用一节干电池发出来的就是91,实际上这个数据是16进制的,转换过来就是145,那么这个电压就是1.45V。float *tcp_server_sendbuf=&adcbuf; 我做了如下尝试 temp=(float)adcx*(3.3/4096); sprintf(adcbuf,"%f",temp); 把temp的值转化成字符串,然后char *tcp_server_sendbuf=&adcbuf; 失败!!! 完全没有数据发出了。 然后我有尝试 建一个数组adcbuf[3] 比如1.45V 把1存入adcbuf[0], 把4存入adcbuf[1],把5存入adcbuf[2]。然后u16 *tcp_server_sendbuf=adcbuf; 失败,没有数据发出。 不知道哪里出了问题,请大家路过的给我一些指点。 |
|
相关推荐
8个回答
|
|
char *tcp_server_sendbuf=&adcbuf;直接这样就完了?后面还有代码哦,要写入发送长度等信息
|
|
|
|
这个地方我承认偷懒了。原子哥的例程是u8 *tcp_server_sendbuf=“STM32F407”;今天正好在看,这个地方了,我应该定义一个TCP服务器发送数据缓冲区,定义发送的数据的大小,长度,然后再发送。一会尝试一下。
|
|
|
|
adcx=Get_Adc_Average(ADC_Channel_5,20); adcx是MCU得到的电压值
temp=(float)adcx*(3.3/4096); temp是计算后得到实际电压值 比如3.111 sprintf((char*)adcbuf,"%.2f",temp); 调用函数sprintf 把float 的temp的值给adcbuf[], memcpy(tcp_server_sendbuf,adcbuf,strlen(adcbuf));调用函数memcpy 把adcbuf[]的值拷贝给tcp_server_sendbuf temp有值,但是adcbuf[]没有值,然后tcp_server_sendbuf也没有值 如果我直接拷贝memcpy(tcp_server_sendbuf,&temp,4) tcp_server_sendbuf所有的数据也是0 |
|
|
|
发送函数
if((tcp_server_flag & LWIP_SEND_DATA) == LWIP_SEND_DATA) { err = netconn_write(newconn ,tcp_server_sendbuf,strlen((char*)tcp_server_sendbuf),NETCONN_COPY); memset(tcp_server_sendbuf,0,TCP_SERVER_TX_BUFSIZE); 发送缓存区清0 tcp_server_flag &= ~LWIP_SEND_DATA; } |
|
|
|
|
|
|
|
|
|
|
|
8字节对齐,不行,那就16字节,或者32字节对齐
|
|
|
|
再试试
|
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2543 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2331 浏览 5 评论
3156 浏览 3 评论
2801 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2760 浏览 4 评论
请教各位大咖:有没有接收频率32M左右的芯片推荐的?先感谢啦!
608浏览 1评论
853浏览 0评论
966浏览 0评论
620浏览 0评论
447浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 00:18 , Processed in 1.184656 second(s), Total 92, Slave 75 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号