Article View: borland.public.cppbuilder.nativeapi
Article #6242How can i set the Parity Bit to 0 or 1 as i want ?
From: Ramy
Date: Sun, 29 May 2005 12:22
Date: Sun, 29 May 2005 12:22
109 lines
7028 bytes
7028 bytes
Hi, down below is the function that i use to initiate my com port,
for some messages i need to set the Parity Bit to '1', and for
other messages i need to reset this bit to '0', how do i do that?
Thanks!
Ramy.
int InitCommunication( void )
{
COMMTIMEOUTS read_timeout; // timeout structure
char com_params[60];
char ComName[30];
HANDLE ComHndl = NULL;
DCB my_DCB; // device control block structure
if ( SystemInfo.ErrorInfo.Status != NO_ERRORS ) // If Error -> Exit
return 0;
if ( SystemInfo.ComInfo.ComHandle ) // If Port already open
{
CloseHandle( SystemInfo.ComInfo.ComHandle ); // Close Port
SystemInfo.ComInfo.ComHandle = NULL; // Reset Port Handle
}
my_DCB.DCBlength= sizeof( my_DCB ); // Sizeof(DCB)
my_DCB.BaudRate = SystemInfo.ComInfo.BaudRate; // Current baud rate
my_DCB.fBinary = true; // Binary mode, no EOF check
my_DCB.ByteSize = 8; // Number of bits/byte, 4-8
my_DCB.Parity = NOPARITY; // 0-4=no,odd,even,mark,space
my_DCB.StopBits = 1; // 0, 1, 2 = 1, 1.5, 2
my_DCB.fOutxCtsFlow = 0; // CTS output flow control
my_DCB.fOutxDsrFlow = 0; // DSR output flow control
my_DCB.fDtrControl = DTR_CONTROL_ENABLE; // DTR flow control type
my_DCB.fDsrSensitivity = 0; // DSR sensitivity
my_DCB.fTXContinueOnXoff = 0; // XOFF continues Tx
my_DCB.fOutX = 0; // XON/XOFF out flow control
my_DCB.fInX = 0; // XON/XOFF in flow control
my_DCB.fErrorChar = 0; // Enable error replacement
my_DCB.fNull = false; // Enable null stripping
my_DCB.fRtsControl = RTS_CONTROL_ENABLE; // RTS flow control
my_DCB.fAbortOnError = 0; // Abort reads/writes on error
my_DCB.XonLim = 50; // Transmit XON threshold
my_DCB.XoffLim = 50; // Transmit XOFF threshold
my_DCB.XonChar = 0; // Tx and Rx XON character
my_DCB.XoffChar = 0; // Tx and Rx XOFF character
my_DCB.ErrorChar = 0; // Error replacement character
my_DCB.EofChar = 0; // End of input character
my_DCB.EvtChar = 0; // Received event character
read_timeout.ReadIntervalTimeout = 0; // Read Interval Timeout
read_timeout.ReadTotalTimeoutMultiplier = 0; // Read Total Timeout Multiplier
read_timeout.ReadTotalTimeoutConstant = SystemInfo.ComInfo.RxTimeout; // Read Total Timeout Constant
read_timeout.WriteTotalTimeoutMultiplier = 0; // Write Total Timeout Multiplier
read_timeout.WriteTotalTimeoutConstant = SystemInfo.ComInfo.TxTimeout; // Write Total Timeout Constant
strcpy( com_params, SystemInfo.ComInfo.ComPort ); // Prepare com_params
strcpy( ComName, SystemInfo.ComInfo.ComPort ); // Set ComName
switch ( SystemInfo.ComInfo.BaudRate )
{
case CBR_9600:
strcat( com_params, ":9600, N, 8, 1" ); // Prepare COM Parameters
break;
case CBR_14400:
strcat( com_params, ":14400, N, 8, 1" ); // Prepare COM Parameters
break;
case CBR_19200:
strcat( com_params, ":19200, N, 8, 1" ); // Prepare COM Parameters
break;
case CBR_38400:
strcat( com_params, ":38400, N, 8, 1" ); // Prepare COM Parameters
break;
case CBR_56000:
strcat( com_params, ":56000, N, 8, 1" ); // Prepare COM Parameters
break;
case CBR_57600:
strcat( com_params, ":57600, N, 8, 1" ); // Prepare COM Parameters
break;
case CBR_115200:
strcat( com_params, ":115200, N, 8, 1" ); // Prepare COM Parameters
break;
};
ComHndl = CreateFile( ComName, GENERIC_WRITE + GENERIC_READ, 0, NULL, // Open the asked Com Port
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );
if ( ComHndl == INVALID_HANDLE_VALUE ) // Check COM Handle
return FAIL;
if ( !BuildCommDCB( com_params, &my_DCB ) ) // Fills DCB Structure with Com Values
return FAIL;
if ( !SetCommState( ComHndl, &my_DCB ) ) // Configures Com Port
return FAIL;
if ( !SetCommTimeouts( ComHndl, &read_timeout ) ) // Set Tx & Rx Timeouts
return FAIL;
SystemInfo.ComInfo.ComHandle = ComHndl; // Set Communication Handle
return PASS; // COM Init was successful
}
Technical Details
Message-ID:
<4299b415$1@newsgroups.borland.com>Path:
arc1-ca.pugleaf.net!g2news1.google.com!news3.google.com!news.glorb.com!meganewsservers.com!feeder2.on.meganewsservers.com!news-out.newsgroups.com!propagator2-sterling.newsfeeds.com!in.nntp.be!caladan.landsraad.net!newsgroups.borland.com!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Thread: 10cc67,cb603903b4ecd1d3,start X-Google-Attributes: gid10cc67,public X-Google-Language: ENGLISH,ASCII-7-bit From: "Ramy" <Ramy@NoMail.com> Sender: "Ramy" <Ramy@NoMail.com> Reply-To: "Ramy" <Ramy@NoMail.com> Subject: How can i set the Parity Bit to 0 or 1 as i want ? Newsgroups: borland.public.cppbuilder.nativeapi X-User-Info: 62.0.27.159 NNTP-Posting-Host: 207.105.83.66 Message-ID: <4299b415$1@newsgroups.borland.com> Date: 29 May 2005 05:22:45 -0700 X-Trace: newsgroups.borland.com 1117369365 207.105.83.66 (29 May 2005 05:22:45 -0700) Lines: 110 Path: arc1-ca.pugleaf.net!g2news1.google.com!news3.google.com!news.glorb.com!meganewsservers.com!feeder2.on.meganewsservers.com!news-out.newsgroups.com!propagator2-sterling.newsfeeds.com!in.nntp.be!caladan.landsraad.net!newsgroups.borland.com!not-for-mail