|
Doesn't Cedric's answer satisfy your query ?
l_d wrote: www.codeguru.com/Cpp/I-N/network/serialcommunications/article.php/c5395
Are you talking about this function ?
BOOL CSerialPort::WriteByte(BYTE bybyte)
{
iBytesWritten=0;
if(WriteFile(hComm,&bybyte,1,&iBytesWritten,NULL)==0)
return false;
else return true;
}
If you want to use DWORD, you need to modify it to,
BOOL CSerialPort::WriteByte(DWORD dWord)
{
iBytesWritten=0;
if(WriteFile(hComm,&dWord,sizeof(DWORD),&iBytesWritten,NULL)==0)
return false;
else return true;
}
-- modified at 4:01 Friday 23rd February, 2007
Corrected typo.
|
|
|
|
|
Well, that's a solution but it is not very convenient to modify the function so that it can support everything you want to transmit .
I looked at the article but I don't really see the added value of it. Yes, of course, it is perfect when you want to send bytes but when you have more complex datatypes then it becomes a pain in the sense that you need to use masks and bit shifting
|
|
|
|
|
thanks for Prasad& you for looking at the article.I understood what u both meant and modified but even then when i am reading back the value in that edit box i am getting garbage value.
can anyone please suggest me any other method when i want to send very large values that too many values if possible in an array accepting from different edit boxes.
|
|
|
|
|
Well, if you modified the code accordingly to what prasad said, you need of course to do the same for the Read function (so that it can read DWORD and not bytes).
|
|
|
|
|
Actually, I dont wanted to read the article, as it was to much for me to read whole article, because OP dont want to paste relevent code.
So I looked in to WriteFile part of article and give him suggestion.
|
|
|
|
|
Yes sure the same for me. In fact the post was not intended as a 'rant' to you but more to the article itself. That's not very flexible to only be able to send bytes. It would have been much more convenient to be able to send a buffer (if the buffer size is 1, then you only send one byte).
|
|
|
|
|
To write data to a serial port, you provide tha address of a buffer and the size of data to transmit. So if you want to send your DWORD, you simply need to do this:
DWORD dwMydata = 61118792;
WriteFile(...., &dwMyData, sizeof(DWORD), ....);
|
|
|
|
|
how to write a merge sort program using COM?
|
|
|
|
|
How it is related to COM ? COM is not a language. Have search on internet for same ?
|
|
|
|
|
meet_kirankumar wrote: how to write a merge sort
Here[^] is an example.
meet_kirankumar wrote: using COM
Write a MergeSort function or class then call it.
|
|
|
|
|
Hi,
I need to change the background color of a CStaic control to white color.
How can i do this ?
Thanks.
|
|
|
|
|
Handle WM_CTLCOLOR
HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if(nCtlColor==CTLCOLOR_STATIC)
{
pDC->SetBkColor(RGB(255,255,255));
}
return hbr;
}
|
|
|
|
|
Hi,
I tried this. But that is not changing all pixels of CStatic window. This changes only the text background color of CStatic window.
I need to change the color of whole CStatic window.
Thanks.
|
|
|
|
|
You said in your OP, you want change background color of CStatic.
Try this code,
HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if(nCtlColor==CTLCOLOR_STATIC)
{
pDC->SetBkMode(TRANSPARENT);
hbr = CreateSolidBrush(RGB(255,255,255));
}
return hbr;
}
|
|
|
|
|
|
C an any body tell me how 2 create frames in VC++ with buttons in detail prosedure.
|
|
|
|
|
Are asking this with respect to MFC or SDK?
|
|
|
|
|
Hi, I have a dialog box which has vertical scroll style enabled. The problem is, when i pull the scroll button down the controls in the dialog box move down. But when i pull the scroll button up the controls does not move up. The code which i have used is listed below
void CMyPropertyDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar *pScrollBar)
{
// TODO: Add your message handler code here and/or call default
CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
SetScrollPos( SB_VERT , nPos , TRUE ) ;
ScrollWindow( 0 , GetScrollPos( SB_VERT ) ) ;
}
please help
-- modified at 0:03 Friday 23rd February, 2007
|
|
|
|
|
The second parameter for ScrollWindow, yAmount must be a negative value to scroll up.
My idea is to take a member var which stores the previous pos, compare to see the direction and write code accordingly.
HTH,
Murali Krishna
|
|
|
|
|
Hi all, this is my first message. i want to configure system timer for say 1msec exact, how to achive the perfact timing requirement in VC++, i have to transmit some message at every 1msec, at serial port. can anyone suggest how to do this.
|
|
|
|
|
|
Your link is broken.
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
|
|
|
|
|
shriram_ch wrote: i have to transmit some message at every 1msec, at serial port
I'm almost positive that you can't possibly send discreet messages this fast, especially over a COM port. Your control code will need time to execute, and we're talking at least 3ms just to iterate the loop and send the message.
shriram_ch wrote: i want to configure system timer for say 1msec exact, how to achive the perfact timing requirement in VC++
Since the Sleep() function doesn't have that kind of granularity (depending on the platform, the best you can get out of it is about 25ms), you're going to need a higher-resolution timer.
There are a couple of articles here on CP that talk about high resolution timers.
http://www.codeproject.com/cpp/precisetimer.asp[^]
http://www.codeproject.com/datetime/perftimer.asp[^]
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
|
|
|
|
|
You probably won't be able to get 1ms regardless of what you use in Windows - it's not a RTOS.
You may want to look at the Waitable Timer API:
http://msdn2.microsoft.com/en-us/library/ms687012.aspx[^]
e.g.
- Create a watiable timer:
HANDLE TimerHnd = CreateWaitableTimer(NULL, FALSE, NULL);
- Create a job thread
- start loop
- WaitForSingleObject(TimerHnd, INFINITE);
- send message on serial port
- continue loop
- Set the waitable timer
SetWaitableTimer(TimerHnd, &due, 1, NULL, NULL, FALSE);
...
- Kill timer: (due = 0)
SetWaitableTimer(TimerHnd, &due, 0, NULL, NULL, FALSE);
CancelWaitableTimer(TimerHnd);
- Tell thread to exit, wait for it to exit
- CloseHandle(TimerHnd);
...cmk
Save the whales - collect the whole set
|
|
|
|
|
Hi,
I am using Winsock(only TCP) and I wondered when a client really connects to a server. With connecting I mean the whole process of establishing a TCP connection (that means Handshake, and so on). Is this done via the connect(...) function or is it every time done when the client sends data to the server by the send(...) function?
The background of my question is, that I have a client app and I make a call to the connect() function when I initialize the client app. Now the user can choose between different actions, which asks the server for some data. That means, that there is only data send when the user chooses one of this actions; actually he can do nothing all the time. Is the way I do it okay, or would it be better to connect only to the server when the user chooses a specific action and then disconnect again (doing this then for every action)?
|
|
|
|
|