On Feb 18, 10:47 pm, Joseph M. Newcomer <newco...@flounder.com> wrote:
See below...
On 18 Feb 2007 04:50:37 -0800, "hari" <haricib...@gmail.com> wrote:
On Feb 15, 11:55 pm, "Ian Semmel" <any...@rocketcomp.com.au> wrote:
Well, you will have to post your code as you are doing something wrong.
"hari" <haricib...@gmail.com> wrote in message
news:1171519961.779878.11500@a75g2000cwd.googlegroups.com...
On Feb 15, 1:02 am, "Ian Semmel" <any...@rocketcomp.com.au> wrote:
Also, you can use ::GetLastError () to find out why it is failing
"hari" <haricib...@gmail.com> wrote in message
news:1171455246.402743.203120@k78g2000cwa.googlegroups.com...
Hi all,
I m communicating to a printer device through serial port.It
is failing to open the port,but when I disable and enable the com port
in device manager,it works fine(i.e)it communicates with the printer
and reads the configuration settings of the printer).
Regards
Hari- Hide quoted text -
- Show quoted text -
Hi all,
thanx for reply.My Function SetCommTimeouts fails(returns
0). GetlastError returns 1(Incorrect function).but when I disable and
enable the com ports in device manager,it works fine(SetCommTimeouts
returns a non zero number(success)).- Hide quoted text -
- Show quoted text -
/*hCOM = CreateFile( lpFileName, //PrinterPort
GENERIC_READ | GENERIC_WRITE, //Read & write
0, //Share Mode
NULL, //Security Handle
OPEN_ALWAYS, //Open the existing
****
This would be OPEN_EXISTING
****> FILE_FLAG_OVERLAPPED, //Overlapped
0 ); */
hCOM = CreateFile( lpFileName,
GENERIC_ALL,//GENERIC_WRITE,
0,//FILE_SHARE_READ |
FILE_SHARE_WRITE,
****
0 is exclusive
****> NULL,
OPEN_EXISTING,
0,//FILE_ATTRIBUTE_NORMAL,
NULL );
//Template file
if( NULL == hCOM) return( FALSE );
****
Always write as two lines, with return(FALSE) on the second line
Of course, this test is meaningless, because a failing CreateFile would not return NULL; I
suggest reading the documentation. Look for the term INVALID_HANDLE_VALUE. It is right
in the section that talks about what CreateFile returns if it fails. It is always a good
idea to read the documentation.
You should also call ::GetLastError, and if nothing else, ASSERT(FALSE) so you can see
what went wrong.
****> dwError = GetLastError();
****
Meaningless unless the API failed. Since it nominally succeeded by the time you get here,
this call is pointless.
****> memset( &overlappedRead, 0, sizeof( OVERLAPPED ) );
memset( &overlappedWrite, 0, sizeof( OVERLAPPED ) );
****
It is always a bad idea to use variables in a code example without showing where their
declarations are.
Learn to use ::ZeroMemory instead of the 1975-era memset (it just looks more obvious what
is going on)
****
COMMTIMEOUTS CommTimeOuts;
dwError1 = GetCommTimeouts(hCOM, &CommTimeOuts);
This is the code ,when I change OPEN_EXISTING to OPEN_ALWAYS ,it gives
error code 183 (Cannot create a file when that file already exists).
****
Not terribly surprising, because OPEN_ALWAYS is erroneous.
****>I
think the problem is with the Createfile .But I didnt understand,why
everything goes fine when I disable and enable the com port in device
manager.
****
Since you neither test for the error correctly nor check ::GetLastError if it CreateFile
fails, it is hard to tell what went wrong.
****
I m communicating to a printer device through serial port and
querying the configuartion of the printer,When I install the printer
it is not communicating with the printer,but once I disable and enable
the com port in devicd manager.it is working.
Joseph M. Newcomer [MVP]
email: newco...@flounder.com
Web:http://www.flounder.com
MVP Tips:http://www.flounder.com/mvp_tips.htm- Hide quoted text -
- Show quoted text -
handles.but GetCommState function failed.