📄 glovesampledlg.cpp
字号:
// GloveSampleDlg.cpp : implementation file
//
#include "stdafx.h"
#include "GloveSample.h"
#include "GloveSampleDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CGloveSampleDlg dialog
CGloveSampleDlg::CGloveSampleDlg(CWnd* pParent /*=NULL*/)
: CDialog(CGloveSampleDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CGloveSampleDlg)
//}}AFX_DATA_INIT
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CGloveSampleDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CGloveSampleDlg)
DDX_Control(pDX, IDC_COMLIST, m_ComList);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CGloveSampleDlg, CDialog)
//{{AFX_MSG_MAP(CGloveSampleDlg)
ON_LBN_SELCHANGE(IDC_COMLIST, OnSelchangeComlist)
ON_WM_TIMER()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CGloveSampleDlg message handlers
BOOL CGloveSampleDlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// Add comport choices to the comport listbox.
m_ComList.AddString("Com 1");
m_ComList.AddString("Com 2");
m_ComList.AddString("Com 3");
m_ComList.AddString("Com 4");
m_pGlove = NULL;
UpdateInputs();
// Create a timer which pulses 10 times a second.
SetTimer(1,10,NULL);
return TRUE;
}
// Read sensor information, and update the dialog box's static text.
bool CGloveSampleDlg::UpdateInputs()
{
// Check whether a glove is currently connected.
if (m_pGlove) {
unsigned short acGloveData[18];
char acString[256];
int iGesture;
// Read raw data
fdGetSensorRawAll(m_pGlove,acGloveData);
iGesture = fdGetGesture(m_pGlove);
// Update text
sprintf(acString, "%d", acGloveData[0]);
SetDlgItemText(IDC_S0,acString);
sprintf(acString, "%d", acGloveData[1]);
SetDlgItemText(IDC_S1,acString);
sprintf(acString, "%d", acGloveData[2]);
SetDlgItemText(IDC_S2,acString);
sprintf(acString, "%d", acGloveData[3]);
SetDlgItemText(IDC_S3,acString);
sprintf(acString, "%d", acGloveData[4]);
SetDlgItemText(IDC_S4,acString);
sprintf(acString, "%d", acGloveData[5]);
SetDlgItemText(IDC_S5,acString);
sprintf(acString, "%d", acGloveData[6]);
SetDlgItemText(IDC_S6,acString);
sprintf(acString, "%d", acGloveData[7]);
SetDlgItemText(IDC_S7,acString);
sprintf(acString, "%d", acGloveData[8]);
SetDlgItemText(IDC_S8,acString);
sprintf(acString, "%d", acGloveData[9]);
SetDlgItemText(IDC_S9,acString);
sprintf(acString, "%d", acGloveData[10]);
SetDlgItemText(IDC_S10,acString);
sprintf(acString, "%d", acGloveData[11]);
SetDlgItemText(IDC_S11,acString);
sprintf(acString, "%d", acGloveData[12]);
SetDlgItemText(IDC_S12,acString);
sprintf(acString, "%d", acGloveData[13]);
SetDlgItemText(IDC_S13,acString);
// Tilt sensors.
sprintf(acString, "%d", acGloveData[FD_PITCH]);
SetDlgItemText(IDC_SENSORPITCH,acString);
sprintf(acString, "%d", acGloveData[FD_ROLL]);
SetDlgItemText(IDC_SENSORROLL,acString);
// Gesture
if (iGesture != -1) {
sprintf(acString,"%d",iGesture);
} else {
sprintf(acString,"%s","None");
}
SetDlgItemText(IDC_GESTURE,acString);
} else {
// With no glove, we just zero out all text.
SetDlgItemText(IDC_S0,"");
SetDlgItemText(IDC_S1,"");
SetDlgItemText(IDC_S2,"");
SetDlgItemText(IDC_S3,"");
SetDlgItemText(IDC_S4,"");
SetDlgItemText(IDC_S5,"");
SetDlgItemText(IDC_S6,"");
SetDlgItemText(IDC_S7,"");
SetDlgItemText(IDC_S8,"");
SetDlgItemText(IDC_S9,"");
SetDlgItemText(IDC_S10,"");
SetDlgItemText(IDC_S11,"");
SetDlgItemText(IDC_S12,"");
SetDlgItemText(IDC_S13,"");
SetDlgItemText(IDC_SENSORPITCH,"");
SetDlgItemText(IDC_SENSORROLL,"");
SetDlgItemText(IDC_GESTURE,"");
}
return true;
}
// Here is where the glove connection is opened and initialized.
void CGloveSampleDlg::OnSelchangeComlist()
{
char acComString[256];
int iPort;
// Index into list box indicates com number.
iPort = m_ComList.GetCurSel() + 1;
// Close current connection.
if (m_pGlove) fdClose(m_pGlove);
m_pGlove = NULL;
// Create new connection.
sprintf(acComString,"COM%d",iPort);
m_pGlove = fdOpen(acComString);
if (m_pGlove == NULL) {
MessageBox("Failed to find a glove.","5dt Glove Sample");
return;
}
}
void CGloveSampleDlg::OnTimer(UINT nIDEvent)
{
// Update inputs on timer interrupt.
UpdateInputs();
CDialog::OnTimer(nIDEvent);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -