|
我用1.5版本之前的NI-CAN开发了一个CAN应用,但是在更新到最新版本的CAN驱动后我的应用不工作了。当我尝试重新编译我的应用时,我收到了类似这样的错误信息——NC_ERR_TIMEOUT 没有被定义。 为什么我的错误处理在新版本的NI-CAN 中不再工作了?
随之NI-CAN 1.5版本的发布,被回调的错误代码也已经被更新。
当你的程序要在错误簇中评估错误代码,在新驱动版本下的程序就不再能够适当地作出响应。以下是可以让你的应用在新驱动版本下正常工作的两个方法。
1 更新你的应用从而使用新的错误代码
2 这是一个相对比较好的解决方法,因为它能使你的应用达到当前NI-CAN所要求的标准。这是你想继续推动NI-CAN的发展,让NI-CAN不再用旧的错误代码去编译头文件的唯一方法。
附件Errors.txt包含了对错误代码更改的解释,它可以被用来帮助你的应用和当前错误代码的转换。
3 配置NI-CAN驱动从而使用原始错误代码
NI-CAN能够恢复旧错误代码。这个解决方案仅适用于现有的可执行文件,因为NI-CAN的头文件不再包含使用旧错误代码编译所需的定义。恢复到旧错误代码方法是要依赖于NI-CAN在系统中的版本。
NI-CAN 1.5,1.5.1和1.6:
在NI-CAN的安装目录下有一个小程序(StatusEx.exe)可以将NI-CAN驱动(ver. 1.5, 1.5.1 or 1.6) 的输出错误从新版本向之前一个版本进行转换。这个程序必须以以下命令形式调用
StatusEx –L
让驱动以NI-CAN 1.4.2(或更早版本)的形式写出
StatusEx –D
让驱动以NI-CAN 1.5版本作为默认格式写出
通过StatusEx所做的改变是永久性的,所以即使电脑reset,在StatusEx –D被调用前旧的代码仍然会被使用。
NI-CAN 2.x:
NI-CAN 2.0 引入了一个不同的方式来修改错误代码格式。你可以在Windows里面直接找到这个文件nicanopt.ini. [REVERSESTATUS_OPTION] 在这个文件中并且REVERSESTATUS 会被设为OFF状态。把它设为开启状态将会把错误代码格式改成旧格式。 你要确保关掉了所有的NI-CAN 应用 并且再次打开来看一下改变的错误代码格式。
|