我正在开发一个需要使用IRda从Polar心率设备读取数据的项目。 Polar有一个通信DLL和我从他们的网站下载的一些示例源。它说它是用VS v 6.0编译的。我没有那个编译器,VS2013会抛出很多编译错误。
文件集包括:hrmcom.dll,hrmcom.h,hrmcom.lib,HRMComRSCS.h。
我正在寻找一种在VS 6.0模式下编译源代码的方法。这可能与最新的VS?我不是一个优秀的程序员,从头开始使用交付的dll和/或lib。它只有关于界面的文档和使用上述文件的示例源。我搜索了类似的Q但是在版本中没有一个回溯。
有什么建议吗?我是不是死路了??
编辑: 以下是示例源代码。
void fnPolarSampleConnection (HWND hWnd)
{
POLAR_SSET_GENERAL psg;
POLAR_SSET_MONITORINFO psmi;
POLAR_EXERCISEFILE pef;
int iSamplingRate, i, iTotal, iHR, iSpeed;
TCHAR tcFile[MAX_PATH];
if (!fnHRMCom_ResetIRCommunication (0))
{
// Resetting IR connection was not successful
break;
}
if (!fnHRMCom_StartIRCommunication (HRMCOM_PARAM_IRDA, ”IR”))
{
// Port couldn't be opened, stop connection thread
fnHRMCom_EndIRCommunication (FALSE);
break;
}
// Fill general information
ZeroMemory (&psg, sizeof(psg));
psg.iSize = sizeof (psg);
psg.iConnection = HRMCOM_CONNECTION_IR;
psg.bConnectionDlg = TRUE;
psg.hOwnerWnd = hWnd; // Owner window handle
// Reset monitor information
ZeroMemory (&psmi, sizeof(psmi));
// Read monitor info from HR monitor
if (!fnHRMCom_ReadMonitorInfo (&psg, &psmi))
{
// Reading failed, close connection
fnHRMCom_EndIRCommunication (FALSE);
break;
}
for (i = 0; i < psmi. iTotalFiles; i++)
{
if (!fnHRMCom_ReadExerciseFile (hDlg, i, FALSE))
{
// Save analyzed file as HRM
ZeroMemory (&szFile, sizeof (szFile));
strcpy (szFile, ”c:\\temp\\exercise.hrm”);
if (!fnHRMCom_SaveExerciseHRM (hDlg, szFile, 0))
{
// Saving failed...
}
// Read sampling (recording) rate
iSamplingRate = fnHRMCom_GetRecParam (REC_SAMPLING_RATE);
// Read total number of samples
iTotal = fnHRMCom_GetNbrOfHRMSamples ();
// Get all heart rate and speed values
for (i = 0; i < iTotal; i++)
{
iHR = fnHRMCom_GetHRMSamples (CC_HRATE, i);
iSpeed = fnHRMCom_GetHRMSamples (CC_SPEED,i);
}
if (1 == fnHRMCom_GetRecParam (REC_EURO_US_UNITS))
{
// Speed in mph, altitude in feet
}
else
{
// Speed in km/h, altitude in meters
}
}
}
// Set HR monitor to watch mode
fnHRMCom_SendMonitorToWatchMode (&psg);
// End IR communication
fnHRMCom_EndIRCommunication (FALSE);
}
编译器有break语句的问题(这些应该返回吗?) 它在第二个if中使用的字符串“IR”有问题。这应该是一个LPTSTR tcPort变量(它作为示例“COM1:”,但对于IR,它没有常量或任何东西。 我目前无法运行编译器,但只要有时间,我就会这样做。
到目前为止,我已经感谢你的答复了。
下面是我能够编译的代码。我抛弃了一些我认为对代码工作不重要的东西。
#include <windows.h>
#include "hrmcom.h"
void main(HWND hWnd)
{
POLAR_SSET_GENERAL psg;
POLAR_SSET_MONITORINFO psmi;
int iSamplingRate, i, iTotal, iHR, iSpeed;
if (!fnHRMCom_ResetIRCommunication(0))
{
// Resetting IR connection was not successful
return;
}
if (!fnHRMCom_StartIRCommunication(HRMCOM_PARAM_IRDA, "IR"))
{
// Port couldn't be opened, stop connection thread
fnHRMCom_EndIRCommunication(FALSE);
return;
}
// Fill general information
ZeroMemory(&psg, sizeof(psg));
psg.iSize = sizeof (psg);
psg.iConnection = HRMCOM_CONNECTION_IR;
psg.bConnectionDlg = TRUE;
psg.hOwnerWnd = hWnd; // Owner window handle
// Reset monitor information
ZeroMemory(&psmi, sizeof(psmi));
// Read monitor info from HR monitor
if (!fnHRMCom_ReadMonitorInfo(&psg, &psmi))
{
// Reading failed, close connection
fnHRMCom_EndIRCommunication(FALSE);
return;
}
for (i = 0; i < psmi.iTotalFiles; i++)
{
if (!fnHRMCom_ReadExerciseFile(hWnd, i, FALSE))
{
// Read sampling (recording) rate
iSamplingRate = fnHRMCom_GetRecParam(REC_SAMPLING_RATE);
// Read total number of samples
iTotal = fnHRMCom_GetNbrOfHRMSamples();
// Get all heart rate and speed values
for (i = 0; i < iTotal; i++)
{
iHR = fnHRMCom_GetHRMSamples(CC_HRATE, i);
iSpeed = fnHRMCom_GetHRMSamples(CC_SPEED, i);
}
if (1 == fnHRMCom_GetRecParam(REC_EURO_US_UNITS))
{
// Speed in mph, altitude in feet
}
else
{
// Speed in km/h, altitude in meters
}
}
}
// Set HR monitor to watch mode
fnHRMCom_SendMonitorToWatchMode(&psg);
// End IR communication
fnHRMCom_EndIRCommunication(FALSE);
}
我想知道这个项目如何需要编译它现在是一个控制台程序,但似乎是调用父HWND的对话框窗口。我现在很困惑。为了使它工作,我需要更改fnPolarSampleConnection的名称。这可能是一个需要合并到Windows主应用程序中的函数吗?