Получаем программно серийный номер на ТСД Cipher 9300

Публикация в дополнение вот к этой: Программируем лазерный считыватель на терминалах сбора данных Cipher (9300).

У терминалов сбора данных Cipher с Windows CE — есть одна особенность, в отличие от всех других ТСД (во всяком случае Motorola(Symbol) и Datalogic) стандартными способами получить серийный номер не получится. Получить то он получится — но будет на всех устройствах одинаковый, что лично меня не устраивает.

Однако этот глюк можно обойти и получить серийный номер при помощи API с библиотекой SystemApi_Ce_Net.DLL которая поставляется на диске с терминалом.

Ниже маленький примерчик кода — как это сделать:
using Cipherlab.SystemAPI;


int err = 0;

DataType.DataStruct.SYSINFO sysinfo = new DataType.DataStruct.SYSINFO();
            
err = SystemAPI.Function.GetSysInfo(ref sysinfo);

string serial = Encoding.UTF8.GetString(sysinfo.SerialNum,0,sysinfo.SerialNum.Length);

Полагаю комментарии излишни, и так всё достаточно просто и понятно.

Убираем панель задач на .NET CF 2.0 (делаем Full Screen)

Недавно столкнулся с проблемой, что FormWindowState.Maximized не везде работает. Например у меня на одном из устройств с Windows CE 6.0 — отказалось работать, и ни какие танцы с бубнами не помогали. Долго копался в интернете, в русскоязычном ничего не нащёл, набрёл на руководство на одном англоязычном сайте.

Сделал у себя, заработало!

Итак, проблема решается тремя функциями из coredll.dll:
Читать дальше →

Многострочный ListView для .NET CF

Давно была необходимость в таком компоненте, и вот наконец дошли руки. Первая версия готова. Данный компонент, это ListView для мобильных устройств на базе Windiws Mobile в котором можно задавать количество строк в позиции (до 10 строк). Предназначен в первую очередь для современных устройств с большими экранами и довольно мощной аппаратной начинкой, но будет работать и на слабеньких устройствах с разрешением экрана 240X320, при этом ширина строк меньше но количество строк удваивается (для EGA — возможно только четное количество строк, задав 5 получите 10, задав 1 получите 2; 1,3 или 5 строк быть не может). В качестве фона используется произвольное изображение.

Скриншоты работы компонента:
GraphListViewGraphListViewGraphListView

Скачать компонент: GraphListView.rar

Читать дальше →

Проверяем заряд аккумулятора на мобильном устройстве в C#

    В этой публикации я приведу пример получения информации о заряде аккумуляторов на мобильном устройстве под управлением Windows Mobile. Данный код написан очень давно. На днях вновь понадобился.
    Для получения информации о заряде используем coredll. Получаем значения двух батареек, во многих КПК (во всяком случае промышленных, на подобии этого) используются 2 аккумулятора, один основной, другой резервный, для сохранности данных. Информацию можно получить и с того и с другого, если он конечно имеется.

Ну да хватит болтовни, к делу. Пример:
Читать дальше →

Изменение размера изображения в C# для Win Mobile

В дополнение к публикации об изменении изображений в С# появилась необходимость привести пример функции которая будет делать то-же самое но на мобильной платформе.

Пример:
//Изменение размеров изображения
        public static Image Resize(Image image, Size size)
        {
            Image bmp = new Bitmap(size.Width, size.Height);
            using (var g = Graphics.FromImage(bmp))
            {
                g.DrawImage(
                    image,
                    new Rectangle(0, 0, size.Width, size.Height),
                    new Rectangle(0, 0, image.Width, image.Height),
                    GraphicsUnit.Pixel);
            }
            return bmp;
        }

На входе функции надо передать исходное изображение и требуемые размеры (которые хотим получить на выходе). На выходе получим необходимое изображение.

P.S.
Для работы функции необходимо подключить:
using System.Drawing.Imaging;

Как научить КПК проигрывать WAV файлы

    Мобильное устройство с поддержкой .NET CF версии 3.5 (и надеюсь и выше) можно достаточно легко научить проигрывать медиа файлы формата .WAV. С этой версии .NET CF имеет необходимый набор функций для воспроизведения звуковых файлов.

Без лишних слов, просто приведу примеры, они элементарны и очень просты.

Два примера проигрывания звукового файла:

Пример №1
System.Media.SoundPlayer player = new System.Media.SoundPlayer(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + "\\mysound.wav");
player.Play();

В этом примере будет воспроизведён файл mysound.wav, который должен находиться в той же папке что и приложение на устройстве.

Читать дальше →

Ошибки при компиляции Smart Device Setup Project и их лечение.

Итак — при первом создании .cab файла, для установки на устройство может возникнуть, и скорее всего возникнет, такая проблема:
The Windows CE CAB Wizard encountered an error. See the output window for more information.
Для того чтобы понять в чём дело, смотрим на что же всётаки ругается для этого открываем: View->Output

Там скорее всего видим это:
Error: The INF file contains Unicode characters that could not be converted correctly to ANSI

Проблема (в моём случае) оказалась в том что в свойствах проекта Manufacturer был вписан русскими буквами. Меняешь на английские и всё замечательно начинает работать.

Получение фотографии с камеры КПК

Недавно задумался над небольшой задачей — задействовать фотокамеру в своём приложении и получить с неё фотографии. Как оказалось, это довольно просто делается.
Для этого просто необходимо добавить в проект библиотеку Microsoft.WindowsMobile.Forms.
Библиотека находится в Windows Mobile SDK — скачать его можно на сайте Microsoft.

Читать дальше →

Работа с G - Sensor (акселерометром) на HTC

Недавно озадачился (в связи с приобретением девайса HTC HD2) а как же в нём, взять с акселерометра данные? И вот результат трудов, маленькая библиотека для доступа к G-Сенсору в HTC (теоретически должна подходить для всех HTC с акселерометром). Разумеется всё это с исходным кодом, используйте на ваше удовольствие в своих разработках.

Читать дальше →