GetCommState failed with error 87.

U

uvbaz

Hi,

i'm trying to set the serial port.(XP SP2, Visual Studio 2005). I use
the example code from MSDN "configuring a communications resource".

CreateFile pass through, however GetCommState return 0.With
GetLastError(), i get the error number 87, which means
"ERROR_INVALID_PARAMETER The parameter is incorrect. "
I'm sure the serial port works, because i can use another program to
read/write through it.

thx
Cheng
 
N

Nick Keighley

i'm trying to set the serial port.(XP SP2, Visual Studio 2005). I use
the example code from MSDN "configuring a communications resource".

CreateFile pass through, however GetCommState return 0.With
GetLastError(), i get the error number 87, which means
"ERROR_INVALID_PARAMETER The parameter is incorrect. "
I'm sure the serial port works, because i can use another program to
read/write through it.

this isn't topical to comp.lang.c (even if your program
is written in C!). You need to ask on a Windows related news group.

Since you have an invalid parameter I strongly suggest
you post (to an appropriate ng) a short program that
illustrates your problem.
 
U

uvbaz

this isn't topical to comp.lang.c (even if your program
is written in C!). You need to ask on a Windows related news group.

Since you have an invalid parameter I strongly suggest
you post (to an appropriate ng) a short program that
illustrates your problem.

O.K.
 
A

Antoninus Twink

i'm trying to set the serial port.(XP SP2, Visual Studio 2005). I use
the example code from MSDN "configuring a communications resource".
CreateFile pass through, however GetCommState return 0.With
GetLastError(), i get the error number 87, which means
"ERROR_INVALID_PARAMETER The parameter is incorrect. "
I'm sure the serial port works, because i can use another program to
read/write through it.

Since you have an invalid parameter I strongly suggest
you post [snip]
a short program that illustrates your problem.

O.K.

You forgot to post the short program!
 
U

uvbaz

i'm trying to set the serial port.(XP SP2, Visual Studio 2005). I use
the example code from MSDN "configuring a communications resource".
CreateFile pass through, however GetCommState return 0.With
GetLastError(), i get the error number 87, which means
"ERROR_INVALID_PARAMETER The parameter is incorrect. "
I'm sure the serial port works, because i can use another program to
read/write through it.
Since you have an invalid parameter I strongly suggest
you post [snip]
a short program that illustrates your problem.

You forgot to post the short program!

Sorry.

#include <windows.h>
#include <stdio.h>

int main(int argc, char *argv[])
{
DCB dcb;
HANDLE hCom;
BOOL fSuccess;
char *pcCommPort = "COM1";

hCom = CreateFile( pcCommPort,
GENERIC_READ | GENERIC_WRITE,
0, // must be opened with exclusive-access
NULL, // no security attributes
OPEN_EXISTING, // must use OPEN_EXISTING
0, // not overlapped I/O
NULL // hTemplate must be NULL for comm devices
);

if (hCom == INVALID_HANDLE_VALUE)
{
// Handle the error.
printf ("CreateFile failed with error %d.\n", GetLastError());
return (1);
}

// Build on the current configuration, and skip setting the size
// of the input and output buffers with SetupComm.

fSuccess = GetCommState(hCom, &dcb);

if (!fSuccess)
{
// Handle the error.
printf ("GetCommState failed with error %d.\n", GetLastError());
return (2);
}

// Fill in DCB: 57,600 bps, 8 data bits, no parity, and 1 stop bit.

dcb.BaudRate = CBR_57600; // set the baud rate
dcb.ByteSize = 8; // data size, xmit, and rcv
dcb.Parity = NOPARITY; // no parity bit
dcb.StopBits = ONESTOPBIT; // one stop bit

fSuccess = SetCommState(hCom, &dcb);

if (!fSuccess)
{
// Handle the error.
printf ("SetCommState failed with error %d.\n", GetLastError());
return (3);
}

printf ("Serial port %s successfully reconfigured.\n", pcCommPort);
return (0);
}
 
J

jacob navia

uvbaz said:
On 14 Apr., 15:47, Nick Keighley <[email protected]>
wrote:
i'm trying to set the serial port.(XP SP2, Visual Studio 2005). I use
the example code from MSDN "configuring a communications resource".
CreateFile pass through, however GetCommState return 0.With
GetLastError(), i get the error number 87, which means
"ERROR_INVALID_PARAMETER The parameter is incorrect. "
I'm sure the serial port works, because i can use another program to
read/write through it.
Since you have an invalid parameter I strongly suggest
you post [snip]
a short program that illustrates your problem.
O.K.
You forgot to post the short program!

Sorry.

#include <windows.h>
#include <stdio.h>

int main(int argc, char *argv[])
{
DCB dcb;
HANDLE hCom;
BOOL fSuccess;
char *pcCommPort = "COM1";

hCom = CreateFile( pcCommPort,
GENERIC_READ | GENERIC_WRITE,
0, // must be opened with exclusive-access
NULL, // no security attributes
OPEN_EXISTING, // must use OPEN_EXISTING
0, // not overlapped I/O
NULL // hTemplate must be NULL for comm devices
);

if (hCom == INVALID_HANDLE_VALUE)
{
// Handle the error.
printf ("CreateFile failed with error %d.\n", GetLastError());
return (1);
}

// Build on the current configuration, and skip setting the size
// of the input and output buffers with SetupComm.

fSuccess = GetCommState(hCom, &dcb);

if (!fSuccess)
{
// Handle the error.
printf ("GetCommState failed with error %d.\n", GetLastError());
return (2);
}

// Fill in DCB: 57,600 bps, 8 data bits, no parity, and 1 stop bit.

dcb.BaudRate = CBR_57600; // set the baud rate
dcb.ByteSize = 8; // data size, xmit, and rcv
dcb.Parity = NOPARITY; // no parity bit
dcb.StopBits = ONESTOPBIT; // one stop bit

fSuccess = SetCommState(hCom, &dcb);

if (!fSuccess)
{
// Handle the error.
printf ("SetCommState failed with error %d.\n", GetLastError());
return (3);
}

printf ("Serial port %s successfully reconfigured.\n", pcCommPort);
return (0);
}

I compiled that, and I get
d:\lcc\mc71\test>tport
Serial port COM1 successfully reconfigured.

What is the problem?

Maybe you have a misconfiguration in your machine?
 
F

Flash Gordon

uvbaz wrote, On 15/04/08 09:09:
On 14 Apr., 15:47, Nick Keighley <[email protected]>
wrote:
i'm trying to set the serial port.(XP SP2, Visual Studio 2005). I use
the example code from MSDN "configuring a communications resource".
CreateFile pass through, however GetCommState return 0.With
GetLastError(), i get the error number 87, which means
"ERROR_INVALID_PARAMETER The parameter is incorrect. "
I'm sure the serial port works, because i can use another program to
read/write through it.
Since you have an invalid parameter I strongly suggest
you post [snip]
a short program that illustrates your problem.
O.K.
You forgot to post the short program!

Sorry.

#include <windows.h>

<snip>

Now try posting it to a windows group as was suggested in the text that
Antoninus Twink snipped, something I'm sure he did deliberately to
misrepresent what Nick Keighley wrote.

If you post to a Windows group lots of people who know about Windows
specific problems will see you post and be able to answer, if you post
here there are far fewer experts on Windows.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,756
Messages
2,569,534
Members
45,007
Latest member
OrderFitnessKetoCapsules

Latest Threads

Top