Click here to Skip to main content
15,908,909 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
GeneralRe: CreateWindow fails Pin
ThatsAlok6-Feb-05 23:19
ThatsAlok6-Feb-05 23:19 
GeneralRe: CreateWindow fails Pin
Member 14932147-Feb-05 0:35
Member 14932147-Feb-05 0:35 
GeneralUpdateCommandUI problem Pin
Ro_land6-Feb-05 22:38
Ro_land6-Feb-05 22:38 
GeneralRe: UpdateCommandUI problem Pin
Roger Allen7-Feb-05 3:59
Roger Allen7-Feb-05 3:59 
GeneralRe: UpdateCommandUI problem Pin
Ro_land7-Feb-05 19:00
Ro_land7-Feb-05 19:00 
GeneralLSP Problem Pin
X20406-Feb-05 21:32
X20406-Feb-05 21:32 
GeneraljosephSDK Listview Pin
tijo_joseph@rediffmail.com6-Feb-05 21:31
susstijo_joseph@rediffmail.com6-Feb-05 21:31 
Generalport on/off checking after my program is slow Pin
vc-programmer-6-Feb-05 21:06
vc-programmer-6-Feb-05 21:06 
i using serial Class for my vc++ project.
i check sometime this port is on or off.
(it more than one port) it may be 1 to 3 port.

if port is close(power off),my project is slow.
how can i control my project more faster.




code here
---------

// Serial.cpp

#include "stdafx.h"
#include "Serial.h"

CSerial::CSerial()
{

memset( &m_OverlappedRead, 0, sizeof( OVERLAPPED ) );
memset( &m_OverlappedWrite, 0, sizeof( OVERLAPPED ) );
m_hIDComDev = NULL;
m_bOpened = FALSE;

}

CSerial::~CSerial()
{

Close();

}

BOOL CSerial::Open( int nPort, int nBaud )
{

if( m_bOpened ) return( TRUE );

char szPort[15];
char szComParams[50];
DCB dcb;

wsprintf( szPort, "COM%d", nPort );
m_hIDComDev = CreateFile( szPort, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL );
if( m_hIDComDev == NULL ) return( FALSE );

memset( &m_OverlappedRead, 0, sizeof( OVERLAPPED ) );
memset( &m_OverlappedWrite, 0, sizeof( OVERLAPPED ) );

COMMTIMEOUTS CommTimeOuts;
CommTimeOuts.ReadIntervalTimeout = 0xFFFFFFFF;
CommTimeOuts.ReadTotalTimeoutMultiplier = 0;
CommTimeOuts.ReadTotalTimeoutConstant = 0;
CommTimeOuts.WriteTotalTimeoutMultiplier = 0;
CommTimeOuts.WriteTotalTimeoutConstant = 5000;
SetCommTimeouts( m_hIDComDev, &CommTimeOuts );

wsprintf( szComParams, "COM%d:%d,n,8,1", nPort, nBaud );

m_OverlappedRead.hEvent = CreateEvent( NULL, TRUE, FALSE, NULL );
m_OverlappedWrite.hEvent = CreateEvent( NULL, TRUE, FALSE, NULL );

dcb.DCBlength = sizeof( DCB );
GetCommState( m_hIDComDev, &dcb );
dcb.BaudRate = nBaud;
dcb.ByteSize = 8;
unsigned char ucSet;
ucSet = (unsigned char) ( ( FC_RTSCTS & FC_DTRDSR ) != 0 );
ucSet = (unsigned char) ( ( FC_RTSCTS & FC_RTSCTS ) != 0 );
ucSet = (unsigned char) ( ( FC_RTSCTS & FC_XONXOFF ) != 0 );
if( !SetCommState( m_hIDComDev, &dcb ) ||
!SetupComm( m_hIDComDev, 10000, 10000 ) ||
m_OverlappedRead.hEvent == NULL ||
m_OverlappedWrite.hEvent == NULL ){
DWORD dwError = GetLastError();
if( m_OverlappedRead.hEvent != NULL ) CloseHandle( m_OverlappedRead.hEvent );
if( m_OverlappedWrite.hEvent != NULL ) CloseHandle( m_OverlappedWrite.hEvent );
CloseHandle( m_hIDComDev );
return( FALSE );
}

m_bOpened = TRUE;

return( m_bOpened );

}

BOOL CSerial::Close( void )
{

if( !m_bOpened || m_hIDComDev == NULL ) return( TRUE );

if( m_OverlappedRead.hEvent != NULL ) CloseHandle( m_OverlappedRead.hEvent );
if( m_OverlappedWrite.hEvent != NULL ) CloseHandle( m_OverlappedWrite.hEvent );
CloseHandle( m_hIDComDev );
m_bOpened = FALSE;
m_hIDComDev = NULL;

return( TRUE );

}

BOOL CSerial::WriteCommByte( unsigned char ucByte )
{
BOOL bWriteStat;
DWORD dwBytesWritten;

bWriteStat = WriteFile( m_hIDComDev, (LPSTR) &ucByte, 1, &dwBytesWritten, &m_OverlappedWrite );
if( !bWriteStat && ( GetLastError() == ERROR_IO_PENDING ) ){
if( WaitForSingleObject( m_OverlappedWrite.hEvent, 1000 ) ) dwBytesWritten = 0;
else{
GetOverlappedResult( m_hIDComDev, &m_OverlappedWrite, &dwBytesWritten, FALSE );
m_OverlappedWrite.Offset += dwBytesWritten;
}
}

return( TRUE );

}

int CSerial::SendData( const char *buffer, int size )
{

if( !m_bOpened || m_hIDComDev == NULL ) return( 0 );

DWORD dwBytesWritten = 0;
int i;
for( i=0; i
GeneralRe: port on/off checking after my program is slow Pin
Tom Wright7-Feb-05 11:43
Tom Wright7-Feb-05 11:43 
GeneralRe: port on/off checking after my program is slow Pin
vc-programmer-7-Feb-05 16:12
vc-programmer-7-Feb-05 16:12 
GeneralRe: port on/off checking after my program is slow Pin
Rick Crone9-Feb-05 11:12
Rick Crone9-Feb-05 11:12 
GeneralRe: port on/off checking after my program is slow Pin
vc-programmer-9-Feb-05 20:43
vc-programmer-9-Feb-05 20:43 
GeneralXML creation in vc++ using MSXML Pin
cj_rahul6-Feb-05 20:19
cj_rahul6-Feb-05 20:19 
GeneralRe: XML creation in vc++ using MSXML Pin
ThatsAlok6-Feb-05 20:43
ThatsAlok6-Feb-05 20:43 
General[Q] ActiveX -> MFC control... Pin
rbid6-Feb-05 19:33
rbid6-Feb-05 19:33 
QuestionHow to add Modes in Display setings on windows98 Pin
Anonymous6-Feb-05 18:26
Anonymous6-Feb-05 18:26 
GeneralOpen with... Pin
Anonymous6-Feb-05 17:49
Anonymous6-Feb-05 17:49 
GeneralRe: Open with... Pin
2249176-Feb-05 18:20
2249176-Feb-05 18:20 
GeneralCCommandLineInfo cmdInfo; Pin
Member 9009876-Feb-05 16:12
Member 9009876-Feb-05 16:12 
GeneralRe: CCommandLineInfo cmdInfo; Pin
David Crow7-Feb-05 9:59
David Crow7-Feb-05 9:59 
Generalabout CListCtrl Pin
ika26-Feb-05 14:52
ika26-Feb-05 14:52 
GeneralRe: about CListCtrl Pin
Ryan Binns6-Feb-05 17:04
Ryan Binns6-Feb-05 17:04 
GeneralRe: about CListCtrl Pin
Michael Dunn6-Feb-05 18:52
sitebuilderMichael Dunn6-Feb-05 18:52 
GeneralRe: about CListCtrl Pin
ika27-Feb-05 12:37
ika27-Feb-05 12:37 
GeneralElegant insertion of CBitmap into CRichEditCtrl Pin
Bartosz Bien6-Feb-05 12:44
Bartosz Bien6-Feb-05 12:44 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.