📄 comcfg.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 + -