那是很多问题.我从未在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总线上进行通信测试,只需使用硬件,而不仅仅是适配器和几个终端电阻.
那是很多问题.我从未在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总线上进行通信测试,只需使用硬件,而不仅仅是适配器和几个终端电阻.