Список последовательных портов (COM) в Windows?

<MenuItem>
  <MenuItem.Icon>
    <Image>
      <Image.Source>
        <BitmapImage UriSource="/your_assembly;component/your_path_here/Image.png" />
      </Image.Source>
    </Image>
  </MenuItem.Icon>
</MenuItem>

Просто удостоверяются Ваше изображение в также включенном в файл проекта и отмеченном как ресурс, и Вы хороши для движения:)

29
задан Community 23 May 2017 в 12:03
поделиться

3 ответа

Доступно несколько вариантов:

  1. Вызвать QueryDosDevice с NULL lpDeviceName для вывода списка всех устройств DOS. Затем используйте CreateFile и GetCommConfig с каждым именем устройства по очереди, чтобы выяснить, является ли он последовательным портом.

  2. Вызовите SetupDiGetClassDevs с ClassGuid GUID_DEVINTERFACE_COMPORT.

  3. Также доступен WMI в программы на C / C ++ .

Идут разговоры о группе новостей win32 и проекте CodeProject, например, .

7
ответ дан 28 November 2019 в 01:22
поделиться

I только что создал следующее, основываясь на чтении исходного кода C ++ до EnumSerialPorts и просмотре функции GetDefaultCommConfig () . Это выглядело как простейший метод, использующий простой ANSI C и один вызов API для каждого возможного COM-порта.

#include <stdio.h>
#include <windows.h>
#include <winbase.h>

BOOL COM_exists( int port)
{
    char buffer[7];
    COMMCONFIG CommConfig;
    DWORD size;

    if (! (1 <= port && port <= 255))
    {
        return FALSE;
    }

    snprintf( buffer, sizeof buffer, "COM%d", port);
    size = sizeof CommConfig;

    // COM port exists if GetDefaultCommConfig returns TRUE
    // or changes <size> to indicate COMMCONFIG buffer too small.
    return (GetDefaultCommConfig( buffer, &CommConfig, &size)
                                                    || size > sizeof CommConfig);
}

int main()
{
    int i;

    for (i = 1; i < 256; ++i)
    {
        if (COM_exists( i))
        {
            printf( "COM%d exists\n", i);
        }
    }

    return 0;
}
5
ответ дан 28 November 2019 в 01:22
поделиться

Проект PySerial предоставляет пару решений .

6
ответ дан 28 November 2019 в 01:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: