armink / FreeModbus_Slave-Master-RTT-STM32

Add master mode to FreeModbus. | 在 FreeModbus 中添加主机模式
Other
1.6k stars 820 forks source link

是否支持Visual Studio 编译生成dll 或则lib文件?如果可以用怎么操作 #27

Open caistd opened 6 years ago

armink commented 6 years ago

想在 windows 平台上用 FreeModbus ?

caistd commented 6 years ago

是的,想移植mdobus tcp modbus acii modbus rtu

armink commented 6 years ago

那只需要修改 port 下的文件就好了,记得之前有网友完成了 windows 的移植,难度应该还好。

caistd commented 6 years ago

是不是只要将freemobus文件夹下面的所有文件,在VS新建一个项目,导入进去,然后修改port文件夹函数是这个意思吧

armink commented 6 years ago

差不多了,你可以借鉴下里面的其他 ide 里的编译参数

caistd commented 6 years ago

modbus_rtu master开发的时候新增了带_m的代码其它的代码有改动吗?

armink commented 6 years ago

好像有很小的改动,你可以用比较工具对比下

caistd commented 6 years ago

eMBErrorCode eMBRegisterCB( UCHAR ucFunctionCode, pxMBFunctionHandler pxHandler )这个函数我没有看到里面有引用具体是做什么用的,怎么使用?能不能举个例子 谢谢

armink commented 6 years ago

这个不是用户应用使用的 api

caistd commented 6 years ago

我看了下函数好像是自己定义功能码发送的,但是第二个参数我不知道是什么意思能不能跟我说下 谢谢

armink commented 6 years ago

不是的。正如其名,它是寄存器操作的回调函数。

比如:默认的寄存器存储的数据结构是顺序存储的数组,那么操作寄存器就是操作数组,如何操作就需要在这个函数中实现。

如果你不想要这类定长且有很大限制数据结构,也可以使用链表来存储寄存器,此时就需要用户自己实现这个回调函数。也可以借鉴 EDM (https://github.com/armink/EasyDataManager) 这个项目,它起初就是专门为 FreeModbus 定制的链表存储、事件驱动的库。

armink commented 6 years ago

许久没折腾 FreeModbus ,上面我说的含义对应的回调,跟你说的回调没有关系,请忽略。

eMBRegisterCB 是注册回调函数,跟你理解的意思一样。第二个入参 pxHandler 是这个新增功能码对应的实现函数。你实现好意思,把它放入到第二个入参即可。这里还有个分析介绍: http://blog.sina.com.cn/s/blog_817e99610102uzjy.html

caistd commented 6 years ago

感谢 你的主机功能好像没有看到读取保持寄存器的功能,比如功能码03

armink commented 6 years ago

都有的

caistd commented 6 years ago

感谢 有打算做TCP主机吗

armink commented 6 years ago

目前没有的

caistd commented 6 years ago

已经在windows 平台完成 tcp 主机移植

armink commented 6 years ago

👍