📄 demo_01doc.cpp
字号:
// Demo_01Doc.cpp : implementation of the CDemo_01Doc class
//
#include "stdafx.h"
#include "Demo_01.h"
#include "Demo_01Doc.h"
#include "Demo_01View.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//----------------- Demo_01 add -------------------
#include "RS232_DLG.h"
#include "TCPIP_COM.h"
static int MINUTE, SECOND, NSEC, OLD_NSEC=-1, INIT_FLAG=-1;
static DWORD OLD_MS;
void get_nsec_time(void);
/*-------------------------------------------------------------------------*/
/* get system tick and set NSEC SECOND */
/*-------------------------------------------------------------------------*/
void get_nsec_time(void)
{
DWORD ms, max;
unsigned char *cptr;
int delta;
ms= GetTimeTicks();
if(INIT_FLAG==-1) // initial set, when program start
{
OLD_MS= ms;
NSEC= 0;
SECOND= 0;
MINUTE= 0;
INIT_FLAG=0;
return;
}
if(ms >= OLD_MS) delta= (int)(ms - OLD_MS);
else
{
cptr= (unsigned char *)&max;
*(cptr)= 0xFF;
*(cptr+1)= 0xFF;
*(cptr+2)= 0xFF;
*(cptr+3)= 0xFF;
delta= (int) ((max- OLD_MS) + ms);
}
NSEC= NSEC + delta;
if(NSEC >= 1000)
{
SECOND= SECOND + NSEC/1000;
if(SECOND >=60)
{
SECOND= SECOND - 60;
MINUTE= MINUTE+1;
if(MINUTE >= 60) MINUTE= MINUTE - 60;
}
NSEC= NSEC % 1000;
}
OLD_MS= ms;
}
/*...........................................................................*/
/* Timer Display Thread */
/*...........................................................................*/
UINT TimerThreadProc( LPVOID lpParam )
{
// Get a THREAD_INFO pointer from the
// parameter that was passed in.
CDemo_01Doc* pDoc;
CString msg;
SYSTEMTIME t;
int year, month, day, hour, minute, second, nsec;
Sleep(3000);
THREAD_INFO *lpThreadInfo = (THREAD_INFO *) lpParam;
pDoc= (CDemo_01Doc *)lpThreadInfo->hWnd;
msg.Format(_T("Timer Thread Start"));
pDoc->DisplayItem(1, 1, msg);
while(1)
{
GetLocalTime(&t);
year=t.wYear ;
month=t.wMonth ;
day=t.wDay ;
hour=t.wHour ;
minute=t.wMinute ;
second=t.wSecond ;
// nsec =t.wMilliseconds ; // always zero in WinCE System
get_nsec_time();
nsec =NSEC ;
msg.Format(_T("%04d/%02d/%02d %02d:%02d:%02d %4d"), year, month, day, hour, minute, second, NSEC);
pDoc->DisplayItem(1, 2, msg);
Sleep(100);
}
return 0;
}
/*...........................................................................*/
/* TCP/IP Communication Thread */
/*...........................................................................*/
UINT TCPThreadProc( LPVOID lpParam )
{
// Get a THREAD_INFO pointer from the
// parameter that was passed in.
CDemo_01Doc* pDoc;
CString msg;
int type, protocol, sin_len, err, i;
long set;
SOCKET socket_hd, socket_cln; // Socket Handle
SOCKADDR_IN sin, ssin;
char data[1024];
TCHAR Tdata[1024];
Sleep(3000);
THREAD_INFO *lpThreadInfo = (THREAD_INFO *) lpParam;
pDoc= (CDemo_01Doc *)lpThreadInfo->hWnd;
msg.Format(_T("TCP/IP Thread Start"));
pDoc->DisplayItem(4, 1, msg);
type = SOCK_STREAM; // TCP/IP
protocol = 0; // always 0
socket_hd = socket( PF_INET, type, protocol );
memset( (char *)&sin, 0, sizeof(sin) );
sin.sin_family = AF_INET;
// INADDR_ANY is a 32bits zero value
sin.sin_addr.s_addr = htonl(INADDR_ANY);
sin.sin_port = htons( 9600); // TCP Port No. 9600
bind(socket_hd, (struct sockaddr *)&sin, sizeof(sin) );
listen( socket_hd, 32 ); // listen 32 coming socket
sin_len= sizeof(ssin);
socket_cln = accept(socket_hd, (struct sockaddr *)&ssin , &sin_len );
msg.Format(_T("Remote connect socket ID=%d"), socket_cln);
pDoc->DisplayItem(4, 1, msg);
// Set Block mode for recv()
set = 0;
ioctlsocket(socket_cln, FIONBIO, (unsigned long*) &set);
//
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -