2 reformat code
source | link

include "variant.h"

include "due_can.h"

include "Arduino.h"

include

include

include

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; IPAddress ip(192, 168, 1, 177);

unsigned int localPort = 8888; // local port to listen on

// buffers for receiving and sending data char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; //buffer to hold incoming packet,

EthernetUDP Udp;

void setup() {

Can0.init(250000); Serial.begin(9600);

Ethernet.begin(mac, ip); Udp.begin(localPort);

}

void loop() {

#include "variant.h"
#include "due_can.h"
#include "Arduino.h"

#include <SPI.h>        
#include <Ethernet.h>
#include <EthernetUdp.h> 

byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
IPAddress ip(192, 168, 1, 177);

unsigned int localPort = 8888;      // local port to listen on

// buffers for receiving and sending data
char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; //buffer to hold incoming packet,


EthernetUDP Udp;

void setup() {

Can0.init(250000);
Serial.begin(9600);

Ethernet.begin(mac, ip);
Udp.begin(localPort);

}

void loop() {

    int packetSize = Udp.parsePacket();
    Udp.read(packetBuffer,packetSize);

if (packetSize) {


   if (packetSize)
  {

    int Canframestosend= packetSize/8;    //Divides the Ethernet packet by 8 to match with CAN packet
    int count =0;
    int Rest=packetSize%8;                //Needed if the Ethernet packetsize isn´t a multiple of 8 


    for(int j=0;j<=Canframestosend;j++){

    CAN_FRAME NewFrame;                   //CAN frames which are sent
    NewFrame.id=0xFA;                     //ID of the frames
    NewFrame.length=8;                    //Maximum of bytes a Can frame can have

    for (int i=0;i<8;i++){

       NewFrame.data.byte[i] = packetBuffer[count]; //Write the Ethernet info byte by byte on the CAN frames
       count++;
       }
    if(packetSize<count){
      NewFrame.length=Rest;                         //Shortens the last frame to avoid unnessecary zeros
      }
       Can0.sendFrame(NewFrame);

      }      

   }
   delay(10);
}

} delay(10); }

include "variant.h"

include "due_can.h"

include "Arduino.h"

include

include

include

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; IPAddress ip(192, 168, 1, 177);

unsigned int localPort = 8888; // local port to listen on

// buffers for receiving and sending data char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; //buffer to hold incoming packet,

EthernetUDP Udp;

void setup() {

Can0.init(250000); Serial.begin(9600);

Ethernet.begin(mac, ip); Udp.begin(localPort);

}

void loop() {

int packetSize = Udp.parsePacket();
Udp.read(packetBuffer,packetSize);

if (packetSize) {

int Canframestosend= packetSize/8;    //Divides the Ethernet packet by 8 to match with CAN packet
int count =0;
int Rest=packetSize%8;                //Needed if the Ethernet packetsize isn´t a multiple of 8 


for(int j=0;j<=Canframestosend;j++){

CAN_FRAME NewFrame;                   //CAN frames which are sent
NewFrame.id=0xFA;                     //ID of the frames
NewFrame.length=8;                    //Maximum of bytes a Can frame can have

for (int i=0;i<8;i++){

   NewFrame.data.byte[i] = packetBuffer[count]; //Write the Ethernet info byte by byte on the CAN frames
   count++;
   }
if(packetSize<count){
  NewFrame.length=Rest;                         //Shortens the last frame to avoid unnessecary zeros
  }
   Can0.sendFrame(NewFrame);

  }     

} delay(10); }

#include "variant.h"
#include "due_can.h"
#include "Arduino.h"

#include <SPI.h>        
#include <Ethernet.h>
#include <EthernetUdp.h> 

byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
IPAddress ip(192, 168, 1, 177);

unsigned int localPort = 8888;      // local port to listen on

// buffers for receiving and sending data
char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; //buffer to hold incoming packet,


EthernetUDP Udp;

void setup() {

Can0.init(250000);
Serial.begin(9600);

Ethernet.begin(mac, ip);
Udp.begin(localPort);

}

void loop() {

    int packetSize = Udp.parsePacket();
    Udp.read(packetBuffer,packetSize);

   if (packetSize)
  {

    int Canframestosend= packetSize/8;    //Divides the Ethernet packet by 8 to match with CAN packet
    int count =0;
    int Rest=packetSize%8;                //Needed if the Ethernet packetsize isn´t a multiple of 8 


    for(int j=0;j<=Canframestosend;j++){

    CAN_FRAME NewFrame;                   //CAN frames which are sent
    NewFrame.id=0xFA;                     //ID of the frames
    NewFrame.length=8;                    //Maximum of bytes a Can frame can have

    for (int i=0;i<8;i++){

       NewFrame.data.byte[i] = packetBuffer[count]; //Write the Ethernet info byte by byte on the CAN frames
       count++;
       }
    if(packetSize<count){
      NewFrame.length=Rest;                         //Shortens the last frame to avoid unnessecary zeros
      }
       Can0.sendFrame(NewFrame);

      }      

   }
   delay(10);
}
1
source | link

Arduino sketch does not repeat

I have a Problem with my code.

My Goal is to receive a Ethernet message via UDP and send the message back via CAN.

It works fine but only with the first packet I send. When I send the same packet again there is no Response as you can see in the screenshot. I´m using the Arduino Due with a Transceiver. The Programm which sends and reads the Messages is Vector Canoe

include "variant.h"

include "due_can.h"

include "Arduino.h"

include

include

include

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; IPAddress ip(192, 168, 1, 177);

unsigned int localPort = 8888; // local port to listen on

// buffers for receiving and sending data char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; //buffer to hold incoming packet,

EthernetUDP Udp;

void setup() {

Can0.init(250000); Serial.begin(9600);

Ethernet.begin(mac, ip); Udp.begin(localPort);

}

void loop() {

int packetSize = Udp.parsePacket();
Udp.read(packetBuffer,packetSize);

if (packetSize) {

int Canframestosend= packetSize/8;    //Divides the Ethernet packet by 8 to match with CAN packet
int count =0;
int Rest=packetSize%8;                //Needed if the Ethernet packetsize isn´t a multiple of 8 


for(int j=0;j<=Canframestosend;j++){

CAN_FRAME NewFrame;                   //CAN frames which are sent
NewFrame.id=0xFA;                     //ID of the frames
NewFrame.length=8;                    //Maximum of bytes a Can frame can have

for (int i=0;i<8;i++){

   NewFrame.data.byte[i] = packetBuffer[count]; //Write the Ethernet info byte by byte on the CAN frames
   count++;
   }
if(packetSize<count){
  NewFrame.length=Rest;                         //Shortens the last frame to avoid unnessecary zeros
  }
   Can0.sendFrame(NewFrame);

  }     

} delay(10); }

Maybe there is an endless Loop but I don´t know which and why.

Hope anybody can help me with that! enter image description here