CAN1_Tx.DataBuffer[i]= 0x。。必须是十六进制数吗?能否使用变量?
如题//====初始化数据=====
//====CAN1发送的数据格式及其内容=====
CAN2_Tx.FF = STANDARD_FRAME; //标准帧
CAN2_Tx.RTR = 0; //0:数据帧,1:远程帧
CAN2_Tx.DLC = 0x08; //数据长度
CAN2_Tx.ID = 0x21A; //CAN ID
CAN2_Tx.DataBuffer = 0x20; //数据内容---->CAN2_Tx.DataBuffer = sent_data;这样用变量代替?
CAN2_Tx.DataBuffer = 0x00;
CAN2_Tx.DataBuffer = 0x00;
CAN2_Tx.DataBuffer = 0x00;
CAN2_Tx.DataBuffer = 0x00;
CAN2_Tx.DataBuffer = 0x00;
CAN2_Tx.DataBuffer = 0x00;
CAN2_Tx.DataBuffer = 0x00;
比如,屠龙刀A 的CAN1 专门发送 sent_data, 同时需要接收 总线上来的 设置好的报文,并判断 这个报文第一个字节的数据,并时时更新给sent_data ,又发回给总线
if(B_Can2Read)
{
B_Can2Read = 0;
CANSEL = 1; //选择CAN2模块
n = CanReadMsg(CAN2_Rx); //读取接收内容
if(n>0)
{
for(i=0;i<n;i++)
{
if(CAN2_Rx.ID==0x123)
{
if(CAN2_Rx.DataBuffer == 0x02)
{
sent_data= 0x02;
}
}
}
}
CanSendMsg(&CAN2_Rx); //CAN总线原样返回
}
如上, 不知是否可行?
顾虑就是
if的嵌套有点多了, 不知道能用swtich吗?
CAN2_Tx.DataBuffer = 0x20; //数据内容---->CAN2_Tx.DataBuffer = sent_data;这样用变量代替?----------可以。这里是一个字节,范围是0-255,和进制没关系
if的嵌套有点多了, 不知道能用swtich吗?----应该不可以,switch是对一个变量不同值得条件分支,这里的多个if是对多个条件的分支。 21cnsound 发表于 2024-3-11 22:14
CAN2_Tx.DataBuffer = 0x20; //数据内容---->CAN2_Tx.DataBuffer = sent_data;这样用变量 ...
好的,谢谢,我完整的试试。
页:
[1]