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

📄 msgtypedlg.cpp

📁 1553B板卡的源代码,只有购买板卡才能得到的好资料
💻 CPP
字号:
// MsgTypeDlg.cpp : implementation file
//

#include "stdafx.h"
#include "SF1553.h"
#include "MsgTypeDlg.h"

#include <windowsx.h>

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMsgTypeDlg dialog


CMsgTypeDlg::CMsgTypeDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CMsgTypeDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CMsgTypeDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CMsgTypeDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CMsgTypeDlg)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CMsgTypeDlg, CDialog)
	//{{AFX_MSG_MAP(CMsgTypeDlg)
	ON_CBN_SELCHANGE(IDC_MCREATE_CB_MSGSEL, OnSelchangeMcreateCbMsgsel)
	ON_WM_CLOSE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMsgTypeDlg message handlers
static DWORD msgtempcnt=0;

BOOL CMsgTypeDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	int i=0;
	char c[256];

	memset(&g_TempMsg.msg, 0, sizeof(STRUCT_MSG));
	g_TempMsg.msg.ChannelSelect = 1; // channel A selected
	g_TempMsg.msg.InterMSGGapTime = 1000; // 680 us to default
	g_TempMsg.msg.RetryEnable = FALSE;

	memset(g_TempMsg.msgname, 0, sizeof(g_TempMsg.msgname)); // clear message name
	sprintf(g_TempMsg.msgname, "Msg-%ld", msgtempcnt);
	msgtempcnt++;
	if (msgtempcnt > 0xFFFF)
	{
		msgtempcnt = 0;
	}

	//
	//	Init GUI
	//
	ComboBox_ResetContent(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MSGSEL));
	ComboBox_ResetContent(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL));

	for (i=0; i<10; i++)
	{
		//	Message Type selection ComboBox
		//
		memset(c, 0, sizeof(c));
		LoadString(NULL, IDM_STRING_MS1+i, c, sizeof(c));
		ComboBox_AddString(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MSGSEL), c);
	}

	ComboBox_SetCurSel(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MSGSEL), 0);
	::EnableWindow(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL), FALSE);
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CMsgTypeDlg::OnSelchangeMcreateCbMsgsel() 
{
	// TODO: Add your control notification handler code here
	// TODO: Add your control notification handler code here
	int i=0;
	char c[256];

	switch (ComboBox_GetCurSel(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MSGSEL)))
	{
		case 0: // BT-RT transfer
			ComboBox_ResetContent(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL));
			::EnableWindow(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL), FALSE);
			break;

		case 1: // RT-BC transfer
			ComboBox_ResetContent(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL));
			::EnableWindow(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL), FALSE);
			break;

		case 2: // RT-RT transfer
			ComboBox_ResetContent(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL));
			::EnableWindow(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL), FALSE);
			break;

		case 3: // Mode Code no Data
			ComboBox_ResetContent(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL));
			for (i=0; i<9; i++)
			{
				memset(c, 0, sizeof(c));
				LoadString(NULL, IDM_STRING_MC1+i, c, sizeof(c));
				ComboBox_AddString(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL), c);
			}
			ComboBox_SetCurSel(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL), 0);
			::EnableWindow(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL), TRUE);
			break;

		case 4: // Tx Mode Code with Data
			ComboBox_ResetContent(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL));
			i = 0;
			memset(c, 0, sizeof(c));
			LoadString(NULL, IDM_STRING_MC10+i, c, sizeof(c));
			ComboBox_AddString(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL), c);
			i = 2;
			memset(c, 0, sizeof(c));
			LoadString(NULL, IDM_STRING_MC10+i, c, sizeof(c));
			ComboBox_AddString(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL), c);
			i = 3;
			memset(c, 0, sizeof(c));
			LoadString(NULL, IDM_STRING_MC10+i, c, sizeof(c));
			ComboBox_AddString(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL), c);

			ComboBox_SetCurSel(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL), 0);
			::EnableWindow(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL), TRUE);
			break;

		case 5: // Rx Mode Code with Data
			ComboBox_ResetContent(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL));
			i = 1;
			memset(c, 0, sizeof(c));
			LoadString(NULL, IDM_STRING_MC10+i, c, sizeof(c));
			ComboBox_AddString(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL), c);
			i = 4;
			memset(c, 0, sizeof(c));
			LoadString(NULL, IDM_STRING_MC10+i, c, sizeof(c));
			ComboBox_AddString(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL), c);
			i = 5;
			memset(c, 0, sizeof(c));
			LoadString(NULL, IDM_STRING_MC10+i, c, sizeof(c));
			ComboBox_AddString(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL), c);
			
			ComboBox_SetCurSel(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL), 0);
			::EnableWindow(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL), TRUE);
			break;

		case 6: // Broadcast
			ComboBox_ResetContent(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL));
			::EnableWindow(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL), FALSE);
			break;

		case 7: // RT-RT Broadcast Transfer
			ComboBox_ResetContent(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL));
			::EnableWindow(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL), FALSE);
			break;

		case 8: // Broadcast Mode Code no Data
			ComboBox_ResetContent(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL));

			i = 1;
			memset(c, 0, sizeof(c));
			LoadString(NULL, IDM_STRING_MC1+i, c, sizeof(c));
			ComboBox_AddString(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL), c);

			i = 3;
			memset(c, 0, sizeof(c));
			LoadString(NULL, IDM_STRING_MC1+i, c, sizeof(c));
			ComboBox_AddString(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL), c);

			i = 4;
			memset(c, 0, sizeof(c));
			LoadString(NULL, IDM_STRING_MC1+i, c, sizeof(c));
			ComboBox_AddString(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL), c);

			i = 5;
			memset(c, 0, sizeof(c));
			LoadString(NULL, IDM_STRING_MC1+i, c, sizeof(c));
			ComboBox_AddString(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL), c);

			i = 6;
			memset(c, 0, sizeof(c));
			LoadString(NULL, IDM_STRING_MC1+i, c, sizeof(c));
			ComboBox_AddString(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL), c);

			i = 7;
			memset(c, 0, sizeof(c));
			LoadString(NULL, IDM_STRING_MC1+i, c, sizeof(c));
			ComboBox_AddString(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL), c);

			i = 8;
			memset(c, 0, sizeof(c));
			LoadString(NULL, IDM_STRING_MC1+i, c, sizeof(c));
			ComboBox_AddString(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL), c);

			ComboBox_SetCurSel(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL), 0);
			::EnableWindow(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL), TRUE);
			break;

		case 9: // Broadcast Mode Code with Data
			ComboBox_ResetContent(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL));
			
			i = 1;
			memset(c, 0, sizeof(c));
			LoadString(NULL, IDM_STRING_MC10+i, c, sizeof(c));
			ComboBox_AddString(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL), c);

			i = 4;
			memset(c, 0, sizeof(c));
			LoadString(NULL, IDM_STRING_MC10+i, c, sizeof(c));
			ComboBox_AddString(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL), c);

			i = 5;
			memset(c, 0, sizeof(c));
			LoadString(NULL, IDM_STRING_MC10+i, c, sizeof(c));
			ComboBox_AddString(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL), c);

			ComboBox_SetCurSel(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL), 0);
			::EnableWindow(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL), TRUE);
			break;
	}

	
}

void CMsgTypeDlg::OnClose() 
{
	// TODO: Add your message handler code here and/or call default
	WORD cmd=0;

	g_TempMsg.msg.MSGFormat = MSGTYPE_BC_RT;

	cmd = SetRTAddr(cmd, 1);
	cmd = SetTR(cmd, 0);
	cmd = SetSubAddr(cmd, 1);
	cmd = SetWordCount(cmd, 1);

	// changed 2007 stTempMsg.msg.MSGBlock[0] = cmd;
	g_TempMsg.msg.MSGBlock[0] = cmd;
	
	CDialog::OnClose();
}

void CMsgTypeDlg::OnCancel() 
{
	// TODO: Add extra cleanup here
	// TODO: Add extra cleanup here
	WORD cmd=0;

	g_TempMsg.msg.MSGFormat = MSGTYPE_BC_RT;

	cmd = SetRTAddr(cmd, 1);
	cmd = SetTR(cmd, 0);
	cmd = SetSubAddr(cmd, 1);
	cmd = SetWordCount(cmd, 1);

	// changed 2007 stTempMsg.msg.MSGBlock[0] = cmd;
	g_TempMsg.msg.MSGBlock[0] = cmd;

	
	CDialog::OnCancel();
}

void CMsgTypeDlg::OnOK() 
{
	// TODO: Add extra validation here
	int ms=0, mc=0;
	WORD cmd1=0, cmd2=0;

	ms = ComboBox_GetCurSel(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MSGSEL));
	mc = ComboBox_GetCurSel(::GetDlgItem(this->m_hWnd, IDC_MCREATE_CB_MCSEL));
	
	

	switch (ms)
	{
		case 0: // BT-RT transfer
			g_TempMsg.msg.MSGFormat = MSGTYPE_BC_RT;

			cmd1 = SetRTAddr(cmd1, 1);
			cmd1 = SetTR(cmd1, 0);
			cmd1 = SetSubAddr(cmd1, 1);
			cmd1 = SetWordCount(cmd1, 1);
			break;

		case 1: // RT-BC transfer
			g_TempMsg.msg.MSGFormat = MSGTYPE_BC_RT;

			cmd1 = SetRTAddr(cmd1, 1);
			cmd1 = SetTR(cmd1, 1);
			cmd1 = SetSubAddr(cmd1, 1);
			cmd1 = SetWordCount(cmd1, 1);
			break;

		case 2: // RT-RT transfer
			g_TempMsg.msg.MSGFormat = g_TempMsg.msg.MSGFormat | FMSG_RT_RT;

			cmd1 = SetRTAddr(cmd1, 1);
			cmd1 = SetTR(cmd1, 0);
			cmd1 = SetSubAddr(cmd1, 1);
			cmd1 = SetWordCount(cmd1, 1);

			cmd2 = SetRTAddr(cmd2, 2);
			cmd2 = SetTR(cmd2, 1);
			cmd2 = SetSubAddr(cmd2, 1);
			cmd2 = SetWordCount(cmd2, 1);
			break;

		case 3: // Mode Code no Data
			g_TempMsg.msg.MSGFormat = g_TempMsg.msg.MSGFormat | FMSG_MC;

			cmd1 = SetRTAddr(cmd1, 1);
			cmd1 = SetTR(cmd1, 1);
			cmd1 = SetSubAddr(cmd1, 31);

			switch (mc)
			{
				case 0: // Dynamic bus control
					cmd1 = SetModeCode(cmd1, 0);
					break;
				case 1: // Synchronize  (No Data)
					cmd1 = SetModeCode(cmd1, 1);
					break;
				case 2: // Transmit status word
					cmd1 = SetModeCode(cmd1, 2);
					break;
				case 3: // Initiate self-test
					cmd1 = SetModeCode(cmd1, 3);
					break;
				case 4: // Transmitter shutdown
					cmd1 = SetModeCode(cmd1, 4);
					break;
				case 5: // Override transmitter shutdown
					cmd1 = SetModeCode(cmd1, 5);
					break;
				case 6: // Inhibit terminal flag bit
					cmd1 = SetModeCode(cmd1, 6);
					break;
				case 7: // Override inhibit terminal flag bit
					cmd1 = SetModeCode(cmd1, 7);
					break;
				case 8: // Reset remote terminal
					cmd1 = SetModeCode(cmd1, 8);
					break;
			}
			break;

		case 4: // Tx Mode Code with Data
			g_TempMsg.msg.MSGFormat = g_TempMsg.msg.MSGFormat | FMSG_MC;
			
			cmd1 = SetRTAddr(cmd1, 1);
			cmd1 = SetTR(cmd1, 1);
			cmd1 = SetSubAddr(cmd1, 31);

			switch (mc)
			{
				case 0: // Transmit vector word
					cmd1 = SetModeCode(cmd1, 16);
					break;
				case 1: // Transmit last command
					cmd1 = SetModeCode(cmd1, 18);
					break;
				
				case 2: // Transmit bit word
					cmd1 = SetModeCode(cmd1, 19);
					break;
			}
			break;

		case 5: // Rx Mode Code with Data
			g_TempMsg.msg.MSGFormat = g_TempMsg.msg.MSGFormat | FMSG_MC;
			
			cmd1 = SetRTAddr(cmd1, 1);
			cmd1 = SetTR(cmd1, 0);
			cmd1 = SetSubAddr(cmd1, 31);

			switch (mc)
			{
				case 0: // Synchronize  (with Data)
					cmd1 = SetModeCode(cmd1, 17);
					break;
				case 1: // Selected transmitter shutdown
					cmd1 = SetModeCode(cmd1, 20);
					break;
				case 2: // Override selected transmitter shutdown
					cmd1 = SetModeCode(cmd1, 21);
					break;
			}
			break;

		case 6: // Broadcast
			g_TempMsg.msg.MSGFormat = g_TempMsg.msg.MSGFormat | FMSG_BRDCST;

			cmd1 = SetRTAddr(cmd1, 31);
			cmd1 = SetTR(cmd1, 0);
			cmd1 = SetSubAddr(cmd1, 1);
			cmd1 = SetWordCount(cmd1, 1);
			break;

		case 7: // RT-RT Broadcast Transfer
			g_TempMsg.msg.MSGFormat = g_TempMsg.msg.MSGFormat | FMSG_RT_RT;
			g_TempMsg.msg.MSGFormat = g_TempMsg.msg.MSGFormat | FMSG_BRDCST;

			cmd1 = SetRTAddr(cmd1, 31);
			cmd1 = SetTR(cmd1, 0);
			cmd1 = SetSubAddr(cmd1, 1);
			cmd1 = SetWordCount(cmd1, 1);

			cmd2 = SetRTAddr(cmd2, 2);
			cmd2 = SetTR(cmd2, 1);
			cmd2 = SetSubAddr(cmd2, 1);
			cmd2 = SetWordCount(cmd2, 1);
			break;

		case 8: // Broadcast Mode Code no Data
			g_TempMsg.msg.MSGFormat = g_TempMsg.msg.MSGFormat | FMSG_MC;
			g_TempMsg.msg.MSGFormat = g_TempMsg.msg.MSGFormat | FMSG_BRDCST;

			cmd1 = SetRTAddr(cmd1, 31);
			cmd1 = SetTR(cmd1, 1);
			cmd1 = SetSubAddr(cmd1, 31);

			switch (mc)
			{
				//case 0: // Dynamic bus control
				//	break;
				case 0: // Synchronize  (No Data)
					cmd1 = SetModeCode(cmd1, 1);
					break;
				//case 2: // Transmit status word
				//	break;
				case 1: // Initiate self-test
					cmd1 = SetModeCode(cmd1, 3);
					break;
				case 2: // Transmitter shutdown
					cmd1 = SetModeCode(cmd1, 4);
					break;
				case 3: // Override transmitter shutdown
					cmd1 = SetModeCode(cmd1, 5);
					break;
				case 4: // Inhibit terminal flag bit
					cmd1 = SetModeCode(cmd1, 6);
					break;
				case 5: // Override inhibit terminal flag bit
					cmd1 = SetModeCode(cmd1, 7);
					break;
				case 6: // Reset remote terminal
					cmd1 = SetModeCode(cmd1, 8);
					break;
			}
			break;

		case 9: // Broadcast Mode Code with Data
			g_TempMsg.msg.MSGFormat = g_TempMsg.msg.MSGFormat | FMSG_MC;
			g_TempMsg.msg.MSGFormat = g_TempMsg.msg.MSGFormat | FMSG_BRDCST;

			cmd1 = SetRTAddr(cmd1, 31);
			cmd1 = SetTR(cmd1, 0);
			cmd1 = SetSubAddr(cmd1, 31);

			switch (mc)
			{
				//case 0: // Transmit vector word
				//	break;
				case 0: // Synchronize  (with Data)
					cmd1 = SetModeCode(cmd1, 17);
					break;
				//case 2: // Transmit last command
				//	break;
				//case 3: // Transmit bit word
				//	break;
				case 1: // Selected transmitter shutdown
					cmd1 = SetModeCode(cmd1, 20);
					break;
				case 2: // Override selected transmitter shutdown
					cmd1 = SetModeCode(cmd1, 21);
					break;
			}
			break;
	}

	// changed 2007 stTempMsg.msg.MSGBlock[0] = cmd1;
	g_TempMsg.msg.MSGBlock[0] = cmd1;
	if ((ms==2) || (ms==7)) // RT-RT
	{
		// chagned 2007 stTempMsg.msg.MSGBlock[1] = cmd2;
		g_TempMsg.msg.MSGBlock[1] = cmd2;
	}
	
	CDialog::OnOK();
}

⌨️ 快捷键说明

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