在C++中通过CAN发送部分数据

在C++中通过CAN发送部分数据,c++,software-design,C++,Software Design,首先,我有以下typedef: typedef unsigned char BYTE; typedef unsigned short WORD; 然后,我在类a中有一个函数,它用类型字计算一个值: 在B类中,我有setData函数,具有以下接口: void B::setCanData(WORD canId, BYTE * data, int length) 现在,我不能一次发送一个字,所以我想我需要把这个字分成两个字节,然后把它们作为参数传递给函数 或者有更好的解决方案吗?

首先,我有以下typedef:

typedef unsigned char   BYTE;    
typedef unsigned short  WORD;  
然后,我在类a中有一个函数,它用类型字计算一个值:

在B类中,我有setData函数,具有以下接口:

void B::setCanData(WORD canId, BYTE * data, int length)
现在,我不能一次发送一个字,所以我想我需要把这个字分成两个字节,然后把它们作为参数传递给函数


或者有更好的解决方案吗?

void B::setCanDataWORD canId,BYTE*data,int length的函数原型看起来像是通过指定地址和长度来发送任意数量的字节,我假设是字节数

所以你应该可以做一些类似的事情

B::setCanData m_canId,BYTE*&calculatedData,sizeofcalculatedData

我假设calculatedData的类型是WORD?您可能需要考虑一个字的存储性或字节顺序是否是您使用的协议的适当字节顺序,或者是否需要交换字节。这将真正取决于您所发送的数据流所消耗的数据量

我希望函数calcCrc计算某种CRC,它是数据流的一部分,并且您正在为一系列字节中已发送的消息提供CRC。我希望有关于消息的实际格式的文档,包括CRC以及所提供消息的字节顺序信息


如果您通过更新您的发布来提供关于协议的更多细节,它将帮助人们提供比这个更好的答案。

如果您关心您的类型的确切大小,请考虑使用。您的示例不完整。它使用了许多您尚未定义的标识符,并且包含许多错误和打字错误。请阅读有关s。
void B::setCanData(WORD canId, BYTE * data, int length)