基于MMS的智能变电站源码(转)

 

转自:http://blog.sina.com.cn/s/blog_70c2b75601014ztp.html

附录服务器源程序

 

// TCP服务器程序Dlg.cpp : implementation file

 

#include "stdafx.h"

#include "TCP服务器程序.h"

#include "TCP服务器程序Dlg.h"

 

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

 

CString str13;

CString track_str;

CString rec_id; //用来提示接收到的数据

CString send_str; //Client发送是数据载体

CString text[12]; //用来存储12节点的参数

CString ch_para;

 

// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog

{

public:

CAboutDlg();

enum { IDD = IDD_ABOUTBOX };

 

protected:

virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support

protected:

DECLARE_MESSAGE_MAP()

};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)

{

}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

}

 

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)

END_MESSAGE_MAP()

 

// CTCPDlg dialog

 

CTCPDlg::CTCPDlg(CWnd* pParent )

: CDialog(CTCPDlg::IDD, pParent)

{

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

n=0;

}

 

void CTCPDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

}

 

BEGIN_MESSAGE_MAP(CTCPDlg, CDialog)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_MESSAGE(WM_SOCKET,OnSocket)

ON_BN_CLICKED(IDC_SEND, OnSend)

ON_WM_TIMER()

END_MESSAGE_MAP()

 

//设备参数模拟

void Simulate()

{

int temp,i;

 

//断路器参数

int temperature[3],states[3];

 

for (i=0; i<3; i++)

{

temp = rand();

temperature[i] = 50 + temp;

states[i] = rand()%2;

 

text[i].Format("Temperature:%d℃ States:%d",temperature[i],states[i]);

}

 

//电流互感器参数

float current[4];

float temp_c;

int protect_c[4];

 

for (i=0; i<4; i++)

{

temp_c = (float)(70 + rand())/10;

current[i] = temp_c;

protect_c[i] = rand()%2;

 

text[i+3].Format("Current: %.1f A Protect_or_Not: %d",current[i],protect_c[i]);

}

 

//电压互感器参数

int voltage[4];

int temp_v;

int protect_v[4];

 

for (i=0; i<5; i++)

{

temp_v = 220 + (rand());

voltage[i] = temp_v;

protect_v[i] = rand()%2;

 

text[i+3+4].Format("Voltage: %d V Protect_or_Not: %d",voltage[i],protect_v[i]);

}

 

}

 

BOOL CTCPDlg::OnInitDialog()

{

CDialog::OnInitDialog();

 

// IDM_ABOUTBOX must be in the system command range.

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX < 0xF000);

 

CMenu* pSysMenu = GetSystemMenu(FALSE);

if (pSysMenu != NULL)

{

CString strAboutMenu;

strAboutMenu.LoadString(IDS_ABOUTBOX);

if (!strAboutMenu.IsEmpty())

{

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

}

}

 

// Set the icon for this dialog.  The framework does this automatically

SetIcon(m_hIcon, TRUE); // Set big icon

SetIcon(m_hIcon, FALSE); // Set small icon

 

// TODO: Add extra initialization here

SetTimer(1, 10000, 0);

 

//struct sockaddr addr; 端口和IP处理

addr.sin_family=AF_INET;

addr.sin_port=htons(80);

 

addr.sin_addr.S_un.S_addr=INADDR_ANY;

 

//启动CSocket

WORD wVersionRequested;

WSADATA wsaData;

wVersionRequested = MAKEWORD( 2, 2 );

WSAStartup(wVersionRequested, &wsaData);

 

s=::socket(AF_INET,SOCK_STREAM,0);

::bind(s,(sockaddr*)&addr,sizeof(addr));

 

::listen(s,5);

::WSAAsyncSelect(s,this->m_hWnd,WM_SOCKET,FD_ACCEPT|FD_READ);

 

GetDlgItem(IDC_TEXT)->EnableWindow(false);

GetDlgItem(IDC_SENDTEXT)->EnableWindow(false);

 

GetDlgItem(IDC_ADDR)->SetWindowText("服务器监听已经启动!");

 

GetDlgItem(IDC_TEXT)->SetWindowText("*******服务器连接*******\r\n");

GetDlgItem(IDC_TEXT)->GetWindowText(str);

 

str+="\r\n";

GetDlgItem(IDC_SENDTEXT)->GetWindowText(str1);

str+=str1;

 

GetDlgItem(IDC_TEXT)->SetWindowText(str);

return TRUE;  // return TRUE  unless you set the focus to a control

}

 

void CTCPDlg::OnSysCommand(UINT nID, LPARAM lParam)

{

if ((nID & 0xFFF0) == IDM_ABOUTBOX)

{

CAboutDlg dlgAbout;

dlgAbout.DoModal();

}

else

{

CDialog::OnSysCommand(nID, lParam);

}

}

 

void CTCPDlg::OnPaint() 

{

if (IsIconic())

{

CPaintDC dc(this); // device context for painting

 

SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

 

// Center icon in client rectangle

int cxIcon = GetSystemMetrics(SM_CXICON);

int cyIcon = GetSystemMetrics(SM_CYICON);

CRect rect;

GetClientRect(&rect);

int x = (rect.Width() - cxIcon + 1) / 2;

int y = (rect.Height() - cyIcon + 1) / 2;

 

// Draw the icon

dc.DrawIcon(x, y, m_hIcon);

}

else

{

CDialog::OnPaint();

}

}

 

// The system calls this to obtain the cursor to display while the user drags

//  the minimized window.

HCURSOR CTCPDlg::OnQueryDragIcon()

{

return (HCURSOR) m_hIcon;

}

 

//socket动作处理函数

void CTCPDlg::OnSocket(WPARAM wParam,LPARAM lParam)

{

char cs[100]={0};

switch (lParam)

{

case FD_ACCEPT:

{

GetDlgItem(IDC_ADDR)->SetWindowText("服务器监听已经启动!!!!!");

 

str13.Format("\r\n建立连接……\r\n");

GetDlgItem(IDC_TEXT)->SetWindowText(str13);

int lenth=sizeof(add1);     

s1 = ::accept(s,(sockaddr*)&add1,&lenth);

str13.Format("\r\n建立连接……\r\n连接成功\r\n");

GetDlgItem(IDC_ADDR)->SetWindowText(str13);

n = n+1;

str13.Format("\r\n%d客户已经连接上了\r\n",n);

GetDlgItem(IDC_TEXT)->SetWindowText(str13);

str13 += ::inet_ntoa(add1.sin_addr);

str13 += "\r\n登陆\r\n";

GetDlgItem(IDC_TEXT)->SetWindowText(str13);

GetDlgItem(IDC_TEXT)->SetWindowText("\r\n连接成功\r\n客户端说:你好!");

}

break;

        

case FD_READ:

GetDlgItem(IDC_TEXT)->SetWindowText("接收数据……\r\n");

GetDlgItem(IDC_TEXT)->SetWindowText(str13);

CString num = "";

::recv(s1,cs,100,0);

GetDlgItem(IDC_TEXT)->GetWindowText(num);

num += "\r\n客户机";

num += (LPTSTR)::inet_ntoa(add1.sin_addr);

num += "对您说:";

num += (LPTSTR)cs;

 

//指令处理

if ( strncmp(cs, "0CHANGED", 8) == 0)

{

text[0] = (LPTSTR)cs;

text[0].Delete(0,8);

 

}

if (strncmp(cs, "1CHANGED",8) ==0)

{

text[1] = (LPTSTR)cs;

text[1].Delete(0,8);

}

if (strncmp(cs, "2CHANGED",8) ==0)

{

text[2] = (LPTSTR)cs;

text[2].Delete(0,8);

}

else

{

SetTimer(1,10000,0);

//对接收到的数据处理

if (!strcmp(cs, "0"))

{

rec_id.Format("\r\n0号断路器数据请求\r\n");

send_str = text[0];

}

if (!strcmp(cs, "1"))

{

rec_id.Format("\r\n1号断路器数据请求\r\n");

send_str = text[1];

}

if (!strcmp(cs, "2"))

{

rec_id.Format("\r\n2号断路器数据请求\r\n");

send_str = text[2];

}

if (!strcmp(cs, "3"))

{

rec_id.Format("\r\n0号电流耦合器数据请求\r\n");

send_str = text[3];

}

if (!strcmp(cs, "4"))

{

rec_id.Format("\r\n1号电流耦合器数据请求\r\n");

send_str = text[4];

}

if (!strcmp(cs, "5"))

{

rec_id.Format("\r\n2号电流耦合器数据请求\r\n");

send_str = text[5];

}

if (!strcmp(cs, "6"))

{

rec_id.Format("\r\n3号电流耦合器数据请求\r\n");

send_str = text[6];

}

if (!strcmp(cs, "7"))

{

rec_id.Format("\r\n0号电压耦合器数据请求\r\n");

send_str = text[7];

}

if (!strcmp(cs, "8"))

{

rec_id.Format("\r\n1号电压耦合器数据请求\r\n");

send_str = text[8];

}

if (!strcmp(cs, "9"))

{

rec_id.Format("\r\n2号电压耦合器数据请求\r\n");

send_str = text[9];

}

if (!strcmp(cs, "10"))

{

rec_id.Format("\r\n3号电压耦合器数据请求\r\n");

send_str = text[10];

}

if (!strcmp(cs, "11"))

{

rec_id.Format("\r\n4号电压耦合器数据请求\r\n");

send_str = text[11];

}

 

}

 

//跟踪信息的处理

track_str = send_str;

num = num + rec_id;

GetDlgItem(IDC_TEXT)->SetWindowText(num);

 

//自动调用发送数据函数向客户端发送数据

OnSend();

}

 

break;

}

 

}

//给客户机发送数据

void CTCPDlg::OnSend() 

{

// TODO: Add your control notification handler code here

CString str = "*******";

if(str == " ")

{

MessageBox("消息不能为空!");

}

else

{

if(::send(s1,send_str.GetBuffer(1),strlen(send_str),0)!=SOCKET_ERROR)

{

str.Format("\r\n消息已经发送到客户端!\r\n");

str += "\r\n";

str += track_str;

}

else

{

str.Format("\r\n消息发送失败!\r\n");

str += track_str;

str += "\r\n";

}

GetDlgItem(IDC_TRACKEDIT)->SetWindowText(str);

}

}

 

void CTCPDlg::OnTimer(UINT nIDEvent) 

{

// TODO: Add your message handler code here and/or call default

 

CDialog::OnTimer(nIDEvent);

 

//每秒钟数据刷新一下

Simulate();

 

//动态显示时、分、秒

    COleDateTime time = COleDateTime::GetCurrentTime() ; 

CString str ; 

str.Format("%.2d:%.2d:%.2d" ,time.GetHour(), time.GetMinute(), time.GetSecond()) ;

 

//送到文本框中显示

GetDlgItem(IDC_SENDTEXT)->SetWindowText(str) ;

 

//动态显示年、月、日

COleDateTime data = COleDateTime::GetCurrentTime ();

CString s;

s.Format ("%.4d/%.2d/%.2d", data.GetYear (), data.GetMonth (), data.GetDay ());

 

//送到文本框中显示

GetDlgItem(IDC_SENDTEXT2)->SetWindowText(s);

}

附录客户端源程序

 

#include "stdafx.h"

#include "TCP客户端程序.h"

#include "TCP客户端程序Dlg.h"

#include   <mmsystem.h>   

#pragma   comment(lib,   "winmm.lib")

 

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

 

int i; //循环变量

int id = -1; //节点ID

int find_flag = 0; //允许查找设备标志

CString display; //显示传输过来的数据

CString changed_parameter;  //改变的参数

 

// CAboutDlg dialog used for App About

 

class CAboutDlg : public CDialog

{

public:

CAboutDlg();

enum { IDD = IDD_ABOUTBOX };

 

protected:

virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support

protected:

DECLARE_MESSAGE_MAP()

};

 

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)

{

}

 

void CAboutDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

}

 

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)

END_MESSAGE_MAP()

 

// CTCPDlg dialog

 

CTCPDlg::CTCPDlg(CWnd* pParent )

: CDialog(CTCPDlg::IDD, pParent)

{

m_init = _T("");

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}

 

void CTCPDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

DDX_Control(pDX, IDC_TREE, m_tree);

DDX_Control(pDX, IDC_TIME, m_time);

DDX_Control(pDX, IDC_DATE, m_date);

DDX_Text(pDX, IDC_PS, m_init);

}

 

BEGIN_MESSAGE_MAP(CTCPDlg, CDialog)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_BN_CLICKED(IDC_SEND, OnSend)

ON_MESSAGE(WM_SOCKET,OnSocket)

ON_BN_CLICKED(IDC_CONNECT, OnConnect)

ON_NOTIFY(TVN_SELCHANGED, IDC_TREE, OnSelchangedTree)

ON_WM_TIMER()

ON_EN_CHANGE(IDC_PS, OnChangePs)

ON_BN_CLICKED(IDC_INITIALIZE, OnInitialize)

ON_BN_CLICKED(IDC_FIND, OnFind)

ON_BN_CLICKED(IDC_CHANGE, OnChangeParameter)

END_MESSAGE_MAP()

 

BOOL CTCPDlg::OnInitDialog()

{

CDialog::OnInitDialog();

 

// Add "About..." menu item to system menu.

 

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX < 0xF000);

 

CMenu* pSysMenu = GetSystemMenu(FALSE);

if (pSysMenu != NULL)

{

CString strAboutMenu;

strAboutMenu.LoadString(IDS_ABOUTBOX);

if (!strAboutMenu.IsEmpty())

{

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

}

}

 

SetIcon(m_hIcon, TRUE); // Set big icon

SetIcon(m_hIcon, FALSE); // Set small icon

 

// TODO: Add extra initialization here

 

GetDlgItem(IDC_SENDTEXT)->EnableWindow(false);

GetDlgItem(IDC_INITIALIZE)->EnableWindow(false);

GetDlgItem(IDC_SEND)->EnableWindow(false);

 

s=::socket(AF_INET,SOCK_STREAM,0);

:: WSAAsyncSelect(s,this->m_hWnd,WM_SOCKET, FD_READ);

 

return TRUE;  // return TRUE  unless you set the focus to a control

}

 

void CTCPDlg::OnSysCommand(UINT nID, LPARAM lParam)

{

if ((nID & 0xFFF0) == IDM_ABOUTBOX)

{

CAboutDlg dlgAbout;

dlgAbout.DoModal();

}

else

{

CDialog::OnSysCommand(nID, lParam);

}

}

 

void CTCPDlg::OnPaint() 

{

if (IsIconic())

{

CPaintDC dc(this); // device context for painting

 

SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

 

int cxIcon = GetSystemMetrics(SM_CXICON);

int cyIcon = GetSystemMetrics(SM_CYICON);

CRect rect;

GetClientRect(&rect);

int x = (rect.Width() - cxIcon + 1) / 2;

int y = (rect.Height() - cyIcon + 1) / 2;

 

dc.DrawIcon(x, y, m_hIcon);

}

else

{

CDialog::OnPaint();

}

}

 

HCURSOR CTCPDlg::OnQueryDragIcon()

{

return (HCURSOR) m_hIcon;

}

 

void CTCPDlg::OnConnect() 

{

  CString str,str1;

  int port;

 

  GetDlgItem(IDC_ADDR)->GetWindowText(str);

  GetDlgItem(IDC_PORT)->GetWindowText(str1);

 

if(str == ""||str1 =="")

{

MessageBox("IP地址或端口号不能为空");

}

else

{

//启动CSocket

WORD wVersionRequested;

WSADATA wsaData;

 

wVersionRequested = MAKEWORD( 2, 2);

WSAStartup(wVersionRequested, &wsaData);

 

//端口和IP的处理

port=atoi(str1.GetBuffer(1));

addr.sin_family=AF_INET;

addr.sin_addr.S_un.S_addr=inet_addr(str.GetBuffer(1));

addr.sin_port=ntohs(port);

 

GetDlgItem(IDC_TEXT)->SetWindowText("正在连接服务器......\r\n");

 

if(::connect(s,(sockaddr*)&addr,sizeof(addr)))

{

GetDlgItem(IDC_TEXT)->GetWindowText(str);

str+="连接服务器成功!\r\n";

GetDlgItem(IDC_TEXT)->SetWindowText(str);

GetDlgItem(IDC_SENDTEXT)->EnableWindow(true);

GetDlgItem(IDC_ADDR)->EnableWindow(false);

GetDlgItem(IDC_PORT)->EnableWindow(false);

}

else

{

GetDlgItem(IDC_TEXT)->GetWindowText(str);

str+="连接服务器失败!\r\n";

GetDlgItem(IDC_TEXT)->SetWindowText(str);

}

 

//初始化

OnInitialize();

}

}

 

//发送数据请求

void CTCPDlg::OnSend() 

{

// TODO: Add your control notification handler code here

CString str,str1,send_str;

 

switch ( id )

{

case 0:str.Format(“请求0号断路器节点数据");

GetDlgItem(IDC_ChangePS)->SetWindowText("States");break;

case 1:str.Format("请求1号号断路器节点数据");

GetDlgItem(IDC_ChangePS)->SetWindowText("States");break;

case 2:str.Format("请求2号号断路器节点数据");

GetDlgItem(IDC_ChangePS)->SetWindowText("States");break;

case 3:str.Format("请求0号电流耦合器节点数据");break;

case 4:str.Format("请求1号电流耦合器节点数据");break;

case 5:str.Format("请求2号电流耦合器节点数据");break;

case 6:str.Format("请求3号电流耦合器节点数据");break;

case 7:str.Format("请求0号电压耦合器节点数据");break;

case 8:str.Format("请求1号电压耦合器节点数据");break;

case 9:str.Format("请求2号电压耦合器节点数据");break;

case 10:str.Format("请求3号电压耦合器节点数据");break;

case 11:str.Format("请求4号电压耦合器节点数据");break;

default:str.Format("未发送任何节点数据请求");break;

}

 

//处理发送的数据格式

send_str.Format("%d",id);

//发送send_str.GetBuffer(1)  id

::send(s,send_str.GetBuffer(1),sizeof(send_str),0);

 

GetDlgItem(IDC_TEXT)->GetWindowText(str1);

str1 += "\r\nClient:";

//str1太长的时候清空

if (strlen(str1)>=250)

{

str1 = "正在连接服务器......\r\n连接服务器成功!\r\nClient:";

}

str1 += str;

GetDlgItem(IDC_TEXT)->SetWindowText(str1);

}

 

//socket事件

void CTCPDlg::OnSocket(WPARAM wParam,LPARAM lParam)

{

char cs[100]={0};

if(lParam == FD_READ)

{

CString num = "";

recv(s,cs,100,0);

GetDlgItem(IDC_TEXT)->GetWindowText(num);

num+="\r\nServer:";

num+=(LPTSTR)cs;

 

//要显示的设备参数为接收到的数据

display = (LPTSTR)cs;

 

//添加的代码 以便判断客户机收到的数据

GetDlgItem(IDC_TEXT)->SetWindowText(num);

 

//接收到服务器发送过来的数据 处理后 显示节点数据

GetDlgItem(IDC_SENDTEXT)->SetWindowText(display);

 

//声音提示已经得到服务器数据

PlaySound("SystemStart",NULL,SND_ALIAS|SND_ASYNC);

}

}

 

//算出节点ID,以便客户机向服务器发送节点数据请求

void FigureOut_ID(CString s)

{

 

if (!strcmp(s,"0号断路器"))

{

id = 0;

}

if (!strcmp(s,"1号断路器"))

{

id = 1;

}

if (!strcmp(s,"2号断路器"))

{

id = 2;

}

if (!strcmp(s,"0号电流耦合器"))

{

id = 3;

}

if (!strcmp(s,"1号电流耦合器"))

{

id = 4;

}

if (!strcmp(s,"2号电流耦合器"))

{

id = 5;

}

if (!strcmp(s,"3号电流耦合器"))

{

id = 6;

}

if (!strcmp(s,"0号电压耦合器"))

{

id = 7;

}

if (!strcmp(s,"1号电压耦合器"))

{

id = 8;

}

if (!strcmp(s,"2号电压耦合器"))

{

id = 9;

}

if (!strcmp(s,"3号电压耦合器"))

{

id = 10;

}

if (!strcmp(s,"4号电压耦合器"))

{

id = 11;

}

}

 

//追踪函数处理

CString track()

{

CString m_init;

switch ( id )

{

case 0:  m_init = "0号断路器节点数据请求"; break;

case 1:  m_init = "1号断路器节点数据请求"; break;

case 2:  m_init = "2号断路器节点数据请求"; break;

case 3:  m_init = "0号电流耦合器节点数据请求"; break;

case 4:  m_init = "1号电流耦合器节点数据请求"; break;

case 5:  m_init = "2号电流耦合器节点数据请求"; break;

case 6:  m_init = "3号电流耦合器节点数据请求"; break;

case 7:  m_init = "0号电压耦合器节点数据请求"; break;

case 8:  m_init = "1号电压耦合器节点数据请求"; break;

case 9:  m_init = "2号电压耦合器节点数据请求"; break;

case 10: m_init = "3号电压耦合器节点数据请求"; break;

case 11: m_init = "4号电压耦合器节点数据请求"; break;

default:;break;

}

return m_init ;

}

//树形控件处理函数

void CTCPDlg::OnSelchangedTree(NMHDR* pNMHDR, LRESULT* pResult) 

{

NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;

// TODO: Add your control notification handler code here

HTREEITEM hitem;

 

CTreeCtrl * tree = new CTreeCtrl;

 

tree = (CTreeCtrl *)GetDlgItem( pNMHDR->idFrom );

 

//选中子节点

hitem = tree->GetSelectedItem() ;

if( !tree->ItemHasChildren(hitem) ) //是否还有子节点 没有子节点跳出对话框

{

CString s = tree->GetItemText( hitem );

 

//追踪信息显示

UpdateData();

m_init = "One Node Selected";

UpdateData(FALSE);

 

//计算节点号

FigureOut_ID(s);

 

//追踪信息处理

UpdateData();

m_init = track();

UpdateData(false);

 

//向客户机发送节点数据请求

OnSend();

}

*pResult = 0;

}

//时间函数

void CTCPDlg::OnTimer(UINT nIDEvent) 

{

// TODO: Add your message handler code here and/or call default

CDialog::OnTimer(nIDEvent);

 

//动态显示时、分、秒

    COleDateTime time = COleDateTime::GetCurrentTime() ; 

CString str ; 

str.Format("%.2d:%.2d:%.2d" ,time.GetHour(), time.GetMinute(), time.GetSecond()) ;

 

//送到文本框中显示

GetDlgItem(IDC_TIME)->SetWindowText(str) ;

 

//动态显示年、月、日

COleDateTime data = COleDateTime::GetCurrentTime ();

CString s;

s.Format ("%.4d/%.2d/%.2d", data.GetYear (), data.GetMonth (), data.GetDay ());

 

//送到文本框中显示

GetDlgItem(IDC_DATE)->SetWindowText(s);

}

 

void CTCPDlg::OnChangePs() 

{

m_init = "Please initialize";

UpdateData();

}

//初始化

void CTCPDlg::OnInitialize() 

{

SetTimer(1,1000,0);

 

m_init = "System Initialized";

UpdateData(FALSE);

 

i = 0; //初始化循环变量

id = -1; //初始化后未选择任何节点

}

//查找设备

void CTCPDlg::OnFind() 

{

// TODO: Add your control notification handler code here

if ( find_flag ==0)

{

find_flag = 1;

CString text;

 

HTREEITEM cbr;

cbr = m_tree.InsertItem ("断路器",0,1);

HTREEITEM cbr_sub[3];

for (i=0; i<3; i++)

{

text.Format("%d号断路器",i);

cbr_sub[i] = m_tree.InsertItem (text,0,1,cbr);

}

HTREEITEM cct;

cct = m_tree.InsertItem ("电流耦合器",0,1);

HTREEITEM cct_sub[4];

for (i=0; i<4; i++)

{

text.Format("%d号电流耦合器",i);

cct_sub[i] = m_tree.InsertItem (text,0,1,cct);

}

HTREEITEM cvt;

cvt = m_tree.InsertItem ("电压耦合器",0,1);

HTREEITEM cvt_sub[5];

for (i=0; i<5; i++)

{

text.Format("%d号电压耦合器",i);

cvt_sub[i] = m_tree.InsertItem (text,0,1,cvt);

}

}

}

//修改参数

void CTCPDlg::OnChangeParameter() 

{

// TODO: Add your control notification handler code here

CString change = "CHANGED";

CString ch_p1 ;

switch ( id )

{

case 0:

case 1:

case 2:

{

change.Format("�HANGED",id);

GetDlgItem(IDC_CHANGEEDIT)->GetWindowText(ch_p1);

change += display;

change.Delete(32,1);

change += ch_p1;

};

break;

case 3:

case 4:

case 5:

case 6:

case 7:

case 8:

case 9:

case 10:

case 11:

{

NULL;

};

break;

default:

{

MessageBox("未选择断路器");

};

break;

}

::send(s, change.GetBuffer(1), strlen(change), 0);

 

}

 

posted @ 2014-08-28 15:03  leanee  阅读(320)  评论(0)    收藏  举报