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; }
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); }