cdholding image

comm64 home
comm64 download
comm64 forum
buy comm64

CommEvent

Retrieves a numerical event code indicating the most recent communications event or error.

MSComm32 and SComm64 have the same behavior.

  Syntax n = SComm1.CommEvent
     
  value A numeric expression containing the numeric event code being one of the following
    SCommLib.OnCommConstants.  
  1 comEvSend
There are fewer than SThreshold number of characters in the transmit buffer.
  2 comEvReceive
There are more than RThreshold number of characters in the receive buffer.
  3 comEvCTS
Change in Clear To Send line.
 
  4 comEvDSR
Change in Data Set Ready line.
  5 comEvCD
Change in Carrier Detect line.
 
       6 comEvRing
Ring detected. Some hardware may not support this event.
  7 comEvEOF
End Of File character received.
 
       
     
  1001 comEventBreak
A Break signal was received.
 
  1004 comEventFrame
The hardware detected a framing error.
 
  1006 comEventOverrun
The hardware could not receive data fast enough and some was lost
  1008 comEventRxOver
Receive Buffer Overflow. There is no room in the receive buffer. Some data was lost
  1009 comEventRxParity
Parity Error. The hardware detected a parity error.
  1010 comEventTxFull
Transmit Buffer Full. The transmit buffer was full while trying to queue a character.
  1011 comEventDCB
An error occurred while setting up the Windows Com driver.
          Example  
 

If SComm1.CommEvent > 1000 then
      MessageBox.Show ("A communications ERROR occurred")
End If

   

Remarks:

The CommEvent property returns a number so, in Visual Basic, you can write code like this:-

   If SComm1.CommEvent = 2 Then
      Textbox1.AppendText( SComm1.Input )
   End If

If you prefer to use the constant names instead of the numbers - to make your code easier to read - then you can rewrite the above example like this

   If SComm1.CommEvent = SCommLib.OnCommConstants.comEvReceive then
      Textbox1.AppendText( SComm1.Input )
   End If

Note that the syntax is the same as MSComm32 except SCommLib instead of MSCommLib

 

Info for C# Developers.

Visual Basic, a weakly typed language, can directly compare numbers against the constant name as shown in the above example. But developers using C#, a stronger typed language, (if they want to use constant name instead of numbers) will need to explicitly cast the constant name to a number value. For example:

   if ( SComm1.CommEvent == (short) SCommLib.OnCommConstants.comEvReceive )
   {
         Textbox1.AppendText( SComm1.Input );
   }

Notice the cast to (short). MSComm32 was written many years ago and the numeric constants inside MSComm, such as the CommEvent property, are 16bit integers. Our SComm64 is a new component and we could have used .Net int integer instead. But to maintain code compatibility with MSComm32 we decided to use the same short integer types as MSComm32.

 

 

 
Copyright (c) 2016 Axis Controls Ltd