LEADTOOLS Multimedia (Leadtools.Multimedia assembly) Send comments on this topic. | Back to Introduction | Help Version 17.0.3.22
WriteMessage Method
See Also 
LMNetMux Namespace > ILMNetMux Interface : WriteMessage Method



Message
A System.String containing the message to send to all connected clients.
Message
A System.String containing the message to send to all connected clients.
Sends a text message to all connected clients.

Syntax

Visual Basic (Declaration) 
<DispIdAttribute(4)>
Sub WriteMessage( _
   ByVal Message As String _
) 
Visual Basic (Usage)Copy Code
Dim instance As ILMNetMux
Dim Message As String
 
instance.WriteMessage(Message)
C# 
[DispIdAttribute(4)]
void WriteMessage( 
   string Message
)
C++/CLI 
[DispIdAttribute(4)]
void WriteMessage( 
   String^ Message
) 

Parameters

Message
A System.String containing the message to send to all connected clients.

Example

Visual BasicCopy Code
Public _result As Boolean = False
Public _serverAndClient As CaptureAndPlayCtrlForm = New CaptureAndPlayCtrlForm()
Private _msgSent As Boolean = False
Private _captureCtrl As CaptureCtrl
Private _playCtrl As PlayCtrl
Private _pMux As LMNetMux
Private _pDemux As LMNetDmx

Private Const _networkUrl As String = "ltsf://127.0.0.1:27015" ' network stream url
Private Const TestMessage As String = "LEAD NETWORK"

Public Sub WriteMessageExample()
   ' reference the capture control
   _captureCtrl = _serverAndClient.CaptureCtrl

   ' reference the play control
   _playCtrl = _serverAndClient.PlayCtrl

   Try
      ' try to find a video camera
      If _captureCtrl.VideoDevices("Logitech") Is Nothing Then
         Throw New Exception("No Logitech video device available")
      End If

      _captureCtrl.VideoDevices("Logitech").Selected = True

      ' select a video compressor
      _captureCtrl.VideoCompressors.Mpeg4.Selected = True

      ' set the target output file
      _captureCtrl.TargetFormat = TargetFormatType.NET
      _captureCtrl.TargetFile = _networkUrl

      If _captureCtrl.IsModeAvailable(CaptureMode.Video) Then
         ' just 10 seconds of capture time
         _captureCtrl.TimeLimit = 10
         _captureCtrl.UseTimeLimit = True

         _captureCtrl.Preview = True

         ' subscribe to the started and progress events for this example
         ' we will connect a client after the capture starts
         ' and send a test message after 5 seconds.
         AddHandler _captureCtrl.Started, AddressOf CaptureCtrl_Started
         AddHandler _captureCtrl.Progress, AddressOf CaptureCtrl_Progress

         ' ready the capture graph in order to get the LNMetMux instance
         _captureCtrl.ReadyCapture(CaptureMode.Video)

         ' get the network multiplexer reference
         _pMux = TryCast(_captureCtrl.GetSubObject(CaptureObject.TargetFilter), LMNetMux)

         If Not _pMux Is Nothing Then
            ' set some mux settings
            _pMux.LiveSource = True
         End If

         ' start capture
         _captureCtrl.StartCapture(CaptureMode.Video)

         ' we'll loop on the state and pump messages for this example.
         ' but you should not need to if running from a Windows Forms application.
         Do While _captureCtrl.State = CaptureState.Running OrElse _playCtrl.State = PlayState.Running
            Application.DoEvents()
         Loop

         ' release the mux and demux COM objects
         If Not _pMux Is Nothing Then
            Marshal.ReleaseComObject(_pMux)
         End If

         If Not _pDemux Is Nothing Then
            Marshal.ReleaseComObject(_pDemux)
         End If
      End If
   Catch e1 As Exception
      _result = False
   End Try
End Sub

Private Sub CaptureCtrl_Progress(ByVal sender As Object, ByVal e As ProgressEventArgs)
   ' for this test we will send a message after 
   ' 5 secs of capture time
   If e.time > 5000 AndAlso (Not _msgSent) Then
      _pMux.WriteMessage(TestMessage)
      Console.WriteLine("Server sent message")
      _msgSent = True
   End If
End Sub

Private Sub CaptureCtrl_Started(ByVal sender As Object, ByVal e As EventArgs)
   StartClient()
End Sub

Private Sub StartClient()
   _playCtrl.SourceFile = _networkUrl
   _pDemux = TryCast(_playCtrl.GetSubObject(PlayObject.Splitter), LMNetDmx)

   _serverAndClient.TestTimer.Interval = 100
   AddHandler _serverAndClient.TestTimer.Tick, AddressOf PlayTimer_Tick
   _serverAndClient.TestTimer.Start()
End Sub

Private Sub PlayTimer_Tick(ByVal sender As Object, ByVal e As EventArgs)
   _serverAndClient.TestTimer.Enabled = False
   If Not _pDemux Is Nothing Then
      Dim msg As String = _pDemux.ReadMessage()

      ' set the result to what we expect
      If msg = TestMessage Then
         _result = True
         Console.WriteLine("Client received message")
      End If
   End If
   _serverAndClient.TestTimer.Enabled = True
End Sub
C#Copy Code
public bool _result = false;
public CaptureAndPlayCtrlForm _serverAndClient = new CaptureAndPlayCtrlForm();
bool _msgSent = false;
CaptureCtrl _captureCtrl;
PlayCtrl _playCtrl;
LMNetMux _pMux;
LMNetDmx _pDemux;

const string _networkUrl = @"ltsf://127.0.0.1:27015"; // network stream url
const string TestMessage = "LEAD NETWORK";

public void WriteMessageExample()
{
   // reference the capture control
   _captureCtrl = _serverAndClient.CaptureCtrl;

   // reference the play control
   _playCtrl = _serverAndClient.PlayCtrl;

   try
   {
      // try to find a video camera
      if (_captureCtrl.VideoDevices["Logitech"] == null)
         throw new Exception("No Logitech video device available");

      _captureCtrl.VideoDevices["Logitech"].Selected = true;

      // select a video compressor
      _captureCtrl.VideoCompressors.Mpeg4.Selected = true;

      // set the target output file
      _captureCtrl.TargetFormat = TargetFormatType.NET;
      _captureCtrl.TargetFile = _networkUrl;

      if (_captureCtrl.IsModeAvailable(CaptureMode.Video))
      {
         // just 10 seconds of capture time
         _captureCtrl.TimeLimit = 10;
         _captureCtrl.UseTimeLimit = true;

         _captureCtrl.Preview = true;

         // subscribe to the started and progress events for this example
         // we will connect a client after the capture starts
         // and send a test message after 5 seconds.
         _captureCtrl.Started += new EventHandler(CaptureCtrl_Started);
         _captureCtrl.Progress += new ProgressEventHandler(CaptureCtrl_Progress);

         // ready the capture graph in order to get the LNMetMux instance
         _captureCtrl.ReadyCapture(CaptureMode.Video);

         // get the network multiplexer reference
         _pMux = _captureCtrl.GetSubObject(CaptureObject.TargetFilter) as LMNetMux;

         if (_pMux != null)
         {
            // set some mux settings
            _pMux.LiveSource = true;
         }

         // start capture
         _captureCtrl.StartCapture(CaptureMode.Video);

         // we'll loop on the state and pump messages for this example.
         // but you should not need to if running from a Windows Forms application.
         while (_captureCtrl.State == CaptureState.Running
               || _playCtrl.State == PlayState.Running)
         {
            Application.DoEvents();
         }

         // release the mux and demux COM objects
         if (_pMux != null)
            Marshal.ReleaseComObject(_pMux);

         if (_pDemux != null)
            Marshal.ReleaseComObject(_pDemux);
      }
   }
   catch (Exception)
   {
      _result = false;
   }
}

void CaptureCtrl_Progress(object sender, ProgressEventArgs e)
{
   // for this test we will send a message after 
   // 5 secs of capture time
   if (e.time > 5000 && !_msgSent)
   {
      _pMux.WriteMessage(TestMessage);
      Console.WriteLine("Server sent message");
      _msgSent = true;
   }
}

void CaptureCtrl_Started(object sender, EventArgs e)
{
   StartClient();
}

private void StartClient()
{
   _playCtrl.SourceFile = _networkUrl;
   _pDemux = _playCtrl.GetSubObject(PlayObject.Splitter) as LMNetDmx;

   _serverAndClient.TestTimer.Interval = 100;
   _serverAndClient.TestTimer.Tick += new EventHandler(PlayTimer_Tick);
   _serverAndClient.TestTimer.Start();
}

void PlayTimer_Tick(object sender, EventArgs e)
{
   _serverAndClient.TestTimer.Enabled = false;
   if (_pDemux != null)
   {
      string msg = _pDemux.ReadMessage();

      // set the result to what we expect
      if (msg == TestMessage)
      {
         _result = true;
         Console.WriteLine("Client received message");
      }
   }
   _serverAndClient.TestTimer.Enabled = true;
}

Remarks

On the client side, the message can be received using ReadMessage.

Requirements

Target Platforms: Microsoft .NET Framework 2.0, Windows 2000, Windows XP, Windows Server 2003 family, Windows Server 2008 family, Windows Vista, Windows 7

See Also