Advertisement
|
[x]
Attachment Details
|
||
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: |
------ global.h file
typedef struct _THREADINFOSTRUCT
{
HWND hWnd;
CString cString;
} THREADINFOSTRUCT;
------ PanelDlg.cpp file:
THREADINFOSTRUCT *myStruct = new THREADINFOSTRUCT;
PanelDlg::DoDataExchange(CDataExchange* pDX)
{
// Some code here...
BEGIN_MESSAGE_MAP(CSubAssemblyPanelDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
// .... more stuff
ON_MESSAGE(WM_ONFLAG1, onFlag1)
ON_MESSAGE(WM_ONFLAG2, onFlag2)
END_MESSAGE_MAP()
}
BOOL PanelDlg::OnInitDialog()
{
// ... some code
MyStruct->hWnd = m_hWnd;
tis->cString = "Main Dialog Thread";
s1Thread = AfxBeginThread(s1.ThreadProc1, myStruct, THREAD_PRIORITY_NORMAL,0,0,0);
s2Thread = AfxBeginThread(s1.ThreadProc2, myStruct, THREAD_PRIORITY_NORMAL,0,0,0);
// ... some code
}
LPARAM PanelDlg::onFlag1(WPARAM wParam, LPARAM lParam)
{
int count, i;
char inchar;
//UpdateData(TRUE);
NumBytesWaiting(ch1,&count);
for (i = 0; i < count; i++)
{
ReceiveByte(ch1, &inchar);
CH1_text.AppendChar(inchar);
}
UpdateData(FALSE); //THIS LINE DOES UPDATE CORRECTLY
return 0;
}
LPARAM PanelDlg::onFlag2(WPARAM wParam, LPARAM lParam)
{
int count, i;
char inchar;
//UpdateData(TRUE);
NumBytesWaiting(ch2,&count);
for (i = 0; i < count; i++)
{
ReceiveByte(ch2, &inchar);
CH2_text.AppendChar(inData.inchar);
}
UpdateData(FALSE); <---DOES NOT UPDATE THE DIALOG BOX!
return 0;
}
---- thread.h file
#define WM_ONFLAG1 (WM_USER+0x101)
#define WM_ONFLAG2 (WM_USER+0x102)
---- thread.cpp file
UINT serial1::ThreadProc1(LPVOID lParam)
{
THREADINFOSTRUCT *tis = (THREADINFOSTRUCT*)lParam;
int status;
int cnt;
while (true)
{
// TODO: add code here
status = Wait_For_Interrupt(ch1, 100); // channel 1 for 100 msec
if (status >= 0)
{
NumBytesWaiting_SER(serial_ch0,&cnt);
if (cnt > 0)
PostMessage(tis->hWnd,WM_ONFLAG1,0,0);
}
}
return 0;
}
UINT serial1::ThreadProc2(LPVOID lParam)
{
THREADINFOSTRUCT *tis = (THREADINFOSTRUCT*)lParam;
int status;
int cnt;
while (true)
{
// TODO: add code here
status = Wait_For_Interrupt(ch2, 100); // channel 2 for 100 msec
if (status >= 0)
{
NumBytesWaiting_SER(serial_ch0,&cnt);
if (cnt > 0)
PostMessage(tis->hWnd,WM_ONFLAG2,0,0);
}
}
return 0;
}
|
|
[x]
The Solution Rating System
|
||
|
With so many solutions, how can you tell which solutions are most likely to help you and which ones are not? To provide you with a tool to use, we rate our solutions based on various elements that most accurately determine if a solution is a quality solution. To explain what factors affect the solution rating, here are the elements we take into consideration when formulating our solution rating.
Your Input Matters If you have any suggestions that you would like to make for our rating system, please ask a question in the Suggestions Zone of Community Support. Thank you! |
||
|
Loading Advertisement... |