Compartilhar via


Using Communication Events

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

A evento de comunicação é uma notificação enviada por Windows Embedded CE para um aplicativo quando ocorre um incidente significativo.

Usando o WaitCommEvent função, um aplicativo pode bloco um segmento até que ocorra um evento específico.

Um chamar para o SetCommMask função especifica qual evento ou eventos devem ocorrer antes que processamento possa continuar.

Quando more than um evento é especificado, qualquer único evento especificado que ocorre causas WaitCommEvent Para retornar.

De exemplo, esse mecanismo permite que um aplicativo para localizar fora quando dados chegam a porta serial. Por aguardando uma comunicação evento que indica dados estiver presente, um aplicativo evita forestalling o porta serial com um chamar para o ReadFile função que aguarda dados para chegar. ReadFile é chamado apenas quando há dados para ler.

O seguinte é eventos de comunicação um aplicativo pode usar com o WaitCommEvent função.

Evento Descrição

EV_BREAK

Um interromper ocorreu na entrada.

EV_CTS

O CTS sinal estado alterado.

EV_DSR

O sinal DSR alterado estado.

EV_ERR

Uma linha-Erro status. Linha-status erros são CE_FRAME, CE_OVERRUN e CE_RXPARITY.

EV_RING

Um indicador de Toque detectado.

EV_RLSD

A recepção-linha - sinal - detecção sinal alterado estado.

EV_RXCHAR

Um caractere foi recebida e colocada na buffer de entrada.

EV_RXFLAG

O caractere evento foi recebida e colocada na buffer de entrada.

EV_TXEMPTY

O último caractere na reserva de saída foi enviada.

Para usar os eventos de comunicação

  1. Especificar eventos para aspecto para com um chamar para o SetCommMask função.

  2. Chamar o WaitCommEvent função.

    Quando um aplicativo especifica more than um evento, a lpEvtMask parâmetro aponta para uma variável que identifica o evento que causou WaitCommEvent Para retornar.

  3. Chamar SetCommMask novamente para especificar quais eventos aspecto para.

SetCommMask é o primeiro chamar em um executar um loop que os aplicativos geralmente usam para monitor um dados porta serial e ler.

O seguinte exemplo de código mostra como usar eventos de comunicação para essa finalidade.

Observação

O seguinte codificar pressupõe que tempos limite está definida para algo relativamente curto. Se tempos limite não estiverem definida, o amostra de código bloqueia em Readfile indefinidamente.

BYTE Byte;
DWORD dwBytesTransferred;

// Specify a set of events to be monitored for the port.
SetCommMask (hPort, EV_RXCHAR | EV_CTS | EV_DSR | EV_RLSD | EV_RING);

while (hPort != INVALID_HANDLE_VALUE) 
{
  // Wait for an event to occur for the port.
  WaitCommEvent (hPort, &dwCommModemStatus, 0);

  // Re-specify the set of events to be monitored for the port.
  SetCommMask (hPort, EV_RXCHAR | EV_CTS | EV_DSR | EV_RING);

  if (dwCommModemStatus & EV_RXCHAR) 
  {
    // Loop for waiting for the data.
    do 
    {
      // Read the data from the serial port.
      ReadFile (hPort, &Byte, 1, &dwBytesTransferred, 0);

      // Display the data read.
      if (dwBytesTransferred == 1)
        ProcessChar (Byte);

    } while (dwBytesTransferred == 1);
  }

See Also

Concepts

Programming Serial Connections