コード例 #1
0
ファイル: 1ue9.c プロジェクト: dvinc/moos-ivp-ENSTABretagne
HANDLE openUSBConnection(int localID)
{
  BYTE buffer[38];
  uint16 checksumTotal = 0;
  HANDLE hDevice = 0;
  uint32 numDevices = 0;
  uint32 dev;
  int i;

  numDevices = LJUSB_GetDevCount(UE9_PRODUCT_ID);
  if(numDevices == 0) 
  {
    printf("Open error: No UE9 devices could be found\n");
    return NULL;
  }

  for(dev = 1;  dev <= numDevices; dev++) 
  {
    hDevice = LJUSB_OpenDevice(dev, 0, UE9_PRODUCT_ID);
    if(hDevice != NULL)
    {
      if(localID < 0)
      {
        return hDevice;
      }
      else
      {
        checksumTotal = 0;

        //setting up a CommConfig command
        buffer[1] = (BYTE)(0x78);
        buffer[2] = (BYTE)(0x10);
        buffer[3] = (BYTE)(0x01);

        for(i = 6; i < 38; i++)
          buffer[i] = (BYTE)(0x00);

        extendedChecksum(buffer,38);

        if(LJUSB_BulkWrite(hDevice, UE9_PIPE_EP1_OUT, buffer, 38) != 38)
          goto locid_error;

        for(i = 0; i < 38; i++)
          buffer[i] = 0;

        if(LJUSB_BulkRead(hDevice, UE9_PIPE_EP1_IN, buffer, 38) != 38)
          goto locid_error;

        checksumTotal = extendedChecksum16(buffer, 38);
        if( (BYTE)((checksumTotal / 256) & 0xff) != buffer[5])
          goto locid_error;

        if( (BYTE)(checksumTotal & 0xff) != buffer[4])
          goto locid_error;

        if( extendedChecksum8(buffer) != buffer[0])
          goto locid_error;

        if( buffer[1] != (BYTE)(0x78) || buffer[2] != (BYTE)(0x10) || buffer[3] != (BYTE)(0x01) )
          goto locid_error;

        if( (int)buffer[8] == localID)
          return hDevice;
        else 
          LJUSB_CloseDevice(hDevice);

      } //else localID >= 0 end
    }  //if hDevice != NULL end
  } //for end

  printf("Open error: could not find a UE9 with a local ID of %d\n", localID);
  return NULL;

locid_error:
  printf("Open error: problem when checking local ID\n");
  return NULL;
}
コード例 #2
0
ファイル: u6.c プロジェクト: alesko/Tapometer
HANDLE openUSBConnection(int localID)
{
    BYTE sendBuffer[26], recBuffer[38];
    uint16 checksumTotal = 0;
    HANDLE hDevice = 0;
    uint32 numDevices = 0;
    uint32 dev;
    int i;

    numDevices = LJUSB_GetDevCount(U6_PRODUCT_ID);
    if(numDevices == 0)
    {
        printf("Open error: No U6 devices could be found\n");
        return NULL;
    }

    for(dev = 1;  dev <= numDevices; dev++)
    {
        hDevice = LJUSB_OpenDevice(dev, 0, U6_PRODUCT_ID);
        if(hDevice != NULL)
        {
            if(localID < 0)
            {
                return hDevice;
            }
            else
            {
                checksumTotal = 0;

                //setting up a U6Config
                sendBuffer[1] = (uint8)(0xF8);
                sendBuffer[2] = (uint8)(0x0A);
                sendBuffer[3] = (uint8)(0x08);

                for(i = 6; i < 26; i++)
                    sendBuffer[i] = (uint8)(0x00);

                extendedChecksum(sendBuffer, 26);

                if(LJUSB_BulkWrite(hDevice, U6_PIPE_EP1_OUT, sendBuffer, 26) != 26)
                    goto locid_error;

                if(LJUSB_BulkRead(hDevice, U6_PIPE_EP2_IN, recBuffer, 38) != 38)
                    goto locid_error;

                checksumTotal = extendedChecksum16(recBuffer, 38);
                if( (uint8)((checksumTotal / 256) & 0xff) != recBuffer[5])
                    goto locid_error;

                if( (uint8)(checksumTotal & 0xff) != recBuffer[4])
                    goto locid_error;

                if( extendedChecksum8(recBuffer) != recBuffer[0])
                    goto locid_error;

                if( recBuffer[1] != (uint8)(0xF8) || recBuffer[2] != (uint8)(0x10) ||
                    recBuffer[3] != (uint8)(0x08) )
                    goto locid_error;

                if( recBuffer[6] != 0)
                    goto locid_error;

                if( (int)recBuffer[21] == localID)
                    return hDevice;
                else
                    LJUSB_CloseDevice(hDevice);
            } //else localID >= 0 end
        } //if hDevice != NULL end
    } //for end

    printf("Open error: could not find a U6 with a local ID of %d\n", localID);
    return NULL;

locid_error:
    printf("Open error: problem when checking local ID\n");
    return NULL;
}
コード例 #3
0
ファイル: ue9.c プロジェクト: alesko/exodriver
HANDLE openUSBConnection(int localID)
{
    BYTE buffer[38];
    uint16 checksumTotal = 0;
    uint32 numDevices = 0;
    uint32 dev;
    int i, serial;
    HANDLE hDevice = 0;

    numDevices = LJUSB_GetDevCount(UE9_PRODUCT_ID);
    if( numDevices == 0 ) 
    {
        printf("Open error: No UE9 devices could be found\n");
        return NULL;
    }

    for( dev = 1;  dev <= numDevices; dev++ )
    {
        hDevice = LJUSB_OpenDevice(dev, 0, UE9_PRODUCT_ID);
        if( hDevice != NULL )
        {
            if( localID < 0 )
            {
                return hDevice;
            }
            else
            {
                checksumTotal = 0;

                //Setting up a CommConfig command
                buffer[1] = (BYTE)(0x78);
                buffer[2] = (BYTE)(0x10);
                buffer[3] = (BYTE)(0x01);

                for( i = 6; i < 38; i++ )
                    buffer[i] = (BYTE)(0x00);

                extendedChecksum(buffer,38);

                if( LJUSB_Write(hDevice, buffer, 38) != 38 )
                    goto locid_error;

                for( i = 0; i < 38; i++ )
                    buffer[i] = 0;

                if( LJUSB_Read(hDevice, buffer, 38) != 38 )
                    goto locid_error;

                checksumTotal = extendedChecksum16(buffer, 38);
                if( (BYTE)((checksumTotal / 256) & 0xFF) != buffer[5] )
                    goto locid_error;

                if( (BYTE)(checksumTotal & 0xFF) != buffer[4] )
                    goto locid_error;

                if( extendedChecksum8(buffer) != buffer[0] )
                    goto locid_error;

                if( buffer[1] != (BYTE)(0x78) || buffer[2] != (BYTE)(0x10) || buffer[3] != (BYTE)(0x01) )
                    goto locid_error;

                //Check local ID
                if( (int)buffer[8] == localID )
                    return hDevice;
                
                //Check serial number
                serial = buffer[28] + buffer[29]*256 + buffer[30]*65536 + 0x10000000;
                if( serial == localID )
                    return hDevice;

                //No matches.  Not our device.
                LJUSB_CloseDevice(hDevice);

            }  //else localID >= 0 end
        }  //if hDevice != NULL end
    }  //for end

    printf("Open error: could not find a UE9 with a local ID or serial number of %d\n", localID);
    return NULL;

locid_error:
    printf("Open error: problem when checking local ID and serial number\n");
    return NULL;
}