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