示例#1
0
文件: usbcom.c 项目: wuzhenzhen/POS
uchar TA_Usb_ucReadUsb(uint* puiDataLen, uchar* pucDataOut)
{
	uchar ucRet = EM_SUCCESS;
	uchar ucRS232Status = 0;

	*puiDataLen = 0;

	if (EM_SUCCESS == EA_ucIfIODeviceBufEmpty(g_hUsbComHandle, &ucRS232Status))
	{
		if (EM_BUFEMPTY == ucRS232Status)
		{
			return EM_ERROR;
		}
	}

	ucRet = EA_ucReadDeviceMs(g_hUsbComHandle, READ_LEN_MAX, READ_TIMEOUT_MS_MIN,
							  (void*)pucDataOut, puiDataLen);
	//PRINT_RET("TA_Usb_ucReadUsb", ucRet);

	if (*puiDataLen >= 12)
	{
		if (0x00 == memcmp((char*)pucDataOut, "\xf6\x00\x07\x53\x44\xdd\x5a\xa5\x00\xff\xca\x03", 12))
		{
			//DOWNLOAD_FIRMWARE
			TA_Usb_ucWriteUsb(1, (uchar*)&"\x04");
			TA_vRestartDevice(1);
		}
	}

	return ucRet;
}
示例#2
0
int read_from_EFT(int *pLen, char *readstr)
{
	char buffer[512];
	ET_ProductInfo tProductInfo;
	uint unActLen;
	uchar ucRet;
	DevHandle hRS232Handle = EM_INVALID_HANDLE;
	
	unActLen = 0;
	
#ifdef EPT_A9L
    memset(&tProductInfo, 0x00, sizeof(ET_ProductInfo));
	EA_ucGetProductInfo(&tProductInfo);
	if ( memcmp(tProductInfo.acName , "E520" , 4) == 0 && tProductInfo.ucMachType == 2)
	{
		ucRet = EA_ucOpenDevice("COM3", 0, &hRS232Handle);
	}
	else
	{
		ucRet = EA_ucOpenDevice(SERIAL_PORT, 0, &hRS232Handle);
	}

#else
	ucRet = EA_ucOpenDevice("COM", EM_io_PORT1, &hRS232Handle);
#endif
	if (ucRet != EM_SUCCESS || hRS232Handle == EM_INVALID_HANDLE)
	{
		EA_vCls();
		EA_vDisplay(2, "打开RS232口出错[%02x]", ucRet);
		EA_ucCloseDevice(&hRS232Handle);
		
		PubuiInkey(3);
		return (EXCEPTION);
	}

	ucRet = EA_ucInitRS232(hRS232Handle, EM_232_9600BPS, EM_232_NOPAR, EM_232_8DBS);
    if (ucRet != EM_SUCCESS)
    {
        EA_vCls();
        EA_vDisplay(2, "RS232初始化错[%02x]", ucRet);
        EA_ucCloseDevice(&hRS232Handle);
        
        PubuiInkey(3);
		return (EXCEPTION);
    }

	while (1)
    {
		*pLen = 0;
		/*
		* read STX 0x02 until time out
		*/
		memset (buffer ,0 ,sizeof(buffer));
		do
		{
			if(EM_key_HIT == EA_ucKBHit()) 
			{		
				EA_ucCloseDevice(&hRS232Handle);
				return (EXCEPTION);	    
			}
			EA_ucReadDeviceMs(hRS232Handle, 1, 10, buffer, &unActLen);
        } while (buffer[0] != 0x02);
		
        //read left data
		ucRet = EA_ucReadDeviceMs(hRS232Handle, 200, 10, buffer+1, &unActLen);
        if (ucRet != EM_SUCCESS || unActLen > 200)
            continue;

//        debug_print((char*)"SERIAL CMD", buffer, unActLen + 1);//FIXME
        
        *pLen = unActLen + 1;
        memcpy(readstr, buffer, *pLen);

		break;
	} //end of while
	
	EA_ucCloseDevice(&hRS232Handle);
	return (NORMAL);
}