Портирование демонстрационных приложений Windows на WinCE/XP Embedded
-
21-08-2019 - |
Вопрос
У нас есть ряд демонстрационных программ для ПК для наших микроконтроллеров.Программы обычно подключаются к чипу USB HID на плате микроконтроллера.Чип USB действует как коммуникационный мост, позволяя программам взаимодействовать с микросхемами через SPI/I2C/UART.Программы могут настраивать микросхемы и получать информацию о состоянии для отображения пользователю.
Сейчас мы планируем создать несколько автономных демонстраций с использованием одноплатных ПК.Мы хотели бы повторно использовать как можно больше исходного кода нашего существующего демонстрационного приложения.В идеале мы могли бы просто запустить их как есть.
Есть ли у кого-нибудь совет, как лучше всего двигаться дальше?Базовыми вариантами являются платы WinCE или XP Embedded.Платы WinCE, похоже, потребляют меньше энергии, что было бы преимуществом с точки зрения срока службы батареи.
Наши существующие демо-версии созданы либо на C++ под управлением Borland Builder, либо в Delphi.
Заранее спасибо.
РЕДАКТИРОВАТЬ:см. мой ответ ниже с информацией от поставщика плат.
Решение
Версии Delphi для WinCE не существует, поэтому вам придется переписать приложения.То же самое относится и к управляющим библиотекам Borland Builder.Только если вы использовали простой Win32 API, вы сможете легко перенести свое приложение на WinCE.Вы также можете столкнуться с проблемами с аппаратной частью доступа.Драйвер последовательного порта может работать не так, как есть.Кроме того, вам необходимо найти плату WinCE, которая может выступать в качестве USB-хоста и предоставляет драйверы HID (это встречается не очень часто).
В заключение я считаю, что вам будет лучше использовать платы с Windows XP Embedded.Они должны запускать ваши приложения такими, какие они есть.
Другие советы
Free Pascal/Lazarus может скомпилировать некоторые формы приложений Delphi в WiNCE/arm.Даже визуальные.
В качестве обновления и для дальнейшего использования я решил опубликовать здесь результаты наших обсуждений с поставщиком плат WinCE.Предостережение:Я на самом деле ничего из этого не пробовал.
Суть в том, что не существует простого способа сделать то, на что мы надеялись (т. е. перекомпилировать наши существующие демонстрационные приложения для работы под WinCE).Причина в том, что общие драйверы HID и стандартные API, существующие в версиях Windows для настольных компьютеров, просто отсутствуют в WinCE.
Чтобы общаться с HID-устройствами в WinCE, вам необходимо реализовать специальный драйвер HID.Это должно поддерживать интерфейс, позволяющий приложениям пользовательского режима взаимодействовать с драйвером и создавать отчеты HID для отправки на физическое устройство.Поскольку этот интерфейс сам по себе будет пользовательским, код приложения необходимо соответствующим образом обновить.
Разработка приложений WinCE обычно выполняется с использованием Visual Studio и компиляторов Microsoft.Нам рекомендовали следующий подход:
- Создайте собственный драйвер класса HID.Это может быть основано, например, на HID-драйвере клавиатуры Microsoft.
- Создайте API для общения с водителем.
- Используйте .net для создания наших приложений с графическим интерфейсом и используйте PInvoke для фактического взаимодействия с API.
Конечным результатом всех этих головоломок является то, что, чтобы избежать затрат времени и обучения, связанных с этим подходом, мы собираемся использовать плату под управлением XP.Затем мы можем использовать существующие демонстрационные приложения прямо из коробки.Компромисс заключается в том, что нам придется жить со значительно сокращенным временем автономной работы.