コード例 #1
0
// Set communication timeout
void ser_set_timeout_ms( ser_handler id, u32 timeout )
{
  if( timeout == SER_NO_TIMEOUT )
    ser_win32_set_timeouts(  (HANDLE)id, MAXDWORD, 0, 0, 0, 0 );
  else if( timeout == SER_INF_TIMEOUT )
    ser_win32_set_timeouts( (HANDLE)id, 0, 0, 0, 0, 0 );
  else
    ser_win32_set_timeouts( (HANDLE)id, 0, 0, timeout, 0, 0 );
}
コード例 #2
0
ファイル: serial_win32.c プロジェクト: Theemuts/eLuaBrain
// Helper: set communication timeout
static int ser_set_timeout_ms( HANDLE hComm, u32 timeout )
{
    if( timeout == SER_NO_TIMEOUT )
        return ser_win32_set_timeouts( hComm, MAXDWORD, 0, 0, 0, 0 );
    else if( timeout == SER_INF_TIMEOUT )
        return ser_win32_set_timeouts( hComm, 0, 0, 0, 0, 0 );
    else
        return ser_win32_set_timeouts( hComm, 0, 0, timeout, 0, 0 );
}
コード例 #3
0
ファイル: serial_win32.c プロジェクト: Theemuts/eLuaBrain
int ser_setup( ser_handler id, u32 baud, int databits, int parity, int stopbits, int flow )
{
    HANDLE hComm = id->hnd;
    DCB dcb;
    dcb.DCBlength = sizeof(DCB);

    if( GetCommState( hComm, &dcb ) == FALSE )
    {
        CloseHandle( hComm );
        return SER_ERR;
    }
    dcb.BaudRate = baud;
    dcb.ByteSize = databits;
    dcb.Parity = parity == SER_PARITY_NONE ? NOPARITY : ( parity == SER_PARITY_EVEN ? EVENPARITY : ODDPARITY );
    dcb.StopBits = stopbits == SER_STOPBITS_1 ? ONESTOPBIT : ( stopbits == SER_STOPBITS_1_5 ? ONE5STOPBITS : TWOSTOPBITS );
    dcb.fBinary = TRUE;
    dcb.fDsrSensitivity = FALSE;
    dcb.fParity = parity != SER_PARITY_NONE ? TRUE : FALSE;
    dcb.fOutX = FALSE;
    dcb.fInX = FALSE;
    dcb.fNull = FALSE;
    /**/ dcb.fAbortOnError = FALSE;
    dcb.fOutxDsrFlow = FALSE;
    dcb.fDtrControl = DTR_CONTROL_DISABLE;
    dcb.fDsrSensitivity = FALSE;
    if( flow == SER_FLOW_NONE )
    {
        dcb.fRtsControl = RTS_CONTROL_DISABLE;
        dcb.fOutxCtsFlow = FALSE;
    }
    else
    {
        dcb.fRtsControl = RTS_CONTROL_HANDSHAKE;
        dcb.fOutxCtsFlow = TRUE;
    }
    if( SetCommState( hComm, &dcb ) == FALSE )
    {
        CloseHandle( hComm );
        return SER_ERR;
    }

    if( ser_win32_set_timeouts( hComm, 0, 0, 0, 0, 0 ) == SER_ERR )
    {
        CloseHandle( hComm );
        return SER_ERR;
    }

    FlushFileBuffers( hComm );

    return SER_OK;
}
コード例 #4
0
ファイル: serial_win32.c プロジェクト: ARMinARM/elua
int ser_setup( ser_handler id, u32 baud, int databits, int parity, int stopbits )
{
  HANDLE hComm = ( HANDLE )id;
  DCB dcb;
  
  if( GetCommState( hComm, &dcb ) == FALSE )
  {
    CloseHandle( hComm );
    return SER_ERR;
  }
  dcb.BaudRate = baud;
  dcb.ByteSize = databits;
  dcb.Parity = parity == SER_PARITY_NONE ? NOPARITY : ( parity == SER_PARITY_EVEN ? EVENPARITY : ODDPARITY );
  dcb.StopBits = stopbits == SER_STOPBITS_1 ? ONESTOPBIT : ( stopbits == SER_STOPBITS_1_5 ? ONE5STOPBITS : TWOSTOPBITS );
  dcb.fBinary = TRUE;
  dcb.fDsrSensitivity = FALSE;
  dcb.fParity = parity != SER_PARITY_NONE ? TRUE : FALSE;
  dcb.fOutX = FALSE;
  dcb.fInX = FALSE;
  dcb.fNull = FALSE;
  /**/ dcb.fAbortOnError = FALSE;
  dcb.fOutxCtsFlow = FALSE;
  dcb.fOutxDsrFlow = FALSE;
  // dcb.fDtrControl = DTR_CONTROL_DISABLE; -- prevents data being read with LM3S eval board
  dcb.fDsrSensitivity = FALSE;
  dcb.fRtsControl = RTS_CONTROL_DISABLE;
  dcb.fOutxCtsFlow = FALSE;

  if( !SetCommState( hComm, &dcb ) )
  {
    CloseHandle( hComm );
    return SER_ERR;
  }
  if( ser_win32_set_timeouts( hComm, 0, 0, 0, 0, 0 ) == SER_ERR )
  {
    CloseHandle( hComm );
    return SER_ERR;
  }
  
  FlushFileBuffers( hComm );

  return SER_OK;
}