News:

Download Pelles C here: http://www.smorgasbordet.com/pellesc/

Main Menu

USB microscope

Started by TimoVJL, December 19, 2025, 11:08:54 AM

Previous topic - Next topic

TimoVJL

https://www.lidl.de/p/crivit-usb-digitalmikroskop/p100395031

This device didn't have any software with it's package, nor links for them.

Windows 7 DirectX can show this device, but i can't find an old  WebCAM code right now.

That device works in Windows 1x, but those apps aren't so good.

That device isn't allowed use by children under 8 years.

Perhaps more to come later.

Translation with Deepl
CRIVIT USB Digital Microscope

Features

    High-quality zoom lens with up to 1000x magnification
    With USB interface for direct transfer to your computer monitor
    Includes software for high-quality photo and video recording
    Dimmable ring light with 8 neutral white LEDs for optimal illumination
    Flexible use – handheld or via adjustable mini stand with practical clip mount
    1.36 m connection cable with USB-C plug incl. USB-A adapter
    Included accessories: mini stand, storage box, instructions
    Windows software in English, German, French, Spanish, Italian, Portuguese
    MacOS software in English
    Not suitable for children under 8 years of age

Translated with DeepL.com (free version)
May the source be with you

Vortex

Hi Timo,

I can't find an old WebCAM code right now.
Did you try some sites like the Internet Archive to find the software?

https://archive.org/
Code it... That's all...

TimoVJL

#2
Actually i want to find an old code from 2014 - 2015,
when i tested COM typelib from quartz.dll

With this code device is available, even WinMCI stopped working with it.
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <stdio.h>
#include "dshow.h"

#pragma comment(lib, "ole32.lib")
#pragma comment(lib, "oleaut32.lib")
#pragma comment(lib, "uuid.lib")
//#pragma comment(lib, "strmiids")

const GUID CLSID_SystemDeviceEnum = {0x62be5d10,0x60eb,0x11d0,{0xbd,0x3b,0x0,0xa0,0xc9,0x11,0xce,0x86}};
const GUID CLSID_AudioInputDeviceCategory = {0x33d9a762,0x90c8,0x11d0,{0xbd,0x43,0x0,0xa0,0xc9,0x11,0xce,0x86}};
const GUID CLSID_VideoInputDeviceCategory = {0x860bb310,0x5d01,0x11d0,{0xbd,0x3b,0x0,0xa0,0xc9,0x11,0xce,0x86}};
const GUID IID_ICreateDevEnum = {0x29840822,0x5b84,0x11d0,{0xbd,0x3b,0x0,0xa0,0xc9,0x11,0xce,0x86}};

HRESULT EnumerateDevices(REFGUID category, IEnumMoniker **ppEnum)
{
    // Create the System Device Enumerator.
    ICreateDevEnum *pDevEnum;
    HRESULT hr = CoCreateInstance(&CLSID_SystemDeviceEnum, NULL, 
        CLSCTX_INPROC_SERVER, &IID_ICreateDevEnum, (void**)&pDevEnum);

    if (SUCCEEDED(hr))
    {
        // Create an enumerator for the category.
        hr = pDevEnum->lpVtbl->CreateClassEnumerator(pDevEnum, category, ppEnum, 0);
        if (hr == S_FALSE)
        {
            hr = VFW_E_NOT_FOUND;  // The category is empty. Treat as an error.
        }
        pDevEnum->lpVtbl->Release(pDevEnum);
    }
    return hr;
}


void DisplayDeviceInformation(IEnumMoniker *pEnum)
{
    IMoniker *pMoniker = NULL;

    while (pEnum->lpVtbl->Next(pEnum, 1, &pMoniker, NULL) == S_OK)
    {
        IPropertyBag *pPropBag;
        HRESULT hr = pMoniker->lpVtbl->BindToStorage(pMoniker, 0, 0, &IID_IPropertyBag, (void**)&pPropBag);
        if (FAILED(hr))
        {
            pMoniker->lpVtbl->Release(pMoniker);
            continue; 
        }

        VARIANT var;
        VariantInit(&var);

        // Get description or friendly name.
        hr = pPropBag->lpVtbl->Read(pPropBag, L"Description", &var, 0);
        if (FAILED(hr))
        {
            hr = pPropBag->lpVtbl->Read(pPropBag, L"FriendlyName", &var, 0);
        }
        if (SUCCEEDED(hr))
        {
            printf("%ls\n", var.bstrVal);
            VariantClear(&var);
        }

        //hr = pPropBag->lpVtbl->Write(pPropBag, L"FriendlyName", &var);

        // WaveInID applies only to audio capture devices.
        hr = pPropBag->lpVtbl->Read(pPropBag, L"WaveInID", &var, 0);
        if (SUCCEEDED(hr))
        {
            printf("WaveIn ID: %d\n", var.lVal);
            VariantClear(&var);
        }

        hr = pPropBag->lpVtbl->Read(pPropBag, L"DevicePath", &var, 0);
        if (SUCCEEDED(hr))
        {
            // The device path is not intended for display.
            printf("Device path: %ls\n", var.bstrVal);
            VariantClear(&var);
        }

        pPropBag->lpVtbl->Release(pPropBag);
        pMoniker->lpVtbl->Release(pMoniker);
    }
}

int main(void)
{
    HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
    if (SUCCEEDED(hr))
    {
        IEnumMoniker *pEnum;

        hr = EnumerateDevices(&CLSID_VideoInputDeviceCategory, &pEnum);
        if (SUCCEEDED(hr))
        {
            DisplayDeviceInformation(pEnum);
            pEnum->lpVtbl->Release(pEnum);
        }
        hr = EnumerateDevices(&CLSID_AudioInputDeviceCategory, &pEnum);
        if (SUCCEEDED(hr))
        {
            DisplayDeviceInformation(pEnum);
            pEnum->lpVtbl->Release(pEnum);
        }
        CoUninitialize();
    }
    return 0;
}
icspring camera
Device path: \\?\usb#vid_32e6&pid_9005&mi_00#7&11de6da0&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global


Interesting project:
DirectShow Camera Project
May the source be with you