Page 1 of 1

Detect when a specific CAN-ID has been received in an interface

Posted: Sat 12. Jun 2021, 00:46
by YourAverageDevelope
Hello, im working in a (legacy) interface application in C# that communicates to an actuator software via PCAN.
This interface implemented the PCAN-Light library.

What im currently trying to do is to, based on a text file, perform the following actions:

1. Send specific commands
2. Wait for the specific CAN-ID before proceding to the next instruction

Heres how these text files look like:

Image

So far i have no problem sending the extracted commands, but im having a hard time figuring out how i am supposed
to detect when a specific CAN-ID has been received, heres how my method that executes these send commands from the text file looks like:

Image

When using Trace on PCAN-View, i can see that after sending the message command, the actuator is replying back with the
CAN-ID that is specified on the text file, the problem that i have is how i am supposed to read and detect these CAN-ID's in my interface.

I know that PCAN-Light is outdated but i think that what im asking for is possible to do, i will greatly appreciate any feedback.

Thank you in advance.

Re: Detect when a specific CAN-ID has been received in an interface

Posted: Mon 14. Jun 2021, 12:49
by M.Maidhof
Hi,

the commands you have listed is a PCAN-Explorer standard macro. Best solution will be to use PCAN-Explorer for such a task, isn't it?

If you want to do the same application with an own application, you need a timer or use an event to read the CAN frames, and synchronize this with your "macro".

And yes, PCAN-Light is outdated since more than 10 years, for a new application it will be better to switch to the PCANBasic API, which is avaialble for free on our website.

regards

Michael

Re: Detect when a specific CAN-ID has been received in an interface

Posted: Mon 14. Jun 2021, 20:10
by YourAverageDevelope
Thank you for your reply.

I do want to implement this in my own application, i do know how to read the received CAN frames,
but what i dont know is how to read the CAN-ID from those received CAN frames in my application,

Any guidance on where to look in the documentation to be able to perform this would be appreciated, thank you.

Re: Detect when a specific CAN-ID has been received in an interface

Posted: Tue 15. Jun 2021, 09:09
by M.Maidhof
Hi,

please have a look in the PCAN-Light or PCANBasic help files or headerfiles. With the Read() function you will receice a message structure in which you have a CAN ID member.

Here an example of the old PCAN-Light (pcan_usb.dll) API:

Code: Select all

// CAN Message
//
typedef struct {
    DWORD ID;        // 11/29 bit identifier
    BYTE  MSGTYPE;   // Bits from MSGTYPE_*
    BYTE  LEN;       // Data Length Code of the Msg (0..8)
    BYTE  DATA[8];   // Data 0 .. 7
} TPCANMsg;
Please have a look in the examples which we deliver with the API packages.

regards

Michael

Re: Detect when a specific CAN-ID has been received in an interface

Posted: Fri 18. Jun 2021, 07:56
by YourAverageDevelope
Thank you i finally accomplished what i wanted, i was not aware that the message structure contained the MSG ID, silly me.

Best regards.