Есть драйвер. Он поддерживает до восьми одновременно подключенных устройств. Есть возможнось работы по поллингу(уже реализована в Qt-классе) и по callback. в callback'e должно происходить чтение принятых данных в структуру(определенную в хедере драйвера).
Это делается примерно так:
void __stdcall cbFunction(u16 type)
{
structure rs;
int ret;
ret = ReadData(num_device, &rs, 1);
if (ret >= 0)
//передать данные в экземпляр класса, ответственного за конкретный номер устройства (num_device)
else
//всякая обработка ошибок
}
Суть в том, что этой функции заранее неизвестны ассоциации номеров устройств и объектов, устанавливается она посредине инициализации устройства, и вот в "передаче данных в экземпляр класса, ответственного за конкретный номер устройства" и есть сама загвоздка.
До чего додумался с момента предыдущего поста:
1. Думал сделать а-ля COM - есть класс, ответственный за создание, удаление, управление объектами и связями "объект-номер устройства". При таком раскладе - на каждое устройство прописывать по одному callback'у да еще держать пачку глобальных переменных.
2. Другой вариант - анализ в самой callback-функции наличия ассоциированных объектов с конкретным номером устройства - при этом получается что функция слишком нагружается, а она должна быстро счтитать, отослать и - ret.
Жду других идей, критики(я ее особенно люблю - когда меня критикуют мне все жестче идеи в голову приходят
) и дополнений по этим двум вариантам.