DSP

CanFestival win32程序调试过程记录 版本CanFestival-3-8bfe0ac0

2019-07-13 17:30发布

最近在调试一个伺服驱动器,支持CanOpen和EtherCAT,因最终将使用单片机或FPGA控制,Ethernet的IP核要十几万,故选择CanFestival进行移植。但进行调试时发现一些问题,记录一下,也方便看到的朋友的参考。
1、objdictgen 字典编辑器的环境要求 a) python 2.7(python3不可以) b) wxPython 版本我使用的是“wxPython2.8-win32-unicode-2.8.12.1-py27.exe”,实测最新的wxPython不可用,不要用pip install -U wxPython安装最新版本,最新版会有如PySimpleApp 改为 App等问题,因为我不熟悉Python,所以没有动程序,直接换了老版本一切正常,有能力的朋友可以对源码进行修改。 c) Gnosis_XML已经被Gnosis_Utils包含,所以只要安装Gnosis_Utils就可以,Gnosis_Utils包在objdictgen文件夹下有,解压后,cmd或终端进入文件夹,python setup.py install_all(如敲install是只给自己安装)进行安装后即可。 d) Beremiz装不装无所谓,这是个开源PLC方案,CanFestival现在属于它的一个子项目,如果安装,在文件夹下会有一个CanFestival-3的文件夹,可以直接使用,与网上下载的源码包没什么区别。
2、提示无TestMater.c之类的问题 用objdictgen中的objdictedit.py重新编译缺失文件目录的.od文件并生成字典文件,包含一个.c和一个.h文件。字典工具我windows与ubuntu均打开过,可显示中文比较容易使用的。
3、最头大的一个问题,无法解析__nodeguardError 找了半天不知道什么问题,nodeguardError定位在lifegrd.c文件中,不知道为何找不到。后来发现要在srcwin32CanFestival-3.def中添加_nodeguardError的定义,因为源码没用extern,而是通过def文件去找,尴尬的是不知道为什么好几个版本的源码中都有这个问题,百度搜了一圈也没找到答案,可能大神都直接移植没有用win32跑过。 CanFestival-3.def中“; lifegrd.h”部分如下:         ; lifegrd.h
        _heartbeatError
        _post_SlaveBootup
        _post_SlaveStateChange
        _nodeguardError
        getNodeState
        heartbeatInit
        heartbeatStop
        proceedNODE_GUARD

最终生成了exe,CanFestival这个源码包真是挺折腾的,传一个修改完的包,方便朋友们使用。现在最低就是定两个币,不然就免费给大家下载了。 http://download.csdn.net/download/prius0304/10118851