canitpSend (Function)

Top  Previous  Next

Architecture:

NX32 / NX32L

Firmware version:

5.13 / 1.80.00


Send an ISO-TP message.

The destination of the message is set in the canitpOpen function, using the dst parameter.

 

 

Input:

data : PTR

The buffer with the message to send.

 

size : INT (1..4095)

The size of the message in bytes.

 

 

Returns: INT

1

- Successful.

0

- Not available.

-1

- ISO-TP is not open.

-2

- Illegal data or size.

-3

- Error sending the message.

-11

- The CAN bus is not open.

-14

- Timeout sending the messge.

-15

- The CAN bus is in monitor mode.

-16

- An error is detected on the can bus.

 

Declaration:

FUNCTION canitpSend : INT;
VAR_INPUT
   data : PTR;
   size : INT;
END_VAR;

 

 

Example:

INCLUDE rtcu.inc

 

VAR

   buf   : ARRAY [1..4096OF SINT;

END_VAR;

 

FUNCTION CALLBACK canitpRecv

VAR_INPUT

   size  : INT;

END_VAR;

   DebugMsg(message := strFromMemory(src := ADDR(buf), len := size));

END_FUNCTION;

 

PROGRAM example;

VAR

   rc    : INT;

   str   : STRING;

   out   : ARRAY [1..4095OF SINT;

   len   : INT;

END_VAR;

 

   // Open can

   canOpen(baud := 250monitor := FALSE);

 

   // Open ISO-TP

   rc := canitpOpen(port     := 1,

                    src      := 16#12345678,

                    dst      := 16#12345679,

                    received := @canitpRecv,

                    cb_data  := ADDR(buf),

                    cb_size  := SIZEOF(buf));

   IF rc < 1 THEN

      DebugFmt(message := "canitpOpen=\1", v1 := rc);

      RETURN;

   END_IF;

 

   // Build message

   str := "Hello from RTCU device";

 

   // Send message

   len := strLen(str := str);

   strToMemory(str := strdst := ADDR(out), len := len);

   rc  := canitpSend(data := ADDR(out), size := len);

   IF rc < 1 THEN

      DebugFmt(message := "canitpSend=\1", v1 := rc);

      RETURN;

   END_IF;

 

BEGIN

END;

END_PROGRAM;