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

📄 comcfg.cpp

📁 vt100终端仿真程序
💻 CPP
字号:
#include "stdafx.h"
#include "cfgfile.h"

//终端配置号
int iTermNo;


HWND	hDlgWnd;

HWND	m_StaStop;
HWND	m_StaPort;
HWND	m_StaJO;
HWND	m_StaIp;
HWND	m_StaFlow;
HWND	m_StaCom;
HWND	m_StaBRate;
HWND	m_StaBity;
HWND	m_EdtPort;
HWND	m_EdtIp;
HWND	m_TcpIpFrame;
HWND	m_ComFrame;
HWND	m_ComStop;
HWND	m_ComRate;
HWND	m_ComNo;
HWND	m_ComJO;
HWND	m_ComCtr;
HWND	m_ComByte;
HWND	m_ComType;
HWND	m_Trace;
HWND	m_btAdd,m_btDel;

int		m_iPort[20],m_iAddrNum;

extern int iTrace;

void GetCtrWnd()
{
	m_StaStop=GetDlgItem(hDlgWnd,IDC_STATIC_STOP);
	m_StaPort=GetDlgItem(hDlgWnd,IDC_STATIC_PORT);
	m_StaJO=GetDlgItem(hDlgWnd,IDC_STATIC_JO);
	m_StaIp=GetDlgItem(hDlgWnd,IDC_STATIC_IP);
	m_StaFlow=GetDlgItem(hDlgWnd,IDC_STATIC_FLOW);
	m_StaCom=GetDlgItem(hDlgWnd,IDC_STATIC_COM);
	m_StaBRate=GetDlgItem(hDlgWnd,IDC_STATIC_BRATE);
	m_StaBity=GetDlgItem(hDlgWnd,IDC_STATIC_BITY);
	m_EdtPort=GetDlgItem(hDlgWnd,IDC_EdtPort);
	m_EdtIp=GetDlgItem(hDlgWnd,IDC_EDITIP);
	m_TcpIpFrame=GetDlgItem(hDlgWnd,IDC_TCPIP_FRAME);
	m_ComFrame=GetDlgItem(hDlgWnd,IDC_COM_FRAME);
	m_ComStop=GetDlgItem(hDlgWnd,IDC_COMSTOP);
	m_ComRate=GetDlgItem(hDlgWnd,IDC_COMRATE);
	m_ComNo=GetDlgItem(hDlgWnd,IDC_COMNO);
	m_ComJO=GetDlgItem(hDlgWnd,IDC_COMJO);
	m_ComCtr=GetDlgItem(hDlgWnd,IDC_COMCTR);
	m_ComByte=GetDlgItem(hDlgWnd,IDC_COMBYTE);
	m_ComType=GetDlgItem(hDlgWnd,IDC_COMTYPE);
	m_Trace=GetDlgItem(hDlgWnd,IDC_TRACE);
	m_btAdd=GetDlgItem(hDlgWnd,IDC_ADD);
	m_btDel=GetDlgItem(hDlgWnd,IDC_DEL);

}


void InitDlgItem()
{
	int iRev,lpReType;
	TCHAR lpReComNo[10];
	TCHAR lpReBRate[10];
	TCHAR lpReBSize[2];
	int lpReParity;
	int lpReStop;
	int lpReCtr;

	FILE *hIpAddr;

	TCHAR lpReIp[20];
	TCHAR lpRePort[5];
	char szTemp[20],szTemp1[20];

	int iLoop;

	CCfgFile m_csCfgFile;
	
	//initialise control value
	SendMessage(m_ComType,CB_ADDSTRING,-1,(LPARAM)(_T("串口通讯")));
	SendMessage(m_ComType,CB_ADDSTRING,-1,(LPARAM)(_T("TCP/IP")));
	
	SendMessage(m_ComNo,CB_ADDSTRING,-1,(LPARAM)(_T("COM1:")));
	SendMessage(m_ComNo,CB_ADDSTRING,-1,(LPARAM)(_T("COM2:")));
	SendMessage(m_ComNo,CB_ADDSTRING,-1,(LPARAM)(_T("COM3:")));
	SendMessage(m_ComNo,CB_ADDSTRING,-1,(LPARAM)(_T("COM4:")));
	
	SendMessage(m_ComRate,CB_ADDSTRING,-1,(LPARAM)(_T("110")));
	SendMessage(m_ComRate,CB_ADDSTRING,-1,(LPARAM)(_T("300")));
	SendMessage(m_ComRate,CB_ADDSTRING,-1,(LPARAM)(_T("1200")));
	SendMessage(m_ComRate,CB_ADDSTRING,-1,(LPARAM)(_T("2400")));
	SendMessage(m_ComRate,CB_ADDSTRING,-1,(LPARAM)(_T("4800")));
	SendMessage(m_ComRate,CB_ADDSTRING,-1,(LPARAM)(_T("9600")));
	SendMessage(m_ComRate,CB_ADDSTRING,-1,(LPARAM)(_T("19200")));
	SendMessage(m_ComRate,CB_ADDSTRING,-1,(LPARAM)(_T("38400")));
	SendMessage(m_ComRate,CB_ADDSTRING,-1,(LPARAM)(_T("57600")));
	SendMessage(m_ComRate,CB_ADDSTRING,-1,(LPARAM)(_T("115200")));
	SendMessage(m_ComRate,CB_ADDSTRING,-1,(LPARAM)(_T("230400")));
	SendMessage(m_ComRate,CB_ADDSTRING,-1,(LPARAM)(_T("460800")));
	SendMessage(m_ComRate,CB_ADDSTRING,-1,(LPARAM)(_T("460800")));
	SendMessage(m_ComRate,CB_ADDSTRING,-1,(LPARAM)(_T("921600")));

	SendMessage(m_ComByte,CB_ADDSTRING,-1,(LPARAM)(_T("5")));
	SendMessage(m_ComByte,CB_ADDSTRING,-1,(LPARAM)(_T("6")));
	SendMessage(m_ComByte,CB_ADDSTRING,-1,(LPARAM)(_T("7")));
	SendMessage(m_ComByte,CB_ADDSTRING,-1,(LPARAM)(_T("8")));
	
	SendMessage(m_ComJO,CB_ADDSTRING,-1,(LPARAM)(_T("偶校验")));
	SendMessage(m_ComJO,CB_ADDSTRING,-1,(LPARAM)(_T("奇校验")));
	SendMessage(m_ComJO,CB_ADDSTRING,-1,(LPARAM)(_T("无")));
	SendMessage(m_ComJO,CB_ADDSTRING,-1,(LPARAM)(_T("标记")));
	SendMessage(m_ComJO,CB_ADDSTRING,-1,(LPARAM)(_T("空格")));

	SendMessage(m_ComStop,CB_ADDSTRING,-1,(LPARAM)(_T("1")));
	SendMessage(m_ComStop,CB_ADDSTRING,-1,(LPARAM)(_T("1.5")));
	SendMessage(m_ComStop,CB_ADDSTRING,-1,(LPARAM)(_T("2")));

	SendMessage(m_ComCtr,CB_ADDSTRING,-1,(LPARAM)(_T("Xon/Xoff")));
	SendMessage(m_ComCtr,CB_ADDSTRING,-1,(LPARAM)(_T("硬件f")));
	SendMessage(m_ComCtr,CB_ADDSTRING,-1,(LPARAM)(_T("无")));
	
	lpReType=m_csCfgFile.GetCfgItemInt(CONNECTTYPE);
	SendMessage(m_ComType,CB_SETCURSEL,lpReType,0);

	//get COM config parameter
	memset(lpReComNo,0,sizeof(lpReComNo));
	m_csCfgFile.GetCfgItemStr(PORTNAME,lpReComNo,6);		
	
	memset(lpReBRate,0,sizeof(lpReBRate));
	m_csCfgFile.GetCfgItemStr(BAUDRATE,lpReBRate,9); 
		
	memset(lpReBSize,0,sizeof(lpReBSize));
	m_csCfgFile.GetCfgItemStr(BYTESIZE,lpReBSize,1);
		
	lpReParity=m_csCfgFile.GetCfgItemInt(PARITY);
	lpReStop=m_csCfgFile.GetCfgItemInt(STOPBIT);
	lpReCtr=m_csCfgFile.GetCfgItemInt(FLOWCTR);
		
	//set current value for com control
	iRev=SendMessage(m_ComNo,CB_FINDSTRING,-1,(LPARAM)lpReComNo);
	SendMessage(m_ComNo,CB_SETCURSEL,iRev,0);

	iRev=SendMessage(m_ComRate,CB_FINDSTRING,-1,(LPARAM)lpReBRate);
	SendMessage(m_ComRate,CB_SETCURSEL,iRev,0);

	iRev=SendMessage(m_ComByte,CB_FINDSTRING,-1,(LPARAM)lpReBSize);
	SendMessage(m_ComByte,CB_SETCURSEL,iRev,0);
		
	SendMessage(m_ComJO,CB_SETCURSEL,lpReParity,0);
	SendMessage(m_ComStop,CB_SETCURSEL,lpReStop,0);
	SendMessage(m_ComCtr,CB_SETCURSEL,lpReCtr,0);
	
	//get TCP config parameter
	memset(lpReIp,0,sizeof(lpReIp));
	m_csCfgFile.GetCfgItemStr(IPADD,lpReIp,19);
		
	memset(lpRePort,0,sizeof(lpRePort));
	m_csCfgFile.GetCfgItemStr(PORTNUM,lpRePort,4);
	
	//set  value for TCP control
	SetWindowText(m_EdtIp,lpReIp);
	SetWindowText(m_EdtPort,lpRePort);
	iTermNo=0;


	//get ip address table
	memset(m_iPort,0,sizeof(m_iPort));
	hIpAddr=fopen("\\disk\\address.cfg","r");
	iLoop=0;
	if(hIpAddr){
		while(!feof(hIpAddr)){
			memset(lpReIp,0,sizeof(lpReIp));
			memset(lpRePort,0,sizeof(lpRePort));
			memset(szTemp,0,sizeof(szTemp));
			memset(szTemp1,0,sizeof(szTemp1));

			fscanf(hIpAddr,"%s %s",szTemp,szTemp1);
			if(szTemp[0]==0)
				break;

			m_iPort[iLoop]=atoi(szTemp1);
			mbstowcs(lpReIp,szTemp,strlen(szTemp));			
			SendMessage(m_EdtIp,CB_ADDSTRING,-1,(LPARAM)(lpReIp));

			iLoop++;
			if(iLoop>19)
				break;
		}
		m_iAddrNum=iLoop;
	}
	fclose(hIpAddr);

	//SET TRACE TYPE
	iTrace=m_csCfgFile.GetCfgItemInt(TRACE);
	if(iTrace==0)
		SendMessage(m_Trace,BM_SETCHECK ,BST_UNCHECKED,0);
	else
		SendMessage(m_Trace,BM_SETCHECK ,BST_CHECKED,0);
		
	//判断通讯类型
	if (lpReType==0)
	{
		ShowWindow(m_ComFrame,SW_SHOW);

		ShowWindow(m_ComByte,SW_SHOW);
		ShowWindow(m_ComCtr,SW_SHOW);
		ShowWindow(m_ComJO,SW_SHOW);
		ShowWindow(m_ComNo,SW_SHOW);
		ShowWindow(m_ComRate,SW_SHOW);
		ShowWindow(m_ComStop,SW_SHOW);
		
		ShowWindow(m_StaBity,SW_SHOW);
		ShowWindow(m_StaBRate,SW_SHOW);
		ShowWindow(m_StaCom,SW_SHOW);
		ShowWindow(m_StaJO,SW_SHOW);
		ShowWindow(m_StaStop,SW_SHOW);
		ShowWindow(m_StaFlow,SW_SHOW);

		ShowWindow(m_TcpIpFrame,SW_HIDE);
		
		ShowWindow(m_EdtIp,SW_HIDE);
		ShowWindow(m_EdtPort,SW_HIDE);

		ShowWindow(m_StaIp,SW_HIDE);
		ShowWindow(m_StaPort,SW_HIDE);

		ShowWindow(m_btAdd,SW_HIDE);
		ShowWindow(m_btDel,SW_HIDE);
	}

	if (lpReType==1)
	{
		ShowWindow(m_ComFrame,SW_HIDE);

		ShowWindow(m_ComByte,SW_HIDE);
		ShowWindow(m_ComCtr,SW_HIDE);
		ShowWindow(m_ComJO,SW_HIDE);
		ShowWindow(m_ComNo,SW_HIDE);
		ShowWindow(m_ComRate,SW_HIDE);
		ShowWindow(m_ComStop,SW_HIDE);
		
		ShowWindow(m_StaBity,SW_HIDE);
		ShowWindow(m_StaBRate,SW_HIDE);
		ShowWindow(m_StaCom,SW_HIDE);
		ShowWindow(m_StaJO,SW_HIDE);
		ShowWindow(m_StaStop,SW_HIDE);
		ShowWindow(m_StaFlow,SW_HIDE);

		ShowWindow(m_TcpIpFrame,SW_SHOW);
		
		ShowWindow(m_EdtIp,SW_SHOW);
		ShowWindow(m_EdtPort,SW_SHOW);

		ShowWindow(m_StaIp,SW_SHOW);
		ShowWindow(m_StaPort,SW_SHOW);

		ShowWindow(m_btAdd,SW_SHOW);
		ShowWindow(m_btDel,SW_SHOW);

	}
	
	SendMessage(hDlgWnd,CBN_SETFOCUS,IDC_COMTYPE,(LPARAM)m_ComType);
}

void OnComTypeChg()
{
	int lpReType;
	
	lpReType=SendMessage(m_ComType,CB_GETCURSEL,0,0);

	if (lpReType==0)
	{
		ShowWindow(m_ComFrame,SW_SHOW);
		ShowWindow(m_ComByte,SW_SHOW);
		ShowWindow(m_ComCtr,SW_SHOW);
		ShowWindow(m_ComJO,SW_SHOW);
		ShowWindow(m_ComNo,SW_SHOW);
		ShowWindow(m_ComRate,SW_SHOW);
		ShowWindow(m_ComStop,SW_SHOW);
		
		ShowWindow(m_StaBity,SW_SHOW);
		ShowWindow(m_StaBRate,SW_SHOW);
		ShowWindow(m_StaCom,SW_SHOW);
		ShowWindow(m_StaJO,SW_SHOW);
		ShowWindow(m_StaStop,SW_SHOW);
		ShowWindow(m_StaFlow,SW_SHOW);

		ShowWindow(m_TcpIpFrame,SW_HIDE);
		
		ShowWindow(m_EdtIp,SW_HIDE);
		ShowWindow(m_EdtPort,SW_HIDE);

		ShowWindow(m_StaIp,SW_HIDE);
		ShowWindow(m_StaPort,SW_HIDE);

	}

	if (lpReType==1)
	{
		ShowWindow(m_ComFrame,SW_HIDE);

		ShowWindow(m_ComByte,SW_HIDE);
		ShowWindow(m_ComCtr,SW_HIDE);
		ShowWindow(m_ComJO,SW_HIDE);
		ShowWindow(m_ComNo,SW_HIDE);
		ShowWindow(m_ComRate,SW_HIDE);
		ShowWindow(m_ComStop,SW_HIDE);
		
		ShowWindow(m_StaBity,SW_HIDE);
		ShowWindow(m_StaBRate,SW_HIDE);
		ShowWindow(m_StaCom,SW_HIDE);
		ShowWindow(m_StaJO,SW_HIDE);
		ShowWindow(m_StaStop,SW_HIDE);
		ShowWindow(m_StaFlow,SW_HIDE);

		ShowWindow(m_TcpIpFrame,SW_SHOW);
		
		ShowWindow(m_EdtIp,SW_SHOW);
		ShowWindow(m_EdtPort,SW_SHOW);

		ShowWindow(m_StaIp,SW_SHOW);
		ShowWindow(m_StaPort,SW_SHOW);
	}
	
	SendMessage(hDlgWnd,CBN_SETFOCUS,IDC_COMTYPE,(LPARAM)m_ComType);

}

void AddAddr()
{
	int iRet;
	TCHAR wcTemp[30];
	
	if(m_iAddrNum>=19){
		MessageBox(hDlgWnd,_T("too many address"),_T(""),MB_OK);
		return;
	}

	memset(wcTemp,0,sizeof(wcTemp));
	iRet=GetDlgItemText(hDlgWnd,IDC_EDITIP,wcTemp,29);
	if(iRet<=0){
		MessageBox(hDlgWnd,_T("input error"),_T(""),MB_OK);
		return ;
	}
	SendMessage(m_EdtIp,CB_ADDSTRING,-1,(LPARAM)(wcTemp));

	memset(wcTemp,0,sizeof(wcTemp));
	iRet=GetDlgItemText(hDlgWnd,IDC_EdtPort,wcTemp,5);
	if(iRet<=0){
		MessageBox(hDlgWnd,_T("input error"),_T(""),MB_OK);
		return ;
	}

#ifdef UNICODE
	char szTemp[30];

	memset(szTemp,0,sizeof(szTemp));
	wcstombs(szTemp,wcTemp,lstrlen(wcTemp));
	m_iPort[m_iAddrNum]=atoi(szTemp);
#else
	m_iPort[m_iAddrNum]=atoi(wcTemp);
#endif

	m_iAddrNum++;

	return;
}

void DelAddr()
{
	int iIndex,iLoop;

	iIndex=SendMessage(m_EdtIp,CB_GETCURSEL,0,0);
	if(iIndex>=0){
		SendMessage(m_EdtIp,CB_DELETESTRING,iIndex,0);
		SetWindowText(m_EdtPort,_T(""));	
	}

	for(iLoop=iIndex;iLoop<m_iAddrNum;iLoop++){
		m_iPort[iLoop]=m_iPort[iLoop+1];
	}
	m_iAddrNum--;
}


void OnIpAddrChg()
{
	int iIndex;
	char szTemp[5];

	iIndex=SendMessage(m_EdtIp,CB_GETCURSEL,0,0);
	sprintf(szTemp,"%d",m_iPort[iIndex]);

#ifndef UNICODE
	SetWindowText(m_EdtPort,szTemp);
#else
	TCHAR wszTemp[5];

	memset(wszTemp,0,sizeof(wszTemp));
	mbstowcs(wszTemp,szTemp,strlen(szTemp));
	SetWindowText(m_EdtPort,wszTemp);
#endif

}

void OnApp()
{
	int iSel,iCommType;
	BOOL blOk;
	CCfgFile m_csCfgFile;
	TCHAR wcTemp[21];
	char wcPort[10];
	char szTemp[20];
		
	FILE *hIpAddr;
	int iLoop;

	//CONNECT
	iCommType=SendMessage(m_ComType,CB_GETCURSEL,0,0);
	m_csCfgFile.SetCfgItemInt(CONNECTTYPE,iCommType);

	//trace
	iTrace=SendMessage(m_Trace,BM_GETCHECK,0,0);
	m_csCfgFile.SetCfgItemInt(TRACE,iTrace);
	
	//COM
	if(iCommType==0){
		memset(wcTemp,0,sizeof(wcTemp));
		iSel=GetDlgItemText(hDlgWnd,IDC_COMNO,wcTemp,6);
		m_csCfgFile.SetCfgItemStr(PORTNAME,wcTemp,iSel);

		iSel=GetDlgItemInt(hDlgWnd,IDC_COMRATE,&blOk,FALSE);
		m_csCfgFile.SetCfgItemInt(BAUDRATE,iSel);
		
		iSel=GetDlgItemInt(hDlgWnd,IDC_COMBYTE,&blOk,FALSE);
		m_csCfgFile.SetCfgItemInt(BYTESIZE,iSel);
		
		iSel=SendMessage(m_ComJO,CB_GETCURSEL,0,0);
		m_csCfgFile.SetCfgItemInt(PARITY,iSel);
		
		iSel=SendMessage(m_ComStop,CB_GETCURSEL,0,0);
		m_csCfgFile.SetCfgItemInt(STOPBIT,iSel);
		
		iSel=SendMessage(m_ComCtr,CB_GETCURSEL,0,0);
		m_csCfgFile.SetCfgItemInt(FLOWCTR,iSel);
	}

	//TCP/IP
	if(iCommType==1){
		memset(wcTemp,0,sizeof(wcTemp));
		iSel=GetDlgItemText(hDlgWnd,IDC_EDITIP,wcTemp,20);
		m_csCfgFile.SetCfgItemStr(IPADD,wcTemp,iSel);

		iSel=GetDlgItemInt(hDlgWnd,IDC_EdtPort,&blOk,FALSE);
		m_csCfgFile.SetCfgItemInt(PORTNUM,iSel);
		
		hIpAddr=fopen("\\disk\\address.cfg","w");
		if(!hIpAddr)
			return;

		iSel=SendMessage(m_EdtIp,CB_GETCOUNT,0,0);
		for(iLoop=0;iLoop<iSel;iLoop++){
			memset(wcTemp,0,sizeof(wcTemp));
			SendMessage(m_EdtIp,CB_GETLBTEXT,iLoop,(LPARAM)(LPCSTR)wcTemp);
			memset(szTemp,0,sizeof(szTemp));
			wcstombs(szTemp,wcTemp,lstrlen(wcTemp));
			sprintf(wcPort,"%d",m_iPort[iLoop]);
			fprintf(hIpAddr,"%s %s\n",szTemp,wcPort);
		}
		fclose(hIpAddr);
	}
}

LRESULT CALLBACK ComCfg(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	WORD wCmd;


	switch (message)
	{
		case WM_INITDIALOG:
			hDlgWnd=hDlg;
			GetCtrWnd();
			InitDlgItem();
			
			return TRUE;

		case WM_COMMAND:
			wCmd=LOWORD(wParam);
			switch(wCmd){
			case IDC_APP:
				OnApp();

				break;

			case IDOK:
				OnApp();

				EndDialog(hDlg, LOWORD(wParam));
				return TRUE;

				break;
				
			case IDCANCEL:
				EndDialog(hDlg, LOWORD(wParam));
				return TRUE;

			case IDC_ADD:
				AddAddr();
				break;

			case IDC_DEL:
				DelAddr();
				break;

			case IDC_EDITIP:
				if(HIWORD(wParam)==CBN_SELCHANGE)
					OnIpAddrChg();
				break;

			case IDC_COMTYPE:
				if(HIWORD(wParam)==CBN_SELCHANGE)
					OnComTypeChg();
			
				break;
			}

			break;

	}
    return FALSE;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -