WorkerAddBroadcast(PcanMessage, Int32) Method

Configures a CAN message to be written periodically.

Definition

Namespace: Peak.Can.Basic
Assembly: PCANBasic.NET (in PCANBasic.NET.dll) Version: 4.9.0
C#
public int AddBroadcast(
	PcanMessage message,
	int interval
)

Parameters

message  PcanMessage
Represents the CAN message to be written when the given interval expires.
interval  Int32
Represents the interval used to write the message periodically.

Return Value

Int32
The index of the registered Broadcast object; -1 otherwise.

Remarks

The amount of Broadcast that can be registered is limited by MaximumBroadcastCount. Trying to configure more than that causes this method to fail.

The accuracy of the transmission interval when using Broadcast objects depend on the amount of data being transmitted and fill state of the driver's transmit queue.

The transmit queue of the driver has a size of 1 MB, enough to allocate up to 32.768 classic CAN messages or 13.000 CAN FD messages. This queue is constantly in observation so that any new entry is processed and physically sent as fast as possible.

The Worker object uses a performance timer to check the time expiration of registered Broadcast objects. When a Broadcast object time outs, the associated CAN message is placed in the device driver's transmit queue, as if the Write method had just been called.

Single Broadcast objects can be temporarily deactivated using the PauseBroadcast method and reactivated again using the ResumeBroadcast method. Using the property MessageBroadcasting is possible to activate/deactivate the Broadcast object processing.

  Note

If a Broadcast object represents a CAN FD message but the PCAN Channel used was not initialized with support for CAN FD, it is automatically deactivated (paused), when this situation is detected.

Example

The following example shows how to configure a Broadcast object.

In case of failure, an error messages is written to the console output using English as output language.

C#
// Create the object using the default configuration
//
Worker myWorker = new Worker();

// Create the CAN message to broadcast
//
PcanMessage message = new PcanMessage(0x100, MessageType.Standard, 3, new byte[] { 1, 2, 3 }, false);

// Add the new broadcast using a CAN message and its interval
//
int index = myWorker.AddBroadcast(message, 100);
if (index < 0)
{
    Console.WriteLine("The broadcast couldn't be configured");
}
else
{
    Console.WriteLine($"The broadcast object with index '{index}' was configured successfully.");

    try
    { 
        // Activate the worker object
        //
        myWorker.Start();
        Console.WriteLine("The Worker object was activated successfully.");

        // Wait sometime for the message to be sent several times
        //
        Console.WriteLine("Broadcast is working....");
        System.Threading.Thread.Sleep(5000);

        // Deactivate the worker object, when it is no longer needed
        //
        myWorker.Stop();
        Console.WriteLine("The Worker object was deactivated.");
    }
    catch(Exception ex)
    {
        Console.WriteLine($"An exception occurred by activating the Worker object. {ex.Message}");
    }
}

Exceptions

ArgumentOutOfRangeExceptionThe interval parameter value is out of range. This must be in the range [1...MaxValue].
ArgumentNullExceptionThe message parameter value is null. An object of type PcanMessage is required.

See Also