Re: Serial Communication in Visual C++
Ok, here's the whole function for initializing the comm port....
bool CCommTalk::InitPort(LPCSTR szPortName, LPCSTR szDCB){
ClosePort();
DCB Parms;
bool bInit = false;
m_hCommPort = INVALID_HANDLE_VALUE;
for (;;) {
m_hCommPort = CreateFile (
szPortName,
GENERIC_READ|GENERIC_WRITE,
0 ,
NULL ,
OPEN_EXISTING,
FILE_ATTRIBUTE_SYSTEM,
NULL
);
if (m_hCommPort == INVALID_HANDLE_VALUE)
break;
if (!GetCommState(m_hCommPort, &Parms))
break;
Parms.BaudRate = CBR_9600;
Parms.ByteSize = 8;
Parms.Parity = NOPARITY;
Parms.StopBits = ONESTOPBIT;
SetCommState(m_hCommPort, &Parms);
if (!SetCommState(m_hCommPort, &Parms))
break;
bInit = true;
break;
}
if (!bInit) {
CloseHandle(m_hCommPort);
m_hCommPort=INVALID_HANDLE_VALUE;
}
return bInit;
};
-Ryan
"Carl Daniel [VC++ MVP]" <cpdaniel_remove_this_and_nospam@mvps.org.nospam>
wrote in message news:%23IEI$$J7GHA.3620@TK2MSFTNGP04.phx.gbl...
"Ryan Neuhart" <ryan@bihrle.com> wrote in message
news:z1SWg.33625$iA5.27860@dukeread11...
Hello,
I am communicating with a programmable power supply using an RS-232
interface through Visual Studio and having a slight problem. The power
supply documentation supplied very little information about communicating
this way except for the following:
Baud Rate: 1200, 2400, 4800, or 9600
Parity Bit: none
Data Bit: 8 bits
Stop Bit: 1 stop bit
Data flow control: none
I have set up a DCB (Platform SDK) structure in code and am able to
actually
communicate with the power supply and it carries out the action I ask it
to,
but it is painfully slow (on the order of 2-3 seconds per command). The
following is what I have set up in code (as far as serial parameters are
concerned):
DCB Parms;
Parms.BaudRate = CBR_9600;
Parms.ByteSize = 8;
Parms.Parity = NOPARITY;
Parms.StopBits = ONESTOPBIT;
and again, this works, but it is running way too slow for the current
purposes. I have carried out the same actions through MATLAB's serial
interface and also just through HyperTerminal (Start
Menu-->Accessories-->Communications) and the power supply responds
instantaneously to inputs through those interfaces.
Can anybody provide any guidance as to what I can do to achieve
instantaneous responses through Visual Studio? Thanks in advance.
Your problem lies in code you haven't shown. Please post a minimal
program that reproduces the problem you're seeing. It's not uncommon that
in the process of producing a minimal example, you'll discover what's
wrong with your application.
-cd