|
You have some values of your database and know you want to read them and eneter to web controls,whats problem? does IHTMLDocument* helpful for you?
|
|
|
|
|
Hello everyone,
I wrote a program to read GPS sentence from Serial Port of an PDA, the code works well at low baudrate,for example 4800. But when I Transfer it to an heigh speed device baudrate at 38400 it does not work.
I have already found the problem lays at the flowing code:
if(ClearCommError(port->m_hComm,&errCode,&comState) == TRUE)
result = ReadFile(port->m_hComm,m_readbuf,comState.cbInQue,&nLength,NULL);
comState.cbInQue always return 0, so ReadFile reads nothing.
Does anyone know any reason to this problem? thanks
|
|
|
|
|
COM-Ports often are very "individual" in timing. Try wait funtion or change some settings.
Supports the PDA this data rate?
Greetings from Germany
|
|
|
|
|
You have to use overlapped IO when you are using serial ports. And handling overlapped IO can be rather difficult.
There are quite a few articles about serial comm here at CP.
Use the code from one of them, they all use overlapped IO.
Alcohol. The cause of, and the solution to, all of life's problems - Homer Simpson
|
|
|
|
|
First, you have to make sure that the PDA device supports the baudrate you're trying to use like KarstenK suggested.
Second, you should really use overlapped I/O (asynchronous), as kakan also suggested for many reasons.
One reason that may not be so obvious is that any code you post may seem all right at a glance, but suffers from timing issues since it is supposed to be synchronous which makes it hard for us to help you. When you're not using overlapped I/O, the serial port driver can only complete one IRP at a time, which means that while you're blocking on a read operation you cannot issue a write operation.
Read this article[^] to get started with overlapped I/O.
"It's supposed to be hard, otherwise anybody could do it!" - selfquote "High speed never compensates for wrong direction!" - unknown
|
|
|
|
|
Thank you all.
Sorry I forgot to tell the target operating system is WM5.0, and as I know it doesn't support Overlapped IO for Serial port. Please inform me if it's not correct.
The parameters to Set up the com is right, and if i change my code like this, it works all right
if(ClearCommError(port->m_hComm,&errCode,&comState) == TRUE)
result = ReadFile(port->m_hComm,m_readbuf,512,&nLength,NULL);
So, I'm wondering why comState.cbInQue equals 0 while It is fine at low baud rate
|
|
|
|
|
Is it possible to Dynamically change the Tabbing order in a Dialog When It is actually Excecuting.
Bram van Kampen
|
|
|
|
|
Bram van Kampen wrote: Is it possible to Dynamically change the Tabbing order in a Dialog When It is actually Excecuting.
Use SetWindowPos without specifying SWP_NOZORDER . The hwndInsertAfter parameter decides which control precedes this control of yours in the tabbing order. Look up MSDN on SetWindowPos and hwndInsertAfter .
Nibu thomas
Microsoft MVP for VC++
Code must be written to be read, not by the compiler, but by another human being.
Programming Blog: http:\\nibuthomas.wordpress.com
|
|
|
|
|
Get the Gist, Could you give a Minuscule Example of what and where,
Regards
Bram van Kampen
|
|
|
|
|
Bram van Kampen wrote: Could you give a Minuscule Example of what and where,
Sure!
Follow these steps...
- Add two buttons to a fresh dialog in a sequencial order, IDC_BUTTON1 and IDC_BUTTON2
- Goto OnInitDialog(you are not restricted to OnInitDialog, you can also do this on a button click) and paste this line of code
GetDlgItem( IDC_BUTTON1 )->SetWindowPos( GetDlgItem( IDC_BUTTON2 ),
0, 0, 0, 0,
SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE ); - So now run the dialog and you will see that
the focus is on the second button i.e. IDC_BUTTON2 , I am invoking SetWindowPos on IDC_BUTTON1 and hwndInsertAfter is IDC_BUTTON2 hence IDC_BUTTON1 is moved down in the ZOrder after IDC_BUTTON2 .
So this is how we dynamically change the Z-Order or tab order.
Nibu thomas
Microsoft MVP for VC++
Code must be written to be read, not by the compiler, but by another human being.
Programming Blog: http:\\nibuthomas.wordpress.com
|
|
|
|
|
Got it in One,
Thanx a Lot
Bram van Kampen
|
|
|
|
|
|
Got it in One,
Thanx a lot
Bram van Kampen
|
|
|
|
|
|
Thanks to Everybody who replied. The Answer was Obvious, I made the Common mistake of not seeing the Forrest from the Trees, and trying to solve the problem at ha!
Regards to All:
Bram
Bram van Kampen
|
|
|
|
|
I have done some mistakes regarding of using TRUE / FALSE for
SetCheck / GetCheck method of CButton (they have to use BST_CHECK/BST_UNCHECK,I've got it mixed up with GetCheck/SetCheck of CListCtrl).
But It run ok since both TRUE/BST_CHECK are definced as 1
and FALSE/BST_CHECK are defined as 0
Is this considered a serious bug ? Should I make a patch ?
Sometime I wish they could use an enum for these parameters
in stead of just defined value.
|
|
|
|
|
|
Actually there was no error.
I use the wrong parameter for SetCheck function.
I wrote :
m_comboButton.SetCheck(TRUE);
m_comboButton.SetCheck(FALSE);
while I should write
m_comboButton.SetCheck(BST_CHECK);
m_comboButton.SetCheck(BST_UNCHECK);
The program has already been shipped and I fear that it might cause
a problem In the future (I test it on xp/vista and it work fine)
|
|
|
|
|
You mean, BST_CHECKED and BST_UNCHECKED.
Although, for the sake of good programming style and code readability, it's good to use those constants when calling CButton::SetCheck (may be also the third value BST_INDETERMINATE for three-state button), that is not a reason to worry in your particular case.
BST_CHECKED and BST_UNCHECKED constants have the same values like TRUE and FALSE respectively:
#define BST_UNCHECKED 0x0000<br />
#define BST_CHECKED 0x0001
#define FALSE 0<br />
#define TRUE 1
Ovidiu Cucu
Microsoft MVP - Visual C++
|
|
|
|
|
ovidiucucu wrote: BST_CHECKED and BST_UNCHECKED constants have the same values like TRUE and FALSE respectively:
#define BST_UNCHECKED 0x0000
#define BST_CHECKED 0x0001
#define FALSE 0
#define TRUE 1
I think he alread knows...
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
|
|
|
|
|
xanagan666 wrote: Is this considered a serious bug ?
IMHO NO!
(1) Probably MS developers defined the MACROs keeping an eye on compatibility with TRUE/FALSE pair.
(2) Probably They will never change that values.
xanagan666 wrote: Should I make a patch ?
IMHO you'll include these minor fixes in a patch addressing major ones (maybe never?).
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
|
|
|
|
|
Thank everyone for your answer/solution .
I will be more careful in the future.
|
|
|
|
|
I try to simulate a mouse left button down, mouse move and then left mouse button up. I want to send this events to another app (a game) to drag and drop and item. Here is what i did:
I created a timer firing every 1 sec to get the job done in steps.
step1
SetCursorPos(m_dFromX,m_dFromY);
step2
::SetFocus(wnd); //my games window's handle
::SendMessage(wnd,WM_LBUTTONDOWN,0,0);
step3
SetCursorPos(m_dToX,m_dToY);
step4
::SendMessage(wnd,WM_LBUTTONUP,0,0);
Here is what happens:
Mouse moves to first position, clicks there, then moves to the second position but it seems like the game is detecting the real mouse button state (which isn't down) and doesn't drag the item. I assume that the game is using GetAsyncKeyState to retrieve the mouse buttons' states.
Is there a way to force mouse buttons states to down or is there another way to simulate this events ?
|
|
|
|
|
Maybe check out mouse_event()[^]
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|