Показать сообщение отдельно

  #1  
Старый 02.09.2010, 17:29
Pr0mo
Новичок
Регистрация: 26.11.2009
Сообщений: 20
С нами: 8662587

Репутация: 60
По умолчанию

1. Предисловие

Как можно заметить из количества моих постов - я молчалив, а это моя первая статья. Очевидно многим она ничего нового не расскажет, однако нельзя забывать, что по форуму "гуляют" новички. Итак, если у тебя есть КПК и ты устал качать и искать нужный тебе софт под своего зверька, пора задуматься: А не попробовать ли написать его самому?!

2. Приступаем



Скажу сразу - на моем КПК установлена Windows Mobile 6 (WM6) и в качестве тестового плацдарма выступает именно она. Однако безусловно подойдет и более раняя версия WM5. Не будем рассматривать поздние ОС (Windows CE X.XX, Pocket PC 200x) - они устарели и в новых КПК их конечно же не стоит.

Конечно программирование под КПК, как и под ПК предполагает знание Вами хотя бы одного из языков программирования: C++, C#, VB.NET. Я предпочитаю C#.NET. Для меня он более удобен и, что немаловажно, прост. Поэтому и новичкам я советую поиграться с ним для начала, а уж если и надумаете далее писать что-то серьезное (к примеру системные вещи) - перейдете на C++. Но не пугайтесь, если программирование для Вас еще темный лес, сейчас Вы увидете на сколько оказывается это просто и для КПК.

Для старта у нас на ПК должны быть установлены:
* В статье используется русскоязычная Visual Studio. Вы можете использовать и англоязычную, но прийдется искать в меню аналоги перевода с английского на русский.


Примечательно то, что в Visual Studio уже встроен эмулятор устройства КПК. Поэтому работать можно что называется "неотходя от кассы", а протестированный вариант программы уже потом загрузить на КПК и довольствоваться проделанной работой. Тем не менее у эмулятора есть ряд ограничений:
  • Протокол связи с внешними устройствами только TCP/IP
  • Поддерживает только один процессор x86
  • Не поддерживает контактный экран (да и не особо нужно)
  • Нет записи звука
  • Поддерживает только английскую раскладку (На мой взгляд самое весомое ограничение)


3. Простой пример

От слов к делу. Запускаем Visual Studio. Если это Ваш первый запуск, то выбираем запуск Visual Studio c обычными параметрами. Создаем новый проект: Файл -> Создать -> Проект... . В левом углу раскрываем тип проекта Visual C# -> Смарт-устройство. В правом углу выбираем шаблон: Проект интеллектуавльных устройств. Снизу можно задать имя проекта и указать в какой папке он будет сохранен и нажимаем Ок. (см картинку).


Далее видим диалоговое окно добавления нового проекта. В качестве конечной платформы выбираем Windows Mobile 5.0 Pocket PC SDK, а версию фреймворка поставим .Net Compact Framework 2.0. Из шаблонов выбирем: Приложение для устройства. Жмем Ок.


И перед нами окно разработки приложения. Слева редактируем форму, справа список подключенных модулей. Почти вся работа может осуществлятся редактированием формы: Добавил компонент и обработал его событие. Вот и сейчас давайте просто добавим кнопку (Button) из выдвигающейся панели инструменов, кидаем на форму, дважды кликаем, чтобы обработать ее нажатие и попасть в область редактирования кода. Впишем всеми любимый и простой "Hello world!"

Код:
private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Hello world! This is antichat!");
        }
После этого в меню выбираем Построение -> Построить решение (или же Ctrl+Shift+B). Таким образом Вы откомпилируете написанный программный код и все модули соберутся воедино. Если все сделано правильно (а разве можно в таком простом примере ошибиться?) в выводе (в нижней части Visual Studio) будет написано что-то вроде:

Компиляция завершена -- ошибок: 0, предупреждений: 0

SmartDeviceProject1 -> C:\Users\Admin\Documents\Visual Studio2005\Project\SmartDeviceProject1\SmartDevice Project1\bin\Debug\SmartDeviceProject1.exe

========== Построение: успешно и без изменений: 1, с ошибками: 0, пропущено: 0 ==========​

В принципе уже готовый SmartDeviceProject1.exe файл можно искать в папке сохранения. Но давайте сэмитируем запуск не на ПК, а на КПК.

Для этого в меню: Отладка -> Начать отладку. И в новом диалоговом окне выбираем эмулятор: USA WM 5.0 Pocket PC R2 Emulator. Нажимаем кнопку Развернуть.


Некоторое время эмулятор будет подготавливать все для запуска программы, после чего появится окно программы (форма). Нажимаем на нашу кнопку и в результате выдается сообщение: Hello world! This is antichat! То есть эмулятор сэмитировал нажатие по сенсорному экрану, как Вы бы это делали стилусом, пальцем или еще чем


4. Подключаем фантазию

По большому стчету на простом примере можно было и закончить статью, ведь дальше все ограничивается знанием языка C#. Однако я приведу еще тоже довольно простой пример, демонстрирующий как легко и быстро можно писать полезные для себя вещи.

Как-то была у нас в универе (на лекциях же скучно) была игра в слова. Ну та самая игра, где из большого слова нужно как можно больше составить мелких. Однокурсники долго не понимали откуда я знаю столько слов и все время выигрываю, пока я не раскрыл секрет. Дак вот, была написана простенькая программа для КПК, которая все это делала за меня и вот её не сложный код (обработка клика кнопки Start):


Код:
private void menuItem1_Click(object sender, EventArgs e)
        {
            int count;
            bool found;
            int k;
            String InWord;
            char letter;
            FileStream stream = null;
            StreamReader reader = null;
            String DicPath;

            // DicPath = "dic.txt";
            // if (openFileDialog1.ShowDialog() == DialogResult.OK)
            //     DicPath = openFileDialog1.FileName;

            DicPath = AppPath + "Dictionaries\\" + comboBox1.SelectedItem; //указываем директорию к словарю 
            count = 0; // Найдено 0 файлов изначально
            listBox1.Items.Clear(); //Очищаем список найденных слов
            if ((textBox1.Text != String.Empty) && (comboBox1.SelectedIndex >= 0)) // Если поля ввода заполнены
            {
                try
                {
                    stream = new FileStream(                              // Открываем файл для чтения
                        DicPath, FileMode.Open, FileAccess.Read,
                        FileShare.Read
                    );
                    reader = new StreamReader(stream, Encoding.Default); // Reader читает из потока данные 

                    // Или иначе можно так:
                    // reader = new StreamReader(args[0]);
                    // reader = File.OpenText(filename);

                    String line = reader.ReadLine(); //Читаем первую строчку-слово из словаря
                    while (line != null) // Так сказать, если не конец файла, читаем в цикле все остальное
                    {
                        InWord = textBox1.Text; // Введенное слово
                        found = false;
                        for (int i = 0; i = 0)
                            {
                                found = true;
                                InWord = InWord.Remove(k, 1);
                            }
                            else
                            {
                                found = false;
                                break;
                            }

                        }
                        if (found)
                        {
                            if (line != textBox1.Text)
                            {
                                count++; 
                                listBox1.Items.Add(line);
                            }
                        }
                        line = reader.ReadLine();
                        Application.DoEvents();  // Чтобы приложение не зависало во время выполнения цыкла
                    }
                }
                catch (Exception error)
                {
                    MessageBox.Show(error.Message); // Обработка ошибок
                }
                finally
                {
                    if (stream != null) // Обработка конца потока и закрытие его (файла)
                    {
                        stream.Close();
                        statusBar1.Text = "Найдено : " + Convert.ToString(count); // Выводим количество найденных слов
                    }
                }
            }
            else
                MessageBox.Show("Не все данные введены!");
        }
Полный исходный код проекта в купе со словарем можно скачатьТУТ



5. Заключение


Конечно в статье всего не расскажешь и не покажешь, я лишь указал Вам направление, потому как, возможно, имея КПК и некоторое представление о программировании, Вы и не задумывались о наполнении его своими "фенечками". Если говорить о том, на сколько это перспективно и актуально - все зависит Вас. В интернете полно ПО для КПК, но за частую то, что приходится по душе мало. Спасибо за внимание.

© Pr0mo
 
Ответить с цитированием