コード例 #1
0
void CUSB30Device::OnCbOpenDev(CString &info)
{
	CCyUSBDevice *pUSBDevice = m_pUSBDevice;

	CString csBuf;
	pUSBDevice->Open(0);
	info = pUSBDevice->FriendlyName;
	csBuf.Format(_T("; 设备PID:0x%04X; "), pUSBDevice->ProductID);
	info += csBuf;

	csBuf.Empty();
	csBuf.Format(_T("设备VID:0x%04X; "), pUSBDevice->VendorID);

	info += csBuf;
	csBuf.Empty();

	if (pUSBDevice->bSuperSpeed)  
	{
		csBuf = _T("设备类型:USB3.0超速设备");
	}
	else if (pUSBDevice->bHighSpeed) 
	{
		csBuf = _T("设备类型:USB2.0高速设备");
	}
	else 
	{
		csBuf = _T("设备类型:USB1.1全速设备");
	}
	info += csBuf;
	//WriteInfoTxt(info);

	//pUSBDevice->Close();
}
コード例 #2
0
ファイル: cyapi.c プロジェクト: HalasNet/bladeRF
static int cyapi_change_setting(void *driver, uint8_t setting)
{
    CCyUSBDevice *dev = get_device(driver);

    if (dev->SetAltIntfc(setting)) {
        return 0;
    } else {
        return BLADERF_ERR_IO;
    }
}
コード例 #3
0
ファイル: cyapi.c プロジェクト: HalasNet/bladeRF
static int cyapi_probe(backend_probe_target probe_target,
                       struct bladerf_devinfo_list *info_list)
{
    CCyUSBDevice *dev = new CCyUSBDevice(NULL, driver_guid);
    if (dev == NULL) {
        return BLADERF_ERR_MEM;
    }

    for (int i = 0; i < dev->DeviceCount(); i++) {
        struct bladerf_devinfo info;
        bool opened;
        int status;

        opened = dev->Open(i);
        if (opened) {
            if (device_matches_target(dev, probe_target)) {
                const size_t max_serial = sizeof(info.serial) - 1;
                info.instance = i;
                memset(info.serial, 0, sizeof(info.serial));
                wcstombs(info.serial, dev->SerialNumber, max_serial);
                info.usb_addr = dev->USBAddress;
                info.usb_bus = 0; /* CyAPI doesn't provide this */
                info.backend = BLADERF_BACKEND_CYPRESS;
                status = bladerf_devinfo_list_add(info_list, &info);
                if (status != 0) {
                    log_error("Could not add device to list: %s\n",
                              bladerf_strerror(status));
                } else {
                    log_verbose("Added instance %d to device list\n",
                        info.instance);
                }
            }

            dev->Close();
        }
    }

    delete dev;
    return 0;
}
コード例 #4
0
bool  CUSB30Device::Refresh(CString &info)
{
	CCyUSBDevice * pUSBDevice = m_pUSBDevice;
	bool  ok = false;

	m_oSemAccessCyCtrl.Lock();

	//确保存在至少一个USB器件
	if (pUSBDevice->DeviceCount())
	{
		/*
		//搜寻所有已连接的器件并将它们添加到器件列表。
		for (int i = 0; i < pUSBDevice->DeviceCount(); i++)
		{
			pUSBDevice->Open(i);
		}		
		pUSBDevice->Close();
		::Sleep(100);
		*/
		//pUSBDevice->Open(0);
		if (IsUSB20())
		{
			InitFirmware();
		}
		OnCbOpenDev(info);
		ok = true;
	}
	else
	{
		//MessageBox(_T("未检测到USB设备!\r\n\r\n有可能驱动还没连接完毕,请多尝试几次!"),_T("消息"), MB_OK | MB_ICONINFORMATION);
		//WriteInfoTxt(_T("未检测到USB设备! 有可能驱动还没连接完毕,请多尝试几次!"), INFO_WARNING);
		info = _T("未检测到USB设备! 有可能驱动还没连接完毕,请多尝试几次!");
	}

	m_oSemAccessCyCtrl.Unlock();
	return ok;
}
コード例 #5
0
ファイル: mainwindow.cpp プロジェクト: Francisco89/tesis
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)

{

   ui->setupUi(this);
//////////////////////////////////////////////////////////////////////////////////////////////////////

   CCyUSBDevice *USBDevice = new CCyUSBDevice(NULL);
   CCyBulkEndPoint *BulkInEndPt = NULL;
   CCyBulkEndPoint *BulkOutEndPt = NULL;

//////////////////////////////////////////////////////////////////////////////////////////////////////

   int eptCount = USBDevice->EndPointCount();
   cout << "Cantidad de endpoints activos (incluyendo el de control) : " << eptCount << endl;

   // Skip EndPoints[0], which we know is the control endpoint
   for (int i=1; i<eptCount; i++) {
   bool bIn = ((USBDevice->EndPoints[i]->Address & 0x80)==0x80);
   bool bBulk = (USBDevice->EndPoints[i]->Attributes == 2);
   if (bBulk && bIn) BulkInEndPt = (CCyBulkEndPoint *) USBDevice->EndPoints[i];
   if (bBulk && !bIn) BulkOutEndPt = (CCyBulkEndPoint *) USBDevice->EndPoints[i];
   }
   for (int e=1; e<eptCount; e++)
   {
       CCyUSBEndPoint *ept = USBDevice->EndPoints[e];
       char s[100]={""}, *t, u[10]={""};

       // INTR, BULK and ISO endpoints are supported.
      if ((ept->Attributes >= 1) && (ept->Attributes <= 3))
       {
           //cout << int(ept->Attributes) << endl; // Tira "2" -> es BULK (0 Control, 1 ISOCHRONOUS y 3 INTERRUPT)

           if (ept->Attributes == 1)
               t="ISOC ";
           else if (ept->Attributes == 2)
               t="BULK ";
           else
               t="INTR ";

           strcat(s, t);
           strcat(s,ept->bIn ? "IN,      " : "OUT,   ");
           t=itoa(ept->MaxPktSize,u,10);
           strcat(s,t);
           strcat(s," Bytes,");

           t=itoa(ept->ssmaxburst,u,10);
           if((USBDevice->BcdUSB = 0x0300))
           {
               strcat(s, t);
               strcat(s," MaxBurst, (");
           }
               t=itoa(e,u,10);
               strcat(s,t);
               strcat(s, " - ");
               strcat(s,"0x");
               t=itoa(ept->Address,u,16);
               strcat(s,t);
               strcat(s,")");
               cout << s << endl;
               this->ui->Endpoint_comboBox->addItem(s);
       }
      //cout << USBDevice->EndPoints[e] << endl;                           Mostrador de endpoints.
   }

//////////////////////////////////////////////////////////////////////////////////////////////////////////
// Unidad de tiempo estandar, microsegundo.
//
// Genera un PWM de 16 bits (todos 1s o 0s) cada 100ms, tiene alguna varianza pero no va acumulando error.
// Arranca el contador del PC y setea el periodo del PWM. Va muestreando el tiempo 0 < t < T_pwm (1 segundo).
// Si t < T_on, escribe el 1, en otro caso, en 0.
// Luego entra en un loop que duerme 1ms y muestrea t. Sale del loop si t es mayor al tiempo de muestreo (100ms)
// Vuelve a muestrear t y lo compara con T_on y escribe 1 o 0 correspondientemente y vuelve al loop de delay.
// Si o si tiene que dormir o la compu se cuelga MAL (anda, pero se traba todo el qtcreator).

    const int packetSize = 4;
    LONG len = packetSize;                          //Si o si tienen q ser LONG
    unsigned char outBuffer[packetSize];            //Si o si tienen q ser unsigned char
    unsigned char inBuffer[packetSize];
    unsigned char uno = 0xFFFF;
    unsigned char cero = 0x00;
    unsigned char buf;
    bool staOut, staIn;
    double T_pwm = 1000000;                         //1 segundo
    double D = 0.1;                                //Duty Cycle
    double T_on = D*T_pwm;                          //Tiempo en estado alto
    double t = 0;                                   //Variable auxiliar
    double muestreo = 10000;                        //Variable de muestreo de la señal (10ms)
    double u = 0;
    int i=0;
    int cont=0;

    StartCounter();
    t=CounterStart;


    /*while( 1 )
    {
        t = fmod(GetCounter(),T_pwm);
        //cout << ((t < T_on) ? 0x0001 : 0x0000) << endl;
        u=0;
        buf = ((t < T_on) ? uno : cero);
        for ( i = 0; i < len ; i++ )
        outBuffer[i] = buf ;
        //staOut = USBDevice->BulkOutEndPt->XferData(outBuffer, len);
        //cout << outBuffer << "   " << staOut << endl;

        while( u < muestreo )
        {
            //Sleep(1);
            staOut = USBDevice->BulkOutEndPt->XferData(outBuffer, len);
            u=fmod(GetCounter(),T_pwm);
        }

        //staIn = USBDevice->BulkInEndPt->XferData(inBuffer, len); // Hay que recorger el paquete si o si o el buffer se llena.
        //cout << staIn << endl;
        //cont++;
        if(cont == 1)
        {
            cout <<  "Salio: " << outBuffer << endl; //" ; Entro: " << inBuffer << endl;
            cont=0;
        }
        //staIn = USBDevice->BulkInEndPt->XferData(inBuffer, len);
        //cout <<  "Salio: " << outBuffer << endl; //" ; Entro: " << inBuffer << endl;
        staIn = USBDevice->BulkOutEndPt->Reset();
    }*/

    while(1)
    {
        /*//for (i=0;i<1000;i++){
        staOut = USBDevice->BulkOutEndPt->XferData(&uno, len);
        usleep(1000);
        //t = fmod(GetCounter(),T_pwm);
        //cout << t << endl;
        //}
        //for (i=0;i<1000;i++){
        staIn = USBDevice->BulkOutEndPt->XferData(&cero, len);
        usleep(1000);
        //}*/
        t = GetCounter();
        if((t-u)/PCFreq > 500)
        {
            u=t;
            staOut = USBDevice->BulkOutEndPt->XferData(&uno, len);
        }
    }


  /*for (int i=0; i<packetSize; i++)
        outBuffer[i] = i;

    for (int cont=1;cont < 100000; cont++)
    staOut = USBDevice->BulkOutEndPt->XferData(outBuffer, len);

    staIn = USBDevice->BulkInEndPt->XferData(inBuffer, len);

    USBDevice->Close(); // (9)*/

//////////////////////////////////////////////////////////////////////////////////////////////////////
   this->connect(this->ui->Start_pushButton, SIGNAL(clicked()), this, SLOT(Start_pushButton_click()));

}