canitpSend (Function)

Top  Previous  Next

Architecture:

NX32 / NX32L

Device support:

MX2 turbo/encore/warp, NX-200, NX-400, LX5

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..4096] OF 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..4095] OF SINT;

  len   : INT;

END_VAR;

 

  // Open can

  canOpen(baud := 250, monitor := 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 := str, dst := 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;