void testMinidriverStartSequence(SCARDHANDLE* phCard) { BeidSelectCACApplets1(*phCard); SendMSCmd(*phCard); BeidSelectCACApplets2(*phCard); GetCardData(*phCard); }
s32 DemoTransaksi(void) { if(!GetCardData()) return 0; if(!compareFinger()) return 0; return 1; }
//绘画扑克 void CWeaveCard::DrawCardControl(CDC * pDC, int nXPos, int nYPos) { //设置位置 SetControlPoint(nXPos,nYPos); //显示判断 if (m_wCardCount==0) return; //变量定义 int nXScreenPos=0,nYScreenPos=0; int nItemWidth=0,nItemHeight=0,nItemWidthEx=0,nItemHeightEx=0; //绘画扑克 switch (m_CardDirection) { case Direction_East: //东向 { //绘画扑克 for (WORD i=0;i<3;i++) { int nXScreenPos=m_ControlPoint.x-g_CardResource.m_ImageTableRight.GetViewWidth(); int nYScreenPos=m_ControlPoint.y+i*g_CardResource.m_ImageTableRight.GetViewHeight(); g_CardResource.m_ImageTableRight.DrawCardItem(pDC,GetCardData(2-i),nXScreenPos,nYScreenPos); } //第四扑克 if (m_wCardCount==4) { int nXScreenPos=m_ControlPoint.x-g_CardResource.m_ImageTableRight.GetViewWidth(); int nYScreenPos=m_ControlPoint.y-5+g_CardResource.m_ImageTableRight.GetViewHeight(); g_CardResource.m_ImageTableRight.DrawCardItem(pDC,GetCardData(3),nXScreenPos,nYScreenPos); } break; } case Direction_South: //南向 { //绘画扑克 for (WORD i=0;i<3;i++) { int nXScreenPos=m_ControlPoint.x+i*g_CardResource.m_ImageTableBottom.GetViewWidth(); int nYScreenPos=m_ControlPoint.y-g_CardResource.m_ImageTableBottom.GetViewHeight()-5; g_CardResource.m_ImageTableBottom.DrawCardItem(pDC,GetCardData(i),nXScreenPos,nYScreenPos); } //第四扑克 if (m_wCardCount==4) { int nXScreenPos=m_ControlPoint.x+g_CardResource.m_ImageTableBottom.GetViewWidth(); int nYScreenPos=m_ControlPoint.y-g_CardResource.m_ImageTableBottom.GetViewHeight()-5*2; g_CardResource.m_ImageTableBottom.DrawCardItem(pDC,GetCardData(3),nXScreenPos,nYScreenPos); } break; } case Direction_West: //西向 { //绘画扑克 for (WORD i=0;i<3;i++) { int nXScreenPos=m_ControlPoint.x; int nYScreenPos=m_ControlPoint.y+i*g_CardResource.m_ImageTableLeft.GetViewHeight(); g_CardResource.m_ImageTableLeft.DrawCardItem(pDC,GetCardData(i),nXScreenPos,nYScreenPos); } //第四扑克 if (m_wCardCount==4) { int nXScreenPos=m_ControlPoint.x; int nYScreenPos=m_ControlPoint.y+g_CardResource.m_ImageTableLeft.GetViewHeight()-5; g_CardResource.m_ImageTableLeft.DrawCardItem(pDC,GetCardData(3),nXScreenPos,nYScreenPos); } break; } case Direction_North: //北向 { //绘画扑克 for (WORD i=0;i<3;i++) { int nYScreenPos=m_ControlPoint.y; int nXScreenPos=m_ControlPoint.x-(i+1)*g_CardResource.m_ImageTableTop.GetViewWidth(); g_CardResource.m_ImageTableTop.DrawCardItem(pDC,GetCardData(2-i),nXScreenPos,nYScreenPos); } //第四扑克 if (m_wCardCount==4) { int nYScreenPos=m_ControlPoint.y-5; int nXScreenPos=m_ControlPoint.x-2*g_CardResource.m_ImageTableTop.GetViewWidth(); g_CardResource.m_ImageTableTop.DrawCardItem(pDC,GetCardData(3),nXScreenPos,nYScreenPos); } break; } } return; }
//绘画扑克 void CWeaveCard::DrawCardControl(CDC * pDC) { //显示判断 if (m_wCardCount==0) return; //变量定义 int nXScreenPos=0,nYScreenPos=0; int nItemWidth=0,nItemHeight=0,nItemWidthEx=0,nItemHeightEx=0; //绘画扑克 switch (m_CardDirection) { case Direction_East: //东向 { //变量定义 nItemWidth=g_CardResource.m_ImageTableRight.GetViewWidth(); nItemHeight=g_CardResource.m_ImageTableRight.GetViewHeight()-10; nItemWidthEx=g_CardResource.m_ImageTableTop.GetViewWidth(); nItemHeightEx=g_CardResource.m_ImageTableTop.GetViewHeight()-10; nYScreenPos = m_ControlPoint.y; if(m_cbDirectionCardPos == 2) { nXScreenPos=m_ControlPoint.x+nItemWidthEx; g_CardResource.m_ImageTableTop.DrawCardItem(pDC,GetCardData(2),nXScreenPos,nYScreenPos); nYScreenPos += nItemHeightEx; } else { nXScreenPos=m_ControlPoint.x+nItemWidthEx*2-nItemWidth; g_CardResource.m_ImageTableRight.DrawCardItem(pDC,GetCardData(2),nXScreenPos,nYScreenPos); nYScreenPos += nItemHeight; } //第二扑克 nXScreenPos=m_ControlPoint.x+nItemWidthEx*2-nItemWidth; g_CardResource.m_ImageTableRight.DrawCardItem(pDC,GetCardData(1),nXScreenPos,nYScreenPos); //第四扑克 if (m_wCardCount==4) { g_CardResource.m_ImageTableRight.DrawCardItem(pDC,GetCardData(3),nXScreenPos,nYScreenPos-12); } nYScreenPos += nItemHeight; //第一扑克 if(m_cbDirectionCardPos == 0) { nXScreenPos=m_ControlPoint.x+nItemWidthEx; g_CardResource.m_ImageTableBottom.DrawCardItem(pDC,GetCardData(0),nXScreenPos,nYScreenPos); } else { nXScreenPos=m_ControlPoint.x+nItemWidthEx*2-nItemWidth; g_CardResource.m_ImageTableRight.DrawCardItem(pDC,GetCardData(0),nXScreenPos,nYScreenPos); } break; } case Direction_South: //南向 { //变量定义 nItemWidth=g_CardResource.m_ImageTableBottom.GetViewWidth(); nItemHeight=g_CardResource.m_ImageTableBottom.GetViewHeight(); nItemWidthEx=g_CardResource.m_ImageTableRight.GetViewWidth(); nItemHeightEx=g_CardResource.m_ImageTableRight.GetViewHeight(); //第三扑克 nXScreenPos = m_ControlPoint.x; if(m_cbDirectionCardPos == 2) { nXScreenPos -= nItemWidthEx; nYScreenPos=m_ControlPoint.y+nItemHeightEx; g_CardResource.m_ImageTableLeft.DrawCardItem(pDC,GetCardData(2),nXScreenPos,nYScreenPos); } else { nXScreenPos -= nItemWidth; nYScreenPos=m_ControlPoint.y+nItemHeightEx*2-nItemHeight; g_CardResource.m_ImageTableBottom.DrawCardItem(pDC,GetCardData(2),nXScreenPos,nYScreenPos); } //第二扑克 nXScreenPos -= nItemWidth; nYScreenPos=m_ControlPoint.y+nItemHeightEx*2-nItemHeight; g_CardResource.m_ImageTableBottom.DrawCardItem(pDC,GetCardData(1),nXScreenPos,nYScreenPos); //第四扑克 if (m_wCardCount==4) { g_CardResource.m_ImageTableBottom.DrawCardItem(pDC,GetCardData(3),nXScreenPos,nYScreenPos-12); } //第一扑克 if(m_cbDirectionCardPos == 0) { nXScreenPos -= nItemWidthEx; nYScreenPos=m_ControlPoint.y+nItemHeightEx; g_CardResource.m_ImageTableRight.DrawCardItem(pDC,GetCardData(0),nXScreenPos,nYScreenPos); } else { nXScreenPos -= nItemWidth; nYScreenPos=m_ControlPoint.y+nItemHeightEx*2-nItemHeight; g_CardResource.m_ImageTableBottom.DrawCardItem(pDC,GetCardData(0),nXScreenPos,nYScreenPos); } break; } case Direction_West: //西向 { //变量定义 nItemWidth=g_CardResource.m_ImageTableLeft.GetViewWidth(); nItemHeight=g_CardResource.m_ImageTableLeft.GetViewHeight()-10; nItemWidthEx=g_CardResource.m_ImageTableBottom.GetViewWidth(); nItemHeightEx=g_CardResource.m_ImageTableBottom.GetViewHeight()-10; if(m_cbDirectionCardPos != 1) { //第一扑克 nYScreenPos=m_ControlPoint.y-nItemHeightEx-nItemHeight*2; if(m_cbDirectionCardPos == 0) { nXScreenPos=m_ControlPoint.x-nItemWidthEx*2; g_CardResource.m_ImageTableBottom.DrawCardItem(pDC,GetCardData(0),nXScreenPos,nYScreenPos); nYScreenPos += nItemHeightEx; } else { nXScreenPos=m_ControlPoint.x-nItemWidthEx*2; g_CardResource.m_ImageTableLeft.DrawCardItem(pDC,GetCardData(0),nXScreenPos,nYScreenPos); nYScreenPos += nItemHeight; } //第二扑克 nXScreenPos=m_ControlPoint.x-nItemWidthEx*2; g_CardResource.m_ImageTableLeft.DrawCardItem(pDC,GetCardData(1),nXScreenPos,nYScreenPos); //第四扑克 if (m_wCardCount==4) { g_CardResource.m_ImageTableLeft.DrawCardItem(pDC,GetCardData(3),nXScreenPos,nYScreenPos-12); } nYScreenPos += nItemHeight; //第三扑克 if(m_cbDirectionCardPos == 2) { nXScreenPos=m_ControlPoint.x-nItemWidthEx*2; g_CardResource.m_ImageTableBottom.DrawCardItem(pDC,GetCardData(2),nXScreenPos,nYScreenPos); } else { nXScreenPos=m_ControlPoint.x-nItemWidthEx*2; g_CardResource.m_ImageTableLeft.DrawCardItem(pDC,GetCardData(2),nXScreenPos,nYScreenPos); } } else { //第一扑克 nYScreenPos = m_ControlPoint.y-nItemHeight*3; //nXScreenPos=m_ControlPoint.x-nItemWidth; nXScreenPos=m_ControlPoint.x-nItemWidthEx*2; g_CardResource.m_ImageTableLeft.DrawCardItem(pDC,GetCardData(0),nXScreenPos,nYScreenPos); //第二扑克 nYScreenPos += nItemHeight; g_CardResource.m_ImageTableLeft.DrawCardItem(pDC,GetCardData(1),nXScreenPos,nYScreenPos); //第四扑克 if (m_wCardCount==4) { g_CardResource.m_ImageTableLeft.DrawCardItem(pDC,GetCardData(3),nXScreenPos,nYScreenPos-12); } //第三扑克 nYScreenPos += nItemHeight; g_CardResource.m_ImageTableLeft.DrawCardItem(pDC,GetCardData(2),nXScreenPos,nYScreenPos); } break; } case Direction_North: //北向 { //变量定义 nItemWidth=g_CardResource.m_ImageTableTop.GetViewWidth(); nItemHeight=g_CardResource.m_ImageTableTop.GetViewHeight(); nItemWidthEx=g_CardResource.m_ImageTableLeft.GetViewWidth(); nItemHeightEx=g_CardResource.m_ImageTableLeft.GetViewHeight(); //第三扑克 nXScreenPos = m_ControlPoint.x; if(m_cbDirectionCardPos == 2) { nYScreenPos = m_ControlPoint.y-nItemHeight; g_CardResource.m_ImageTableRight.DrawCardItem(pDC,GetCardData(2),nXScreenPos,nYScreenPos); nXScreenPos += nItemWidthEx; } else { nYScreenPos = m_ControlPoint.y-nItemHeight; g_CardResource.m_ImageTableTop.DrawCardItem(pDC,GetCardData(2),nXScreenPos,nYScreenPos); nXScreenPos += nItemWidth; } //第二扑克 nYScreenPos = m_ControlPoint.y-nItemHeight; g_CardResource.m_ImageTableTop.DrawCardItem(pDC,GetCardData(1),nXScreenPos,nYScreenPos); //第四扑克 if (m_wCardCount==4) { g_CardResource.m_ImageTableTop.DrawCardItem(pDC,GetCardData(3),nXScreenPos,nYScreenPos-12); } nXScreenPos += nItemWidth; //第一扑克 if(m_cbDirectionCardPos == 0) { nYScreenPos=m_ControlPoint.y-nItemHeight; g_CardResource.m_ImageTableLeft.DrawCardItem(pDC,GetCardData(0),nXScreenPos,nYScreenPos); } else { nYScreenPos=m_ControlPoint.y-nItemHeight; g_CardResource.m_ImageTableTop.DrawCardItem(pDC,GetCardData(0),nXScreenPos,nYScreenPos); } break; } } return; }
//绘画麻将 void CWeaveCard::DrawCardControl(CDC * pDC) { //显示判断 if (m_wCardCount==0) return; //变量定义 int nXScreenPos=0,nYScreenPos=0; int nItemWidth=0,nItemHeight=0,nItemWidthEx=0,nItemHeightEx=0; //绘画麻将 switch (m_CardDirection) { case Direction_East: //东向 { //变量定义 nItemWidth=g_CardResource.m_ImageTableRight.GetViewWidth(); nItemHeight=g_CardResource.m_ImageTableRight.GetViewHeight(); nItemWidthEx=g_CardResource.m_ImageTableTop.GetViewWidth(); nItemHeightEx=g_CardResource.m_ImageTableTop.GetViewHeight(); //第四麻将 if (m_wCardCount==4) { nXScreenPos=m_ControlPoint.x; nYScreenPos=m_ControlPoint.y; g_CardResource.m_ImageTableTop.DrawCardItem(pDC,GetCardData(3),nXScreenPos,nYScreenPos); } //第三麻将 nYScreenPos=m_ControlPoint.y; nXScreenPos=m_ControlPoint.x+nItemWidthEx; g_CardResource.m_ImageTableTop.DrawCardItem(pDC,GetCardData(2),nXScreenPos,nYScreenPos); //第二麻将 nYScreenPos=m_ControlPoint.y+nItemHeightEx; nXScreenPos=m_ControlPoint.x+nItemWidthEx*2-nItemWidth; g_CardResource.m_ImageTableRight.DrawCardItem(pDC,GetCardData(1),nXScreenPos,nYScreenPos); //第一麻将 nXScreenPos=m_ControlPoint.x+nItemWidthEx*2-nItemWidth; nYScreenPos=m_ControlPoint.y+nItemHeightEx+nItemHeight; g_CardResource.m_ImageTableRight.DrawCardItem(pDC,GetCardData(0),nXScreenPos,nYScreenPos); break; } case Direction_South: //南向 { //变量定义 nItemWidth=g_CardResource.m_ImageTableBottom.GetViewWidth(); nItemHeight=g_CardResource.m_ImageTableBottom.GetViewHeight(); nItemWidthEx=g_CardResource.m_ImageTableRight.GetViewWidth(); nItemHeightEx=g_CardResource.m_ImageTableRight.GetViewHeight(); //第四麻将 if (m_wCardCount==4) { nYScreenPos=m_ControlPoint.y; nXScreenPos=m_ControlPoint.x-nItemWidthEx; g_CardResource.m_ImageTableRight.DrawCardItem(pDC,GetCardData(3),nXScreenPos,nYScreenPos); } //第三麻将 nXScreenPos=m_ControlPoint.x-nItemWidthEx; nYScreenPos=m_ControlPoint.y+nItemHeightEx; g_CardResource.m_ImageTableRight.DrawCardItem(pDC,GetCardData(2),nXScreenPos,nYScreenPos); //第二麻将 nXScreenPos=m_ControlPoint.x-nItemWidthEx-nItemWidth; nYScreenPos=m_ControlPoint.y+nItemHeightEx*2-nItemHeight; g_CardResource.m_ImageTableBottom.DrawCardItem(pDC,GetCardData(1),nXScreenPos,nYScreenPos); //第一麻将 nXScreenPos=m_ControlPoint.x-nItemWidthEx-nItemWidth*2; nYScreenPos=m_ControlPoint.y+nItemHeightEx*2-nItemHeight; g_CardResource.m_ImageTableBottom.DrawCardItem(pDC,GetCardData(0),nXScreenPos,nYScreenPos); break; } case Direction_West: //西向 { //变量定义 nItemWidth=g_CardResource.m_ImageTableLeft.GetViewWidth(); nItemHeight=g_CardResource.m_ImageTableLeft.GetViewHeight(); nItemWidthEx=g_CardResource.m_ImageTableBottom.GetViewWidth(); nItemHeightEx=g_CardResource.m_ImageTableBottom.GetViewHeight(); //第一麻将 nXScreenPos=m_ControlPoint.x-nItemWidthEx*2; nYScreenPos=m_ControlPoint.y-nItemHeightEx-nItemHeight*2; g_CardResource.m_ImageTableLeft.DrawCardItem(pDC,GetCardData(0),nXScreenPos,nYScreenPos); //第二麻将 nXScreenPos=m_ControlPoint.x-nItemWidthEx*2; nYScreenPos=m_ControlPoint.y-nItemHeightEx-nItemHeight; g_CardResource.m_ImageTableLeft.DrawCardItem(pDC,GetCardData(1),nXScreenPos,nYScreenPos); //第三麻将 nYScreenPos=m_ControlPoint.y-nItemHeightEx; nXScreenPos=m_ControlPoint.x-nItemWidthEx*2; g_CardResource.m_ImageTableBottom.DrawCardItem(pDC,GetCardData(2),nXScreenPos,nYScreenPos); //第四麻将 if (m_wCardCount==4) { nXScreenPos=m_ControlPoint.x-nItemWidthEx; nYScreenPos=m_ControlPoint.y-nItemHeightEx; g_CardResource.m_ImageTableBottom.DrawCardItem(pDC,GetCardData(3),nXScreenPos,nYScreenPos); } break; } case Direction_North: //北向 { //变量定义 nItemWidth=g_CardResource.m_ImageTableTop.GetViewWidth(); nItemHeight=g_CardResource.m_ImageTableTop.GetViewHeight(); nItemWidthEx=g_CardResource.m_ImageTableLeft.GetViewWidth(); nItemHeightEx=g_CardResource.m_ImageTableLeft.GetViewHeight(); //第三麻将 nXScreenPos=m_ControlPoint.x; nYScreenPos=m_ControlPoint.y-nItemHeightEx*2; g_CardResource.m_ImageTableLeft.DrawCardItem(pDC,GetCardData(2),nXScreenPos,nYScreenPos); //第四麻将 if (m_wCardCount==4) { nXScreenPos=m_ControlPoint.x; nYScreenPos=m_ControlPoint.y-nItemHeightEx; g_CardResource.m_ImageTableLeft.DrawCardItem(pDC,GetCardData(3),nXScreenPos,nYScreenPos); } //第二麻将 nXScreenPos=m_ControlPoint.x+nItemWidthEx; nYScreenPos=m_ControlPoint.y-nItemHeightEx*2; g_CardResource.m_ImageTableTop.DrawCardItem(pDC,GetCardData(1),nXScreenPos,nYScreenPos); //第一麻将 nYScreenPos=m_ControlPoint.y-nItemHeightEx*2; nXScreenPos=m_ControlPoint.x+nItemWidthEx+nItemWidth; g_CardResource.m_ImageTableTop.DrawCardItem(pDC,GetCardData(0),nXScreenPos,nYScreenPos); break; } } return; }
int _tmain(int argc, _TCHAR* argv[]) { //WCHAR* pmszReaders = NULL; WCHAR* pBmszReaders; WCHAR* pfirstReader; WCHAR* pnexttReader; LONG retval = 0; SCARDCONTEXT hContext; DWORD cchReaders = SCARD_AUTOALLOCATE; DWORD dwTotalLen = 0; SCARDHANDLE hCard; DWORD dwActiveProtocol; // BYTE SW1, SW2; LPBYTE pbAttr = NULL; DWORD cByte = SCARD_AUTOALLOCATE; // DWORD i; DWORD iSleep = 250; retval = SCardEstablishContext ( SCARD_SCOPE_USER,NULL,NULL,&hContext); if(retval == SCARD_S_SUCCESS) { retval = SCardListReaders(hContext,NULL,(LPWSTR)&pBmszReaders,&cchReaders); if(retval == SCARD_S_SUCCESS) { pfirstReader = pBmszReaders; pnexttReader = pfirstReader; while(cchReaders > dwTotalLen+1) { //testGetATR_3(&hContext, pnexttReader); /* do { retval = SCardConnect(hContext,pnexttReader, SCARD_SHARE_EXCLUSIVE,SCARD_PROTOCOL_T0,&hCard,&dwActiveProtocol); } while (retval != SCARD_S_SUCCESS); wprintf(L"YAY, exclusive access, sleeping now for 10 minutes\n"); Sleep(600000); SCardReleaseContext(hContext); wprintf(L"YAY, released access, waiting for keystroke\n"); getchar();*/ retval = SCardConnect(hContext,pnexttReader, SCARD_SHARE_SHARED,SCARD_PROTOCOL_T0,&hCard,&dwActiveProtocol); if(retval == SCARD_S_SUCCESS) { //BeidSelectCACApplets1(hCard); //SendMSCmd(hCard); //BeidSelectCACApplets2(hCard); BeidSelectBELPICApplets(hCard); GetCardData(hCard); //testMinidriverStartSequence(&hCard); //testMacNewcardIssue(&hCard); //testCardConfusedIssue(&hCard); //testIDAIDSelect(&hCard); //testBELPICAIDSelect(&hCard); //testGetATR(&hCard); //testGetATR_2(&hCard); //testFullPathSelect(&hCard); //testStatus(&hCard); //testPPDU_GetFeatureList(&hCard); SCardDisconnect(hCard,SCARD_RESET_CARD); } else { wprintf(L"SCardConnect to %s failed\n",pfirstReader); } dwTotalLen += wcslen(pnexttReader)+1; if(dwTotalLen < cchReaders) pnexttReader = pfirstReader + dwTotalLen; } /*SCARD_LEAVE_CARD Do not do anything special. SCARD_RESET_CARD Reset the card. SCARD_UNPOWER_CARD Power down the card. SCARD_EJECT_CARD Eject the card.*/ SCardFreeMemory(hContext, pBmszReaders); } else { printf("SCardListReaders failed\n"); } } else { printf("SCardEstablishContext failed\n"); } SCardReleaseContext(hContext); printf("retval = %d\n",retval); getchar(); return 0; }