Эмуляция устройства устройства может быть выполнена на разных уровнях. Более низкий уровень - лучшая эмуляция, но обычно эмуляция низкого уровня трудноразвивается. Это может быть аппаратная эмуляция - аппаратное устройство, которое реализует тот же протокол связи, что и реальное устройство. Но давайте поговорим о эмуляции программного обеспечения.
Учитывайте следующую системную структуру: Hight level (UI) - доступ к аппаратным средствам Dll - драйвер - порт связи (USB и т. Д.) - аппаратное устройство. Можно эмулировать каждый уровень: от самого аппаратного устройства до доступа к аппаратным средствам Dll.
Чтобы эмулировать аппаратное устройство, вам следует поговорить с разработчиками аппаратного обеспечения (а не с вашим делом, я думаю). Вы хотите поймать вызовы драйверов, чтобы сделать это прозрачным для всей системы программного обеспечения. Я думаю, у вас больше шансов получить информацию об этом на osronline - на этом сайте нет экспертов по драйверам.
Вы можете эмулировать драйвер, предоставляя другой драйвер или даже библиотеку пользовательского режима, которая экспортирует DeviceIoControl, ReadFile, WriteFile. Это почти прозрачно для доступа к аппаратным средствам Dll - в режиме эмуляции он должен вызывать эмулированный DeviceIoControl вместо Win32 DeviceIoControl.
Наконец, вы можете эмулировать аппаратную доступность Dll, предоставляя функции эмуляции в самой Dll или записывая другую библиотеку с тем же интерфейсом.
Как вы видите, последние два варианта довольно просты и позволяют разрабатывать приложения высокого уровня без реального устройства. Конечно, способ, которым вы хотите это сделать, является самым сложным и даст наилучшие результаты. Опять же, попробуйте получить дополнительную информацию об этом на сайте разработчиков драйверов Windows.
Важно также, какая часть этой полной цепи (от UI до устройства) является вашей, а какая часть разработана вашим клиентом. Если клиент поставляет аппаратное устройство, драйвер и аппаратное обеспечение доступа к Dll (SDK), вполне достаточно, чтобы вы могли эмулировать этот SDK, не записывая сложный материал для подключения.
Что вы хотите сказать? что ты уже испробовал? –
Что означает «ч/б»? Пропускная способность? Черное и белое? –
это домашнее задание? – cpx