static void disp_time() { int ret = 0; SYSTIME gSysTime; uint8 cSendBuf[7] = {0x00, 0xA4, 0x00, 0x00, 0x00, 0x3F, 0x00}; uint8 cRcvBuf[64], cRcvLen; char disp_msg[30]; while(1) { if(SP_KEY_CLEAR == sp_get_key()) return; if(ResetCard_A()) { ret = CpuCard_Apdu(0x0f, 7, cSendBuf, &cRcvLen, cRcvBuf); sp_disp_error("CpuCard_Apdu,ret=%04x", ret); Beep(3); ret = Deselect_A(); sp_disp_error("Deselect_A,ret=%04x", ret); Reset_Reader_TimeOut(); } GetTime(&gSysTime); sprintf(disp_msg, "normal=%02d:%02d:%02d", gSysTime.chHour, gSysTime.chMinute, gSysTime.chSecond); SP_PRINT(1, 0, disp_msg); sp_sleep(1000); } }
int main () { int rc; int s; struct sp_thread thread; /* Close the socket with no associated endpoints. */ rc = sp_init (); errno_assert (rc == 0); s = sp_socket (AF_SP, SP_PAIR); errno_assert (s != -1); rc = sp_close (s); errno_assert (rc == 0); rc = sp_term (); errno_assert (rc == 0); /* Test sp_term() before sp_close(). */ rc = sp_init (); errno_assert (rc == 0); sp_thread_init (&thread, worker, NULL); sp_sleep (10); rc = sp_term (); errno_assert (rc == 0); sp_thread_term (&thread); return 0; }
static void do_update_sum_amt(sp_context* ctx, sp_transdtl* record) { uint8 ret = 0; int diff_days = 0; sp_get_time(ctx); diff_days = sp_calc_diff_days(ctx->today, ctx->syspara.today_date); if(diff_days > 1) { ctx->syspara.yesterday_total_cnt = 0; ctx->syspara.yesterday_total_amt = 0; ctx->syspara.today_total_cnt = 0; ctx->syspara.today_total_amt = 0; memcpy(ctx->syspara.today_date, ctx->today, 4); } else if(diff_days == 1) { ctx->syspara.yesterday_total_cnt = ctx->syspara.today_total_cnt; ctx->syspara.yesterday_total_amt = ctx->syspara.today_total_amt; ctx->syspara.today_total_cnt = 0; ctx->syspara.today_total_amt = 0; memcpy(ctx->syspara.today_date, ctx->today, 4); } else if(diff_days < 0) { sp_disp_error("致命错误,时间倒退,diffdays=%d",diff_days); ret = sp_select_card_app(ctx, &ctx->card); } ctx->syspara.today_total_amt += record->amount; ++ctx->syspara.today_total_cnt; ret = sp_write_syspara(ctx); if(ret) { //致命错误联系管理员 sp_disp_error("致命错误,请联系管理员,错误码%04x", ret); sp_sleep(9999999); } }
static void test_get_time(sp_context* p_ctx) { SYSTIME tm; int32 key = 0; int ret = 0; char disp_msg[30]; // char phyid_hex[33] = {0}; // uint8 cSendBuf[7] = {0x00, 0xA4, 0x00, 0x00, 0x00, 0x3F, 0x00}; // uint8 cSendBuf[7] = {0x00, 0xA4, 0x00, 0x00, 0x00, 0xDF, 0x03}; // uint8 cRcvBuf[64], cRcvLen; sp_disp_error("in test_get_time"); GetTime(&tm); while(1) { key = sp_get_key(); if(SP_KEY_CLEAR == key) return; else if(SP_KEY_FUNC == key) { // ret = do_request_card(p_ctx, &p_ctx->card, phyid_hex); ret = sp_request_card(p_ctx->card.cardphyid); sp_disp_error("寻卡,ret=%d,%04x", ret, ret); } else if(SP_KEY_CONFIRM == key) { ret = sp_read_card(p_ctx, &p_ctx->card, SP_READ_FILE10 | SP_READ_FILE12 | SP_READ_FILE15 | SP_READ_FILE16); sp_disp_error("读卡,ret=%04x", ret); } else if(SP_KEY_0 == key) { ret = sp_cpu_reset_card(); sp_disp_error("key0--reset card,ret=%04x", ret); } else if(SP_KEY_1 == key) { ret = sp_cpu_select_df03();//CpuCard_Apdu(0x0f, 7, cSendBuf, &cRcvLen, cRcvBuf); sp_disp_error("key2--sel df03,ret=%04x", ret); /* ret = ResetCard_A(); if(ret) { ret = CpuCard_Apdu(0x0f, 7, cSendBuf, &cRcvLen, cRcvBuf); sp_disp_error("CpuCard_Apdu,ret=%04x", ret); Beep(3); ret = Deselect_A(); sp_disp_error("Deselect_A,ret=%04x", ret); //Reset_Reader_TimeOut(); } else { sp_disp_error("重设卡 error,ret=%04x", ret); ret = CpuCard_Apdu(0x0f, 7, cSendBuf, &cRcvLen, cRcvBuf); sp_disp_error("选df03,ret=%04x", ret); ret = Deselect_A(); sp_disp_error( "取消选择,ret=%04x", ret); //Reset_Reader_TimeOut(); } */ } else if(SP_KEY_2 == key) { ret = sp_cpu_deselect_card(); // Reset_Reader_TimeOut(); sp_disp_error("key1--deselect,ret=%04x", ret); } else if(SP_KEY_3 == key) { ret = sp_cpu_reset_time(p_ctx); sp_disp_error("reset_time,ret=%04x", ret); } GetTime(&tm); memset(disp_msg, 0, 30); sprintf(disp_msg, "%02d:%02d:%02d", tm.chHour, tm.chMinute, tm.chSecond); SP_PRINT(2, 0, disp_msg); sp_sleep(1000); } }