完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近在STM32上搞ModbusTcp。LWIP已经调通了,但是在ENV开启Freemodbus功能之后,遇到了不少问题,所以想在这里请教一下大家: 1.我在ENV开启Freemodbus功能,TCP模式之后,发现下面的TCPsever自动开启了,这个我倒是能够理解,可能它们之间有依赖关系。但是为什么DFS功能也强制开启了呢?这个是为什么? 更诡异的是,这个功能一旦开启,就再也关不掉了:即便我关掉Freemodbus和TCPSever这两个包,这个DFS还是强制开启的,无法关闭! 2.第二个问题是:在ENV上把整个工程编译了之后,我发现KEIL工程会报错,解决了,然而继续编译又会出现问题:LWIP的代码,和POSIX的很多内容是重复的,不仅仅是变量,甚至是.h文件的名字都一样!这样导致编译的时候,c文件不知道引用的是哪个.h文件的内容,导致程序报错! 我研究了下LWIP的代码,也尝试过关掉LWIP_SOCKET_SELECT 和 LWIP_SOCKET_POLL这两个宏,但是没有解决问题,目前不知道这个问题该怎样解决,请各位大神帮帮忙吧! |
|
相关推荐
5个回答
|
|
|
|
|
|
好的,感谢大神帮我解决了第一个问题。请问第二个问题,可以指点下吗?
|
|
|
|
|
|
|
|
真是太谢谢了,通过你的指点,这个第二个问题也解决了。借此机会,我想把解决步骤分享给大家: 首先是ENV上的这个FreeModbus软件包,里面的TCP模式代码,是不完整的: 1.打开freemodbus-v1.6.0文件下的SConscript文件,添加这样的配置,以把TCP相关的文件拷贝进来 2.把select.c的头文件包含:poll.h的尖括号改成引号,即:#include “poll.h”,不然这个头文件会报错(这也是我第一次真正体会到<>和””的区别) 3.官方的freemodbus-v1.6.0软件包,缺少porttcp.c文件。 把ENV下载下来的文件包,和github上的文件包相比对,把文件拷贝过去 4.对于tcpserver.c的报错,可以参照这个帖子解决:https://club.rt-thread.org/ask/question/f178c826b2702d6a.html 主要是添加2个头文件 在移植的过程中,我们可能看到很多重名的头文件,比如poll.h、errno.h。我发现这些个重名的文件应该是没有影响的:虽然说.h的名字是相同的,但是文件定义的宏名字是不同的(不过我还是希望RTT团队能够对此改进下,突然遇到这种情况确实让人困惑,还以为是自己操作出了问题): 主要的问题点是这个4个,也许会有一些小的遗漏,不过没有太大影响。。。说实话真心希望RTT团队能够加强对软件包的把关,不然用户总以为ENV下载下来的软件包一般不会有问题,一旦出现报错总以为是自己哪里配置出了问题,最终白白浪费了大量时间T_T 目前KEIL不报错了,程序的功能明天再来验证 |
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1004 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
3272 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1443 浏览 0 评论
2102 浏览 0 评论
1614 浏览 0 评论
75278 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 23:33 , Processed in 0.679441 second(s), Total 80, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号