Программирование приложений в CE
Эту швейную машину Bernina Artisita можно запрограммировать для шитья сложными стежками. Можно загружать также новые стежки. На ней выполняется Windows Embedded CE. Фотография с разрешения Mike Hall.
Программирование приложений в CE
В качестве введения в разработку прикладных программ рассмотрим несколько коротких программ C/C++ для Windows Embedded CE для демонстрации базовых операций В/В на устройстве eBox, использующем Windows Embedded CE. Предполагается, что читатель уже знаком с базовым синтаксисом C/C++.
Чтобы сохранить эти программы короткими и легкими для рассмотрения, все несколько первых примеров будут простыми консольными приложениями CE (в консольное окно посылается только текст -- никаких окон или графики). Программы C/C++ могут писать текст на консоль, используя функцию printf для строк ASCII или функцию wprintf для строк Unicode. Это сохранит начальные примеры программ короткими и немного легче для рассмотрения. В последующих примерах будут рассмотрены более типичные приложения Windows (на основе GUI) и пример на C#.
Если имеется специальное сгенерированное ядро CE, оно должно включать поддержку консольных приложений для выполнения и вывода из этих простых консольных программ. Консольное окно не появляется, пока программа не посылает первый символ на консоль.
Файлы исходного кода доступны для всех демонстрационных программ. Эти файлы можно скопировать с компакт-диска, приложенного к этому документу, и установлены как подпроекты в дизайн вашей ОС для быстрой демонстрации. Если они будут включены в ОС, примеры C/C++ можно выполнить с помощью Target Run Programs, или запустить, используя окно команд eBox. Программы C# необходимо будет развернуть, как было описано в последнем уроке в "Создание настройки ядра CE 6.0" .
Пример программы FileIO
Эта программа C++создает файл, записывает файл, и закрывает новый файл. Затем она открывает файл для операции чтения, считывает данные из файла, выводит их, и снова закрывает файл. На консоли выводятся статусные сообщения. После небольшой паузы, чтобы позволить пользователю просмотреть статусные сообщения в консольном окне, программа автоматически завершается. В Windows Embedded CE эти операции с файлами выполняют с помощью вызовов функций API CreateFile, ReadFile, WriteFile, и CloseHandle API.
Функция API CE Sleep(milliseconds) используется для задания паузы в программе. Отметим использование Unicode для строк имен файлов с помощью _T("..") и TCHAR. После выполнения программы можно также проверить содержимое нового файла, \Temp\CE_Demo.txt, используя на устройстве редактор, такой как WordPad. Отметим использование в C строки "\\" для представления одного символа обратной косой черты.
// FileIO.cpp : Определяет точку входа для консольного приложения. // // пример программы FileIO // Показывает как создать,записать, и прочитать файл, используя API файлов CE // // Помните, что CE использует 16-битный Unicode для символьных строк! // _T("....") генеририует строку Unicode // TCHAR является строковым типом Unicode // #include "stdafx.h" int _tmain(int argc, TCHAR *argv[], TCHAR *envp[]){ HANDLE hFile; DWORD cBytes; char cBuffer[] = "Hello File World\n"; printf("\nCreating CE_Demo.txt file\n"); // Открытие файла для записи hFile = CreateFile(_T("\\Temp\\CE_Demo.TXT"), GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); // Проверка ошибок открытия файла if (hFile == INVALID_HANDLE_VALUE){ printf("file write open errors\n"); Sleep(1000); return 0; } // Запись в файл if (!WriteFile(hFile, cBuffer, strlen(cBuffer), &cBytes, NULL)){ printf("file write errors\n"); Sleep(1000); return 0; } // Закрытие файла CloseHandle(hFile); // Снова открываем файл для чтения hFile = CreateFile(TEXT(""), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); // Проверяем ошибки открытия файла if (hFile == INVALID_HANDLE_VALUE){ printf("file read open errors\n"); Sleep(1000); return 0; } // Считываем только что записанные в новый файл данные if (!ReadFile(hFile, cBuffer, 79, &cBytes, NULL)){ printf("file read errors\n"); Sleep(1000); return 0; } // Выводим считанные данные и делаем задержку на 4 секунды // перед выходом из программы printf("%s\n",cBuffer,cBytes); printf("the file data was written and read back OK\n"); Sleep(4000); // Закрытие файла CloseHandle(hFile); return 1; }8.1.