LEADTOOLS Multimedia (Leadtools.Multimedia assembly)
LEAD Technologies, Inc

WriteMessage Method

Example 





A System.String containing the message to send to all connected clients.
Sends a text message to all connected clients.
Syntax
[DispIdAttribute(4)]
void WriteMessage( 
   string Message
)
'Declaration
 
<DispIdAttribute(4)>
Sub WriteMessage( _
   ByVal Message As String _
) 
'Usage
 
Dim instance As ILMNetMux
Dim Message As String
 
instance.WriteMessage(Message)
[DispIdAttribute(4)]
void WriteMessage( 
   string Message
)
DispIdAttribute(4)
function LMNetMux.ILMNetMux.WriteMessage( 
   Message 
)
[DispIdAttribute(4)]
void WriteMessage( 
   String^ Message
) 

Parameters

Message
A System.String containing the message to send to all connected clients.
Remarks
On the client side, the message can be received using ReadMessage.
Example
Copy CodeCopy 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
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;
}
Requirements

Target Platforms: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

See Also

Reference

ILMNetMux Interface
ILMNetMux Members

 

 


Products | Support | Contact Us | Copyright Notices

© 2006-2012 All Rights Reserved. LEAD Technologies, Inc.