Still trying
It looks liek I am almost there.
The program builds with no errors.
When I execute it the following happens:
Before doing anything I opened the Task Manager and I see Martin1.exe CPU=0
When I send a char into the serial port the CPU=50 and nothing happens.
Any char, even the 0x31 causes cpu=50 and nothing happens on the dialog.
The MessageBox doesnt appear (for testing purposes ONLY).
I can still click buttons on the dialog that do work so it's not hung.
I know for sure I am doing something wrong.
Thanks for the help so far.
Below I think are the pertinent parts of my app.
==============================================================
In Martin1Dlg.h I added near the top:
#define MY_WM_MESSAGE1 (WM_APP + 1)
In "class CMartin1Dlg : public CDialog" I added just above protected:
afx_msg LRESULT OnMyMessage1(UINT wParam, LONG lParam);
==============================================================
Near the top of Martin1Dlg.cpp I have:
UINT WorkerThreadProc( LPVOID Param );
==============================================================
In the message map I added the line before "END_MESSAGE_MAP()"
BEGIN_MESSAGE_MAP(CMartin1Dlg, CDialog)
//{{AFX_MSG_MAP(CMartin1Dlg)
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
//}}AFX_MSG_MAP
ON_MESSAGE(MY_WM_MESSAGE1, OnMyMessage1)
END_MESSAGE_MAP()
==============================================================
In OnInitDialog() before the "return TRUE" I added:
AfxBeginThread(WorkerThreadProc,NULL,THREAD_PRIORITY_NORMAL,0,0,NULL);
==============================================================
Routine to handle the message:
LRESULT CMartin1Dlg::OnMyMessage1(UINT wParam, LONG lParam)
{
AfxMessageBox("Got here");
return 0;
}
==============================================================
The worker thread:
UINT WorkerThreadProc( LPVOID Param ) //Sample function for using in
AfxBeginThread
{
int DataByte=0x00;
int Count=0;
loop:
while(Count == 0){
Count = Port.BytesInReceiveBuffer();
Sleep(100);
}
DataByte=Port.GetByte(18);
if (DataByte == 0x31){
::PostMessage(HWND_BROADCAST, MY_WM_MESSAGE1, (WPARAM)0, (LPARAM)0);
}
goto loop;
return TRUE;
}