67,513
社区成员
发帖
与我相关
我的任务
分享
/////////////////////////////////////////////////////////////////////////////
// CHMiDR200Ctrl message handlers
/*!****************************************************
函数名称:InitComm
函数功能:初始化端口
函数类型:short
输入参数:
输出参数:short
返回值: short 0--成功, -1 --失败
****************************************************!*/
short CHMiDR200Ctrl::InitComm()
{
/* if(m_bInit == TRUE)
{
WriteParseLog(__FILE__,__LINE__,"%s","已经初始过不再重新初始");
if(m_bCancelRead == FALSE)
{
m_bCancelRead = TRUE;//???????
Sleep(100);//20110809
}
return CARD_2ND_INIT_COMM_SUCCEED;
}
int nUSBPort;
BOOL flag = FALSE;
for(nUSBPort = 1001; nUSBPort <= 1016; nUSBPort++)
{
if(CVR_InitComm(nUSBPort) == 1)
{
flag = true;
break;
}
}
m_bInit = flag;
m_bCancelRead = FALSE;
if(m_bInit)
{
WriteParseLog(__FILE__,__LINE__,"%s","打开端口成功");
return CARD_2ND_INIT_COMM_SUCCEED ;
}else{
WriteParseLog(__FILE__,__LINE__,"%s","打开端口失败");
return CARD_2ND_INIT_COMM_FAIL;
}
*/
m_bInit = TRUE;
m_bCancelRead = FALSE;
return CARD_2ND_INIT_COMM_SUCCEED ;
}
/*!****************************************************
函数名称:ReadCard
函数功能:读卡信息
函数类型:short
输入参数:
输出参数:short
返回值: short 成功, 失败
****************************************************!*/
short CHMiDR200Ctrl::ReadCard()
{
if(m_bInit == FALSE)
{
WriteParseLog(__FILE__,__LINE__,"%s","读卡前未初始化设备,另行初始化");
InitComm();
if(m_bInit == FALSE)
{
WriteParseLog(__FILE__,__LINE__,"%s","读卡前初始化设备失败");
return CARD_2ND_READ_FAIL;
}
}
if(NULL != m_hThreadReadProc)
{
WriteParseLog(__FILE__,__LINE__,"%s","启动前,发现线程句柄非空,");
if(WAIT_TIMEOUT == WaitForSingleObject(m_hThreadReadProc, 10))
{
WriteParseLog(__FILE__,__LINE__,"%s","正在读取身份证信息,重复读取失败");
return CARD_2ND_READ_FAIL;
}
else
{
m_bCancelRead = TRUE;//20110809
Sleep(200);//20110809
CloseHandle(m_hThreadReadProc);
m_hThreadReadProc = NULL;
}
}
//
memset(&m_acard,0x00,sizeof(m_acard));
m_hThreadReadProc = CreateThread(NULL, 0, ThreadReadProc, this, 0,0);
if (!m_hThreadReadProc)
{
WriteParseLog(__FILE__,__LINE__,"%s","ReadCard() :启动线程失败,,,");
return CARD_2ND_READ_FAIL;
}
return CARD_2ND_READ_SUCCEED;
}
//-------------------------------------------------------------------------------------------------------
DWORD CHMiDR200Ctrl::ThreadReadProc(LPVOID pParam)
{
CHMiDR200Ctrl *pCtrl = (CHMiDR200Ctrl*)pParam;
if(NULL == pCtrl)
{
WriteParseLog(__FILE__,__LINE__,"%s","二代证扫描仪控件为空!");
::PostMessage(pCtrl->m_hWndMsg, WM_NEWDEVICEERR, (WPARAM)NULL, (LPARAM)NULL);
return 0;
}
WriteParseLog(__FILE__,__LINE__,"%s","调用线程函数,");
pCtrl->ReadProc();
return 0;
}
void CHMiDR200Ctrl::ReadProc()
{
//WriteParseLog(__FILE__,__LINE__,"%s","进入ReadProc");
m_bCancelRead = FALSE;
m_sDeviceStatus = CARD_2ND_STATUS_BUSY;
int nUSBPort;
BOOL flag = FALSE;
for(nUSBPort = 1001; nUSBPort <= 1016; nUSBPort++)
{
if(CVR_InitComm(nUSBPort) == 1)
{
flag = TRUE;
break;
}
}
if(m_bInit)
{
WriteParseLog(__FILE__,__LINE__,"%s","打开端口成功");
// return CARD_2ND_INIT_COMM_SUCCEED ;
}else{
WriteParseLog(__FILE__,__LINE__,"%s","打开端口失败");
return ;
}
//check card status
while(!m_bCancelRead)
{
if(m_bCancelRead == TRUE)
{
WriteParseLog(__FILE__,__LINE__,"%s","m_bCancelRead为真,取消读卡");
//::PostMessage(m_hWndMsg, WM_NEWDEVICEERR, (WPARAM)NULL, (LPARAM)NULL);//zhangli 20110809 ***************
m_bCancelRead = FALSE;//20110809
return;
}
if(CVR_Authenticate()==1)
{
m_bCancelRead = TRUE;
WriteParseLog(__FILE__,__LINE__,"%s","while循环等待放卡");
//Read RFID
memset(&m_acard,0,sizeof(m_acard));
/*
unsigned char textInfo[256];
unsigned int nTextLen = 256;
unsigned int nPhotoLen = 1024;
*/
//if(CVR_ReadBaseMsg(textInfo, &nTextLen,m_acard.id_pImage, &nPhotoLen , 4))
if(1==CVR_Read_Content(1))
{
int nbufLen;
nbufLen = sizeof(m_acard.id_Code);
GetPeopleIDCode(m_acard.id_Code, &nbufLen);
nbufLen = sizeof(m_acard.id_Name);
GetPeopleName(m_acard.id_Name, &nbufLen);
nbufLen = sizeof(m_acard.id_Sex);
GetPeopleSex(m_acard.id_Sex, &nbufLen);
nbufLen = sizeof(m_acard.id_National);
GetPeopleNation(m_acard.id_National, &nbufLen);
nbufLen = sizeof(m_acard.id_Born);
GetPeopleBirthday(m_acard.id_Born, &nbufLen);
nbufLen = sizeof(m_acard.id_Home);
GetPeopleAddress(m_acard.id_Home, &nbufLen);
nbufLen = sizeof(m_acard.id_ValidPeriod_Start );
GetStartDate(m_acard.id_ValidPeriod_Start, &nbufLen);
nbufLen = sizeof(m_acard.id_ValidPeriod_End);
GetEndDate(m_acard.id_ValidPeriod_End, &nbufLen);
nbufLen = sizeof(m_acard.id_RegOrg );
GetPeopleDepartment(m_acard.id_RegOrg, &nbufLen);
char Photo1[1024];
char Photo2[1024];
strcpy(Photo1,m_cPathName);
strcat(Photo1,"\\");
strcat(Photo1,m_acard.id_Code);
strcpy(Photo2,Photo1);
strcat(Photo1,"_No2.bmp");
strcat(Photo2,"_No2.jpg");
CopyFile("zp.bmp",Photo1,FALSE);
CxImage Image;
Image.Load(Photo1,CXIMAGE_FORMAT_BMP);
Image.Save(Photo2,CXIMAGE_FORMAT_JPG);
m_sDeviceStatus = CARD_2ND_STATUS_OK;
::PostMessage(m_hWndMsg, WM_THREADREADEVENT, (WPARAM)NULL, (LPARAM)NULL);
WriteParseLog(__FILE__,__LINE__,"%s","CVR_Read_Content读卡成功");
} else {
//读卡失败
WriteParseLog(__FILE__,__LINE__,"%s","CVR_Read_Content读卡失败");
}
}
Sleep(500);
} //while循环结束
CVR_CloseComm();
}
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<object name="SID" id="SID" classid="CLSID:6321D4CA-BED3-483D-886D-91E1910B28DA" style="visibility: hidden;" ></object>
<input type="button" name="btn_open" value="开启" onclick="fc_open()" />
<input type="button" name="btn_close" value="关闭" onclick="fc_close()" />
<input type="button" name="btn_read" value="读卡" onclick="fc_read()" />
</body>
<script type="text/javascript">
function fc_open(){
var initNum=SID.InitComm();
alert(initNum);
SID.ReadProc();
}
function fc_close(){
SID.CancelComm();
SID.CloseComm();
}
function fc_read(){
var readNum= SID.ReadCard();
alert("a"+readNum+"b");
if(readNum==0){
alert("name"+SID.GetName());
alert("id"+SID.GetNumber());
alert("sex"+SID.GetSex());
alert("addr"+SID.GetAddress());
alert("people"+SID.GetPeople());
alert("birth"+SID.GetBirthday());
alert("dept"+SID.GetDepartment());
}else{
alert("读卡失败");
}
}
</script>