真是太谢谢了,通过你的指点,这个第二个问题也解决了。借此机会,我想把解决步骤分享给大家:
首先是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不报错了,程序的功能明天再来验证
真是太谢谢了,通过你的指点,这个第二个问题也解决了。借此机会,我想把解决步骤分享给大家:
首先是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不报错了,程序的功能明天再来验证
举报