这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 如果改为循环发送?

共10条 1/1 1 跳转至

如果改为循环发送?

工程师
2014-07-12 09:36:04     打赏

程序方面很薄弱,我将CAN的数据发送出去,是给结构体每次都赋值的方式进行的,发送程序如下:TX.message_type=CAN_MSG_DATA;


    TX.frame_type=CAN_FRAME_STD;

    TX.buffer=0;

    TX.id=0x124;

    TX.data[0]='a';

    TX.data[1]='a';

    TX.data[2]='a';

    TX.data[3]='a';

    TX.data[4]='a';

    TX.data[5]='a';

    TX.data[6]='a';

    TX.data[7]='a';

    TX.data_length=8;

 

    TX1.message_type=CAN_MSG_DATA;

    TX1.frame_type=CAN_FRAME_STD;

    TX1.buffer=0;

    TX1.id=0x124;

    TX1.data[0]='b';

    TX1.data[1]='b';

    TX1.data[2]='b';

    TX1.data[3]='b';

    TX1.data[4]='b';

    TX1.data[5]='b';

    TX1.data[6]='b';

    TX1.data[7]='b';

    TX1.data_length=8;

 

    TX2.message_type=CAN_MSG_DATA;

    TX2.frame_type=CAN_FRAME_STD;

    TX2.buffer=0;

    TX2.id=0x124;

    TX2.data[0]='c';

    TX2.data[1]='c';

    TX2.data[2]='c';

    TX2.data[3]='c';

    TX2.data[4]='c';

    TX2.data[5]='c';

    TX2.data[6]='c';

    TX2.data[7]='c';

    TX2.data_length=8;

 

    TX3.message_type=CAN_MSG_DATA;

    TX3.frame_type=CAN_FRAME_STD;

    TX3.buffer=0;

    TX3.id=0x124;

    TX3.data[0]='d';

    TX3.data[1]='d';

    TX3.data[2]='d';

    TX3.data[3]='d';

    TX3.data[4]='d';

    TX3.data[5]='d';

    TX3.data[6]='d';

    TX3.data[7]='d';

    TX3.data_length=8;

 

    TX4.message_type=CAN_MSG_DATA;

    TX4.frame_type=CAN_FRAME_STD;

    TX4.buffer=0;

    TX4.id=0x124;

    TX4.data[0]='e';

    TX4.data[1]='e';

    TX4.data[2]='e';

    TX4.data[3]='e';

    TX4.data[4]='e';

    TX4.data[5]='e';

    TX4.data[6]='e';

    TX4.data[7]='e';

    TX4.data_length=8;

 

    TX5.message_type=CAN_MSG_DATA;

    TX5.frame_type=CAN_FRAME_STD;

    TX5.buffer=0;

    TX5.id=0x124;

    TX5.data[0]='f';

    TX5.data[1]='f';

    TX5.data[2]='f';

    TX5.data[3]='f';

    TX5.data[4]='f';

    TX5.data[5]='f';

    TX5.data[6]='f';

    TX5.data[7]='f';

    TX5.data_length=8;

 

    TX6.message_type=CAN_MSG_DATA;

    TX6.frame_type=CAN_FRAME_STD;

    TX6.buffer=0;

    TX6.id=0x124;

    TX6.data[0]='g';

    TX6.data[1]='g';

    TX6.data[2]='g';

    TX6.data[3]='g';

    TX6.data[4]='g';

    TX6.data[5]='g';

    TX6.data[6]='g';

    TX6.data[7]='g';

    TX6.data_length=8;

 

    TX7.message_type=CAN_MSG_DATA;

    TX7.frame_type=CAN_FRAME_STD;

    TX7.buffer=0;

    TX7.id=0x124;

    TX7.data[0]='h';

    TX7.data[1]='h';

    TX7.data[2]='h';

    TX7.data[3]='h';

    TX7.data[4]='h';

    TX7.data[5]='h';

    TX7.data[6]='h';

    TX7.data[7]='h';

    TX7.data_length=8;

 

    TX8.message_type=CAN_MSG_DATA;

    TX8.frame_type=CAN_FRAME_STD;

    TX8.buffer=0;

    TX8.id=0x124;

    TX8.data[0]='i';

    TX8.data[1]='i';

    TX8.data[2]='i';

    TX8.data[3]='i';

    TX8.data[4]='i';

    TX8.data[5]='i';

    TX8.data[6]='i';

    TX8.data[7]='i';

    TX8.data_length=8;

 

    TX9.message_type=CAN_MSG_DATA;

    TX9.frame_type=CAN_FRAME_STD;

    TX9.buffer=0;

    TX9.id=0x124;

    TX9.data[0]='j';

    TX9.data[1]='j';

    TX9.data[2]='j';

    TX9.data[3]='j';

    TX9.data[4]='j';

    TX9.data[5]='j';

    TX9.data[6]='j';

    TX9.data[7]='j';

TX9.data_length=8;

 

while(1)

    {

     sendECAN(&TX);

     delayms(10000);

     sendECAN(&TX1);

     delayms(10000);

     sendECAN(&TX2);

     delayms(10000);

     sendECAN(&TX3);

     delayms(10000);

     sendECAN(&TX4);

     delayms(10000);

     sendECAN(&TX5);

     delayms(10000);

     sendECAN(&TX6);

     delayms(10000);

     sendECAN(&TX7);

     delayms(10000);

     sendECAN(&TX8);

     delayms(10000);

     sendECAN(&TX9);

     delayms(10000);

  }

这样的发送方式,发送数据时只能发送固定的数据,如果要进行实时的数据发送,怎么解决呢。如果进行循环发送,又该怎么设计。请大家提示一下,谢谢了。



院士
2014-07-14 09:34:28     打赏
2楼
真心的一步步看你成长啊

工程师
2014-07-14 11:45:28     打赏
3楼
非常感谢EEPW。感谢这个温暖的家庭。谢谢。欠缺的很多,还要更加努力。

院士
2014-07-14 21:07:15     打赏
4楼
楼主的进取心很强,精神可嘉,

高工
2014-07-15 06:08:25     打赏
5楼

你的数据总共80个字节,定义一个80字节的数组存放实时数据,定义一个8字节的发送数组。循环10次给发送数组赋值,每次赋值完成就发送。赋值也可以采用循环语句。


工程师
2014-07-15 09:35:02     打赏
6楼
哎,精神可嘉没用啊,多希望有人夸我一句,你懂得真多。

工程师
2014-07-15 09:36:33     打赏
7楼
奥,非常感谢您的提醒和建议。我试试,谢谢了啊。

工程师
2014-07-15 10:11:14     打赏
8楼
for(a=0;a<10;a++)     {         for(i=0;i<8;i++)            TxMessage.data[i]=ecan_data[8*a+i];             sendECAN(&TxMessage);             Delay(Delay_1S_Cnt);       } 按照您的提示,成功了。程序如上。谢谢谢谢。不知道还有没有需要改进的更好办法。

院士
2014-07-15 21:39:55     打赏
9楼
   适当的夸一下是帮助,太多的夸也许是捧杀,所以,不能常夸,正所谓“糖食坏齿、甘言夺志”,这不是吝啬啊,

工程师
2014-07-16 08:00:12     打赏
10楼
太有才了您。

共10条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]