int BthModScan( IN BthMod_T *pMod ) { int ret = E_FAIL; int i; char Buf[MAX_LINE]; DBG_MSG(DBG_TRACE, "%s\n", __FUNCTION__); for (i = 0; i < COUNTOF(gBthModBaudTable); i = i + 1) { DBG_MSG(DBG_TRACE, "Scan: port %s, rate %d\n", pMod->Name, gBthModBaudTable[i].uRate); ret = UartOpen(pMod->hUart, pMod->Name, gBthModBaudTable[i].uRate, UART_DATA_BITS_8, UART_PARITY_NONE, UART_STOP_1); CHECK_RETVAL(ret, ExitOnFailure); /* Ensure we are flowed on */ ret = UartSetStatus(pMod->hUart, UART_STATUS_SETRTS); CHECK_RETVAL(ret, ExitOnFailure); /* Attempt to exit command mode, we need to be in a known state */ ret = UartLineWrite2(pMod->hUart, "\n---\n", 100, 50); CHECK_RETVAL(ret, ExitOnFailure); /* Dump the read data, we do not chare what was returned */ ret = UartPurge(pMod->hUart); CHECK_RETVAL(ret, ExitOnFailure); /* Attempt to enter command mode */ ret = UartLineWrite2(pMod->hUart, "$$$", 100, 50); CHECK_RETVAL(ret, ExitOnFailure); /* Read the response, we should see the cmd prompt */ ret = UartLineRead(pMod->hUart, Buf, sizeof(Buf), 100); if (FAILED(ret) && (ret != E_TIMEOUT)) { CHECK_RETVAL(ret, ExitOnFailure); } /* Have we entered command mode */ if (SUCCEEDED(ret) && !strncmp(Buf, "CMD", 3)) { ret = (i == 0) ? S_OK : S_FALSE; break; } UartClose(pMod->hUart); } ExitOnFailure: return ret; }
/* 功能:关闭串口, 停止服务 */ void Java_xwp_jr_Fingerprint_UartExit(JNIEnv *env, jclass thiz) { status = SERSTOP; usleep(DELAYTIME); UartClose(); fd_status = CLOSED; }
int main(int argc, char* argv[]) { int retval = 0; if (argc < 2) { printf("Usage: phc_log <COM port> {<JRM list>}\n"); #ifdef WIN32 printf(" <COM port> is e.g. COM1, COM2, etc.\n"); #else printf(" <COM port> is e.g. /dev/ttyS0, /dev/ttyS1, etc.\n"); #endif printf(" <JRM list> is a comma/dash separated list of JRM modules\n"); printf("Example: phc_log COM5 24-27,30\n"); return -1; } if (argc >= 3) { // which AM module(s) to treat as JRM retval = get_range(argv[2]); if (retval) { printf("Error: bad address specified %s\n", argv[2]); return retval; } } ghUart = UartOpen(argv[1]); if (!ghUart) { printf("Error opening %s\n", argv[1]); return -2; } //UartConfig(ghUart, 19200, eNOPARITY, eTWOSTOPBITS, 8, 0); UartConfig(ghUart, 19200, eNOPARITY, eONESTOPBIT, 8, 0); log_loop(ghUart); // do the action UartClose(ghUart); return retval; }
void UartDtor( IN uhandle_t hUart ) { DBG_MSG(DBG_TRACE, "%s\n", __FUNCTION__); if (hUart) { UartClose(hUart); #ifdef WINDOWS WinUartDtor(hUart); #elif OSX OsxUartDtor(hUart); #else DBG_MSG(DBG_TRACE, "Unknown OS_TYPE %d\n", OS_TYPE); #endif } }
/* 功能:初始化指纹机 成功返回SUCCESS,失败返回错误码 */ int Java_xwp_jr_Fingerprint_InitFinger(JNIEnv *env, jclass thiz) { int ret = ERR, i; if(CLOSED == fd_status) { ret = UartInit(); if(ret < 0) goto EXIT; fd_status = OPENED; LOGI("打开设备成功 fd : %d", ret); LOGI("获取注册人数"); ret = ValidTempleteNum(); } EXIT: switch(ret){ case SUCCESS: finger_id = buf_data[0]; LOGI("注册人数:%d", finger_id); break; case ERR: LOGI("设备已经打开 fd_status : %d", fd_status); break; default: LOGE("获取注册人数失败,错误码为: %d", ret); if(fd_status == OPENED) { UartClose(); fd_status = CLOSED; } break; } return ret; }