我做一个项目,需要4个工位单独并同时通讯,用的NI的CAN卡与自带函数库,用非可重入属性会导致通讯时间延长,用预分配与可重入就会导致数据要么接收不到,要么数据乱掉。请问有什么方法可以解决吗?
参考GPT和自己的思路:
针对您提出的问题,建议您尝试以下几个方法:
使用多线程方式实现并行通讯,每个工位使用独立线程进行CAN通讯,能够实现单独通讯,也可以同时进行通讯。这样能够避免使用非可重入属性导致的通讯时间延长现象。
调整代码结构,将代码中需要使用预分配与可重入属性的部分通过调用子VI的方式单独处理,能够有效地避免数据接收不到或者数据乱掉现象的发生。
考虑使用专业的通讯模块或者通讯库,这些模块或者库通常具有更高的性能和更好的稳定性,能够很好地解决您的问题。
以上是几个可行的解决方案,希望能够对您有所帮助。建议您结合实际情况考虑并选择合适的方法。