Ejemplo n.º 1
0
int HostIO_CyUSB::Read(unsigned char * lpvBuffer, int dwBuffSize, int * lpdwBytesRead)
{
	int iStatus;

	m_log->Write(2, _T("Read buffer size: %d bytes"), dwBuffSize);
	iStatus = cyusb_bulk_transfer(h, 0x83, lpvBuffer, dwBuffSize, lpdwBytesRead, CyReadTimeout);
	m_log->Write(2, _T("Read Done %d bytes read, data: "), *lpdwBytesRead);
	m_log->WriteBuffer(2, lpvBuffer, dwBuffSize, *lpdwBytesRead, 256);
	return iStatus==0 ? ALL_OK : ERR_USB_ReadFailed;
}
Ejemplo n.º 2
0
int HostIO_CyUSB::Write(unsigned char * lpvBuffer, int dwBuffSize, int * lpdwBytes)
{
	int iStatus;
	
	m_log->Write(2, _T("Write %d bytes, Data:"), dwBuffSize);
	m_log->WriteBuffer(2, lpvBuffer, dwBuffSize, dwBuffSize, 256);
	iStatus = cyusb_bulk_transfer(h, 0x02, lpvBuffer, dwBuffSize, lpdwBytes, CyWriteTimeout);
	m_log->Write(2, _T("Write Done %d bytes written."), *lpdwBytes);

	return iStatus==0 ? ALL_OK : ERR_USB_WriteFailed;
}
static void * writer(void *arg2)
{
	int r, nbr;
	unsigned char buf[64];
	int transferred = 0;

	memset(buf,'\0',64);
	while ( nbr = read(0,buf,64) ) {
		r = cyusb_bulk_transfer(h1, 0x02, buf, nbr, &transferred, timeout * 1000);
		if ( r == 0 ) {
			memset(buf,'\0',64);
			continue;
		}
		else {
			cyusb_error(r);
			cyusb_close();
			return NULL;
		}
	} 

}
static void *reader(void *arg1)
{
	int r;
	unsigned char buf[64];
	int transferred = 0;

	memset(buf,'\0',64);
	while (1) {
		r = cyusb_bulk_transfer(h1, 0x86, buf, 64, &transferred, timeout * 1000);
		if ( r == 0 ) {
		   printf("%s", buf);
		   memset(buf,'\0',64);
		   continue;
		}
		else {
			cyusb_error(r);
			cyusb_close();
			return NULL;
		}
	} 

}
Ejemplo n.º 5
0
void bulk_reader(int num_bytes)
{
    int rStatus, nbr;
    unsigned char *buf;
    int transferred = 0;

    buf = (unsigned char*)(malloc(num_bytes * 2));
    if (buf == NULL){
        printf ("Error in Memory allocation ... Try a smaller size\n");
        return;
    }

    rStatus = cyusb_bulk_transfer(h1, gl_ep_in, buf, num_bytes, &transferred, 2000);
    if (rStatus == LIBUSB_ERROR_TIMEOUT){
        printf ("\nRead only %d bytes \n", transferred);
        printf ("\nError: Timed out while reading %d bytes ..\n\n", (num_bytes - transferred)); 
        cyusb_clear_halt (h1, gl_ep_in);
        free (buf);
        return; 
    }
    else if (rStatus == LIBUSB_ERROR_OVERFLOW){
        printf ("\nBuffer overflow occurred read only %d bytes \n\n", transferred);
        printf ("Clearing ep %d \n",gl_ep_in);
        cyusb_clear_halt (h1, gl_ep_in);
        free (buf);
        return;
    }
    else if (rStatus != LIBUSB_SUCCESS){
        printf ("\nError in doing bulk read ..read %d bytes only %d \n", transferred, rStatus);
        cyusb_clear_halt (h1, gl_ep_in);
        free (buf);
        return;
    }

    printf ("\nSuccessfully read %d bytes \n\n", transferred);
    free (buf);
}