⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 demo_01doc.cpp

📁 《Windows CE .NET嵌入式工业用控制器及自动控制系统设计》的源代码
💻 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 + -