这是很多问题。我从来没有用 Java 做过任何与 CAN 相关的编程,但让我们看看我可能会回答哪些问题:
1)除了将PC连接到CANbus网络之外,CAN-PC适配器还有什么作用?
这主要取决于嵌入在适配器中的 CAN 控制器。但基本上它只处理低级的东西,如总线仲裁、错误处理、重传和消息缓冲。
2) 是否可以在没有 CAN-PC 适配器的情况下将笔记本电脑连接到 CANbus 网络?
不。
3) 如果需要 CAN-PC 适配器,我应该使用哪种适配器?PCMCIA、并行、串行、USB 等?
在笔记本电脑上?我会选择USB接口。我对 Kvaser 的界面有很好的经验。
4)我如何开始编写java程序来监听/编写CANopen消息?
取决于您的适配器的 API。API 很可能是基于 C 的,所以我至少会从一些简单的 C 测试程序开始。CAN 接口供应商可能有一些很好的例子。
5)我应该使用哪些库?
可能是随您的 CAN 接口提供的接口,至少对于基本 CAN 部分。对于 CANopen 部分,有一些商业 CANopen 堆栈可用,甚至可能是免费的。我怀疑是否有任何用 Java 编写的。如果您只是进行简单的通信,您也可以自己实现 CANopen 堆栈的必要部分。
6) 我需要创建自己的驱动程序吗?
一般没有。取决于您的操作系统和 CAN 接口模型。为您的操作系统选择带有驱动程序的 CAN 接口。
7)我的程序应该处理心跳监控/错误检测等吗?还是这些由 CAN-PC 适配器处理?
CANopen 堆栈应在 CANopen 级别处理该问题。低级 CAN 总线错误处理由您的接口负责。
8) 如何从 CANbus 节点检索特定信息?
我不知道你在这里是什么意思。PDO 或 SDO 取决于您想要的信息类型。
9) EDS 文件和对象字典是如何创建的?每个节点都需要它们吗?
您通常不需要创建 EDS 文件,但可能对文档有用。对象字典在软件中实现。如果使某些东西符合标准,则 OD 的某些部分是强制性的。
10) 如何在不购买 CAN 硬件的情况下模拟 CAN 网络来测试我的 java 程序?
我不会...开发一个有意义的总线模拟器可能比仅仅购买一个 CAN 适配器更昂贵。请注意,许多 CAN 适配器包含双接口,因此您可以在真正的 CAN 总线上进行通信测试,而只需要适配器和几个终端电阻器之外的硬件。