usNumber表示序列号。 cUnitID代表盒带标识符,但是不同的供应商有不同的格式来表示它。在哪里可以找到这种格式?还有其他地方可以获取逻辑现金单位标识符(类型编号)
答案 0 :(得分:0)
首先,我不知道您的意思是wosa / xfs库定义的“不同格式” .usType。 下面的定义来自Xfscdm.h,并且是固定的。
/* values of WFSCDMCASHUNIT.usType */
#define WFS_CDM_TYPENA (1)
#define WFS_CDM_TYPEREJECTCASSETTE (2)
#define WFS_CDM_TYPEBILLCASSETTE (3)
#define WFS_CDM_TYPECOINCYLINDER (4)
#define WFS_CDM_TYPECOINDISPENSER (5)
#define WFS_CDM_TYPERETRACTCASSETTE (6)
#define WFS_CDM_TYPECOUPON (7)
#define WFS_CDM_TYPEDOCUMENT (8)
#define WFS_CDM_TYPEREPCONTAINER (11)
#define WFS_CDM_TYPERECYCLING (12)
无论如何,下面的功能可以帮助您获取现金单元信息:
#include "Xfsapi.h"
#include "Xfscdm.h"
HRESULT getCashUnitInfo();
HSERVICE hService;
USHORT cashUnitCount; // Number of Logical Cash Units
LPWFSCDMCASHUNIT cashUnitInfo[6];
int main()
{
if(getCashUnitInfo()==WFS_SUCCESS) {
printf("Get CashUnit Info Failed\n");
return -1;
}
printf("Get Cash Unit Info Success.\n");
return 0;
}
HRESULT getCashUnitInfo()
{
LPWFSRESULT result;
HRESULT r;
r=WFSGetInfo(hService, WFS_INF_CDM_CASH_UNIT_INFO, NULL,20000, &result );
if ( r == WFS_SUCCESS) {
LPWFSCDMCUINFO cuInfo = (LPWFSCDMCUINFO)result->lpBuffer;
cashUnitCount = cuInfo->usCount;
ZF_LOGI("m_CashUnitCount:%d",cashUnitCount);
LPWFSCDMCASHUNIT * lppList = cuInfo->lppList;
for ( int i = 0; i < cuInfo->usCount; ++i ) {
USHORT no = lppList[i]->usNumber -1;
if (cashUnitInfo[no] == NULL)
cashUnitInfo[no] = new WFSCDMCASHUNIT();
//Copy logical Cash Unit info
memcpy(cashUnitInfo[no], lppList[i], sizeof(WFSCDMCASHUNIT) );
printf("m_CashUnitInfo[%d]->bAppLock----------------->%d\n",i,cashUnitInfo[no]->bAppLock);
printf("m_CashUnitInfo[%d]->bDevLock----------------->%d\n",i,cashUnitInfo[no]->bDevLock);
printf("m_CashUnitInfo[%d]->cCurrencyID-------------->%s\n",i,cashUnitInfo[no]->cCurrencyID);
printf("m_CashUnitInfo[%d]->cUnitID------------------>%s\n",i,cashUnitInfo[no]->cUnitID);
printf("m_CashUnitInfo[%d]->lpszCashUnitName--------->%s\n",i,cashUnitInfo[no]->lpszCashUnitName);
printf("m_CashUnitInfo[%d]->ulCount------------------>%ld\n",i,cashUnitInfo[no]->ulCount);
printf("m_CashUnitInfo[%d]->ulInitialCount----------->%ld\n",i,cashUnitInfo[no]->ulInitialCount);
printf("m_CashUnitInfo[%d]->ulMaximum---------------->%ld\n",i,cashUnitInfo[no]->ulMaximum);
printf("m_CashUnitInfo[%d]->ulMinimum---------------->%ld\n",i,cashUnitInfo[no]->ulMinimum);
printf("m_CashUnitInfo[%d]->ulRejectCount------------>%ld\n",i,cashUnitInfo[no]->ulRejectCount);
printf("m_CashUnitInfo[%d]->ulValues----------------->%ld\n",i,cashUnitInfo[no]->ulValues);
printf("m_CashUnitInfo[%d]->usNumber----------------->%hu\n",i,cashUnitInfo[no]->usNumber);
printf("m_CashUnitInfo[%d]->usStatus----------------->%hu\n",i,cashUnitInfo[no]->usStatus);
printf("m_CashUnitInfo[%d]->usType------------------->%hu\n",i,cashUnitInfo[no]->usType);
printf("m_CashUnitInfo[%d]->usNumPhysicalCUs--------->%hu\n",i,cashUnitInfo[no]->usNumPhysicalCUs);
printf("--------------------------------------------------------------------------------------------------\n");
}
}
WFSFreeResult( result );
printf("RESULT:%d\n",r);
return r;
}
答案 1 :(得分:0)
除了可以的建议答案外,别忘了分配足够的内存来打印结果,例如r = WFMAllocateMore(sizeof(WFSCDMCASHUNIT),result,(void **)&cashUnitInfo [no]);