123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281 |
- // DataConvertDlg.cpp : 实现文件
- //
- #include "stdafx.h"
- #include "DataConvert.h"
- #include "DataConvertDlg.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #endif
- // CDataConvertDlg 对话框
- CDataConvertDlg::CDataConvertDlg(CWnd* pParent /*=NULL*/)
- : CDialog(CDataConvertDlg::IDD, pParent)
- , m_dConfs(0)
- , m_dOffset(0)
- {
- m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
- }
- void CDataConvertDlg::DoDataExchange(CDataExchange* pDX)
- {
- CDialog::DoDataExchange(pDX);
- DDX_Text(pDX, ET_COFF, m_dConfs);
- DDX_Text(pDX, ET_CORRECT, m_dOffset);
- DDX_Control(pDX, IDC_COMBO1, m_cComBox);
- }
- BEGIN_MESSAGE_MAP(CDataConvertDlg, CDialog)
- ON_WM_PAINT()
- ON_WM_QUERYDRAGICON()
- //}}AFX_MSG_MAP
- ON_BN_CLICKED(IDC_BUTTON1, &CDataConvertDlg::OnBnClickedButton1)
- // ON_WM_TIMER()
- ON_EN_CHANGE(ET_CUTLEN, &CDataConvertDlg::OnEnChangeCutlen)
- END_MESSAGE_MAP()
- typedef struct ST_TYPEMAP
- {
- CString strType;
- DWORD dwType;
- }ST_typemap,*pST_typemap;
- ST_typemap Aarry_ST_tm[56] =
- {
- {"1字节实位值",BYTE_1_RealBit },
- {"1字节虚位值",BYTE_1_VirtBit },
- {"1字节字面值",BYTE_1_Literal },
- {"1字节ASCII",BYTE_1_Decimal },
- {"1字节字面ASCII",BYTE_1_Literal_Decimal },
- {"1字节转2ASCII",BYTE_1_2ASCII_Decimal },
- {"2字节实位值",BYTE_2_RealBit },
- {"2字节虚位值",BYTE_2_VirtBit },
- {"2字节字面值",BYTE_2_Literal },
- {"2字节ASCII",BYTE_2_Decimal },
- {"2字节字面ASCII",BYTE_2_Literal_Decimal },
- {"2字节MSB",BYTE_2_MSByte },
- {"2字节LSB",BYTE_2_LSByte },
- {"2字节转1字节实位值",BYTE_2_1_RealBit },
- {"2字节转1字节实位值",BYTE_2_1_VirtBit },
- {"2字节转1字节字面值",BYTE_2_1_Literal },
- {"2字节转1字节ASCII",BYTE_2_1_Decimal },
- {"2字节转1字节字面值ASCII",BYTE_2_1_Literal_Decimal },
- {"3字节实位值",BYTE_3_RealBit },
- {"3字节虚位值",BYTE_3_VirtBit },
- {"3字节字面值",BYTE_3_Literal },
- {"3字节ASCII",BYTE_3_Decimal },
- {"3字节ASCII字面值",BYTE_3_Literal_Decimal },
- {"4字节实位值",BYTE_4_RealBit },
- {"4字节虚位值",BYTE_4_VirtBit },
- {"4字节字面值",BYTE_4_Literal },
- {"4字节ASCII",BYTE_4_Decimal },
- {"4字节ASCII字面值",BYTE_4_Literal_Decimal },
- {"4字节浮点数",BYTE_4_Float },
- {"5字节实位值",BYTE_5_RealBit },
- {"5字节虚位值",BYTE_5_VirtBit },
- {"5字节字面值",BYTE_5_Literal },
- {"5字节ASCII",BYTE_5_Decimal },
- {"5字节ASCII字面值",BYTE_5_Literal_Decimal },
- {"6字节实位值",BYTE_6_RealBit },
- {"6字节虚位值",BYTE_6_VirtBit },
- {"6字节字面值",BYTE_6_Literal },
- {"6字节ASCII",BYTE_6_Decimal },
- {"6字节ASCII字面值",BYTE_6_Literal_Decimal },
- {"7字节实位值",BYTE_7_RealBit },
- {"7字节虚位值",BYTE_7_VirtBit },
- {"7字节字面值",BYTE_7_Literal },
- {"7字节ASCII",BYTE_7_Decimal },
- {"7字节ASCII字面值",BYTE_7_Literal_Decimal },
- {"8字节实位值",BYTE_8_RealBit },
- {"8字节虚位值",BYTE_8_VirtBit },
- {"8字节字面值",BYTE_8_Literal },
- {"8字节ASCII",BYTE_8_Decimal },
- {"8字节ASCII字面值",BYTE_8_Literal_Decimal },
- {"8字节转4字节浮点数",BYTE_8_4_Float },
- };
- // CDataConvertDlg 消息处理程序
- BOOL CDataConvertDlg::OnInitDialog()
- {
- CDialog::OnInitDialog();
- // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
- // 执行此操作
- SetIcon(m_hIcon, TRUE); // 设置大图标
- SetIcon(m_hIcon, FALSE); // 设置小图标
- CString strInput = "6E 30 31 41 47 51 36 44";
- SetDlgItemText(IDC_EDIT1,strInput);
- SetDlgItemText(ET_INDEX,"0");
- SetDlgItemText(ET_CUTLEN,"1");
- m_dConfs = 0.0;
- m_dOffset = 0.0;
- SetDlgItemText(ET_SBit,"0");
- SetDlgItemText(ET_EBit,"6");
- UpdateData(FALSE);
- // TODO: 在此添加额外的初始化代码
- for ( int i = 0; i< 56; i++)
- {
- if ( Aarry_ST_tm[i].strType == "")
- continue;
- m_cComBox.InsertString(i,Aarry_ST_tm[i].strType);
- }
- m_cComBox.SetCurSel(0);
- //SetTimer(0,20,NULL);
- return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
- }
- void CDataConvertDlg::OnPaint()
- {
- if (IsIconic())
- {
- CPaintDC dc(this); // 用于绘制的设备上下文
- SendMessage(WM_ICONERASEBKGND, reinterpret_cast<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 CDataConvertDlg::OnQueryDragIcon()
- {
- return static_cast<HCURSOR>(m_hIcon);
- }
- void CDataConvertDlg::OnBnClickedButton1()
- {
- #if 0
- //31015235544895800.000000
- long double lg_value = 31015235544895800.000000;
- lg_value -= 3.000000;
- float a = 22.68;
- char b[4] = {0};
- memcpy(b,&a,4);
- union
- {
- float fNum ;
- BYTE ch[4];
- }uBtoF;
- uBtoF.ch[0] = b[0];
- uBtoF.ch[1] = b[1];
- uBtoF.ch[2] = b[2];
- uBtoF.ch[3] = b[3];
- uBtoF.fNum;
- float c = *(float*)b;
- #endif
- char szValue[80] = {0};
- BYTE szSource[20] = {0};
- CString strInput ;
- GetDlgItemText(IDC_EDIT1,strInput);
- static CCaluConvert ct;
- /*****************将编辑框数据,转为16进制ASCII值字符数组*****************/
- // eg: "3E303442" -> 0x3E303442;
- int iInputLen = strInput.GetLength();
- for(int i = 0,j = 0; i < iInputLen ; i = i+3,j++ )
- szSource[j] = ct.TwoHexCharToChar(strInput.GetAt(i), strInput.GetAt(i+1));
- /*****************将编辑框数据,转为16进制ASCII值字符数组*****************/
- int iIndex = GetDlgItemInt(ET_INDEX);
- int iCutLen = GetDlgItemInt(ET_CUTLEN);
- int iSBit = GetDlgItemInt(ET_SBit);
- int iEBit = GetDlgItemInt(ET_EBit);
- /************************************************************************/
- string strBinary;
- for( int i = 0; i < iCutLen; i++)
- strBinary += ct.ReturnBinaryReverseString(szSource[iIndex+i]);
- SetDlgItemText(ET_Binary,strBinary.c_str());
- string strBinary2;
- for( int i = 0; i < iCutLen; i++)
- strBinary2 += ct.ReturnBinaryString(szSource[iIndex+iCutLen-i-1]);
- SetDlgItemText(ET_Binary2,strBinary2.c_str());
- /************************************************************************/
- UpdateData(TRUE);
- int iConvType;
- CString strType;
- GetDlgItemText(IDC_COMBO1,strType);
- for ( int i = 0; i < 56 ; i++)
- {
- if ( strType == Aarry_ST_tm[i].strType)
- iConvType = Aarry_ST_tm[i].dwType;
- }
- ct.CONVERTS(szValue,80,szSource,20,iIndex,iCutLen,iSBit,iEBit,m_dConfs,m_dOffset,iConvType);
- SetDlgItemText(IDC_EDIT2,szValue);
- }
- void CDataConvertDlg::OnEnChangeCutlen()
- {
- // TODO: 如果该控件是 RICHEDIT 控件,则它将不会
- // 发送该通知,除非重写 CDialog::OnInitDialog()
- // 函数并调用 CRichEditCtrl().SetEventMask(),
- // 同时将 ENM_CHANGE 标志“或”运算到掩码中。
- // TODO: 在此添加控件通知处理程序代码
- int iCutLen = GetDlgItemInt(ET_CUTLEN);
- switch(iCutLen)
- {
- case 1:
- m_cComBox.SetCurSel(0);
- break;
- case 2:
- m_cComBox.SetCurSel(6);
- break;
- case 3:
- m_cComBox.SetCurSel(19);
- break;
- case 4:
- m_cComBox.SetCurSel(24);
- break;
- case 5:
- m_cComBox.SetCurSel(30);
- break;
- case 6:
- m_cComBox.SetCurSel(35);
- break;
- case 7:
- m_cComBox.SetCurSel(40);
- break;
- case 8:
- m_cComBox.SetCurSel(45);
- break;
- }
- UpdateData(FALSE);
- }
|