|
Hello i'm using a neverending loop to read informations from the COM but the problem is that the reading process blocks my aplication. Not to listen to the COM all the time is not an option. What should I do to use the aplication in this time?
|
|
|
|
|
Can you put the reading process in a thread?
Somethings seem HARD to do, until we know how to do them.
_AnShUmAn_
|
|
|
|
|
I don't get it. What do you mean? Be more specific, please.
|
|
|
|
|
tanarnelinistit wrote:
neverending loop to read informations from the COM
Why don't you put this loop inside a thread function to read the COM port>?if you do so you can keep on reading the COM port in the thread and leave your main application's thread working.
Somethings seem HARD to do, until we know how to do them.
_AnShUmAn_
|
|
|
|
|
Create a worker thread and put your
<br />
do<br />
{<br />
}while;<br />
loop inside the Thread function.
<marquee scrollamount="1" scrolldelay="1" direction="up" height="10" step="1">--[ ]--
[My Current Status]
I dont know why the hell the script for voting 5 is disabled only for me??
|
|
|
|
|
and how do i create a worker thread?
|
|
|
|
|
simple... Follow these steps :
you have a function. ReadCOM() . You dont want this to block your application.
declare these in your header may be COMPROG.h
<br />
static UINT MyThread(LPVOID lp);<br />
void ReadCOM();<br />
in the implementation,
COMPROG.cpp<br />
AfxBeginThread(MyThread,this);
Your Thread:
<br />
UINT MyThread(LPVOID lp)<br />
{<br />
CCOMPROG* obj = (CCOMPROG*)lp;
obj->ReadCOM(); <br />
}<br />
Your Fcuntion:
<br />
void ReadCom()<br />
{<br />
do<br />
{<br />
}while(x==true);
}<br />
|
|
|
|
|
Thanks a lot I folowed your code but ended up with the folowing error message : error C4716: 'CMina_sView::MyThread' : must return a value; i tryed to insert a return 0 or return TRUE but that wasn't much of a help as I got the same result: program blocked. so??!?
|
|
|
|
|
it has a return type of UINT
so do this, I missed it
return(0); Now it should work. Otherwise you tell me. we'll kill it.
also that , when you put your "readCOM()" function inside the class,
implement it with your class(CCOMPROG) refernce like void CCOMPROG::readCOM()
<marquee scrollamount="1" scrolldelay="1" direction="up" height="10" step="1">--[ ]--
[My Current Status]
I dont know why the hell the script for voting 5 is disabled only for me??
|
|
|
|
|
I'm afraid someone will have to get killed. ) Let me tell you how i modified your code:
1) I use an OnListenComm() function that is as the name tells us: a function auto-defined by VC++ that handles the code when you click on listencom button.
2)The modifications:
static UINT MyThread(LPVOID lp);
afx_msg void OnListenCom1();
AfxBeginThread(MyThread,this);// Where should i put this???????
UINT CMina_sView::MyThread(LPVOID lp)
{
CMina_sView* obj = (CMina_sView*)lp; //To access the ReadCOM function, or you can pass any function, with using the void pointer.
obj->OnListenCom1();
return 0;
}
|
|
|
|
|
It depends on when you want to start the thread. For example, you have CButton , If you wanna start listening to COM on the click of it, put the AfxBeginThread inside the OnClick Event of the CButton. You can do that anywhere.
<marquee scrollamount="1" scrolldelay="1" direction="up" height="10" step="1">--[ ]--
[My Current Status]
I dont know why the hell the script for voting 5 is disabled only for me??
|
|
|
|
|
|
Read here.
"Money talks. When my money starts to talk, I get a bill to shut it up." - Frank
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
You can also poll the COM port; this isn't necessarily the nicest design, but it may work. See the function SetCommTimeouts to set read timeouts. In fact, you may want to do this in either case; your thread can block reading the port and wake up every 1s to check if it is time to quit the application.
Save yourself a bunch of hassle and do a bit of reading about thread safety issues now before you do a bunch of work.
earl
|
|
|
|
|
Hi,
I am a newbie to image processing and c++. Actually, i have a web cam running, i need to snap shot consecutive pictures and convert each picture into a 2D array storing intensity(integer).
If i have 2 picture namely picture 1 and picture 2:
Picture 1 -- First 2 D array
Picture 2 -- Second 2D array
A comparison have to be done with the two 2 D array to find the differences.
I have no idea on how should i start the project, anyone can assist me pls?
Thanks
|
|
|
|
|
Look at the Api BITMAPINFO AND BITMAPFILEHEADER in MSDN and also the book windows programming by charles petzold.In the book look into BITMAPINFO and BITMAPFILEHEADER apis.
|
|
|
|
|
Try searching CodeProject for "video capture" or "webcams" - look for a sample application which captures frames of video to memory.
If you set the webcam / capture routine to capture 8-bit Black & White (monochrome), these captured images are really just 2D arrays of intensity (for 8-bit monochrome, each pixel is an intensity value in the range 0 to 255.)
If you capture in colour, you will have to convert the colour information of each pixel to an equivalent intensity value. I'd guess there are libraries to do that sort of thing.
Find a suitable project to start with, try playing around, then ask specific, detailed questions about any problems you encounter.
|
|
|
|
|
|
hi all,
I have created a property sheet wizard using the below procedures:
Projects >> Add to Project >> Components & Controls
Select the Directory Visual C++ Components
Select the Property Sheet Component
Click the Insert Button.
Problem is that wizard is displaying a "help" button which i want to make invisible.Can anyone kindly tell me how to make the help button invisible.
|
|
|
|
|
befor u call the AddPage() funtion, do as below
m_Page1.m_psp.dwFlags &= ~PSP_HASHELP;
AddPage(&m_Page1);
nave
|
|
|
|
|
Hi,
I have done that then also it is displaying HELP button.
|
|
|
|
|
well in that case, on the OnInitDialog of the CPropertySheet derived class, call the following code
CWnd *p = GetDlgItem( IDHELP );
if( p != 0 )
{
p->ShowWindow( SW_HIDE );
}
nave
|
|
|
|
|
hi,
Thanks very much.It worked.
|
|
|
|
|
There is an linking error
please tell me how i set the path of its
mailing me
Yogi
|
|
|
|
|
Hey you !!!!!
not only you spam the board by creating a new thread instead of answering the one you began previously, but you still ask the same SH*T
give us the description of the error. only then we will be able to understand what's going on. otherwise, go to hell.
|
|
|
|