» » » Иво Салмре - Программирование мобильных устройств на платформе .NET Compact Framework


Авторские права

Иво Салмре - Программирование мобильных устройств на платформе .NET Compact Framework

Здесь можно скачать бесплатно "Иво Салмре - Программирование мобильных устройств на платформе .NET Compact Framework" в формате fb2, epub, txt, doc, pdf. Жанр: Программирование, издательство Издательский дом "Вильямс", год 2006. Так же Вы можете читать книгу онлайн без регистрации и SMS на сайте LibFox.Ru (ЛибФокс) или прочесть описание и ознакомиться с отзывами.
Иво Салмре - Программирование мобильных устройств на платформе .NET Compact Framework
Рейтинг:
Название:
Программирование мобильных устройств на платформе .NET Compact Framework
Автор:
Издательство:
Издательский дом "Вильямс"
Год:
2006
ISBN:
5-8459-0989-9
Скачать:

99Пожалуйста дождитесь своей очереди, идёт подготовка вашей ссылки для скачивания...

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.

Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.

Как получить книгу?
Оплатили, но не знаете что делать дальше? Инструкция.

Описание книги "Программирование мобильных устройств на платформе .NET Compact Framework"

Описание и краткое содержание "Программирование мобильных устройств на платформе .NET Compact Framework" читать бесплатно онлайн.



Книга известного профессионала в области компьютерных технологий посвящена разработке приложений для широкого спектра мобильных устройств с использованием популярной и постоянно развивающейся платформы .NET Compact Framework. Уникальность этой книги состоит в том, что в ней гармонично переплетены теоретические сведения обо всем цикле разработки программного обеспечения с практическими примерами применения на языках С# и Visual Basic. Подробно рассматриваются концепции, лежащие в основе самой платформы .NET Compact Framework, а также вопросы, связанные с созданием эффективного пользовательского интерфейса, управлением памятью, производительностью и надежностью. Немалое внимание уделяется практическим аспектам разработки приложений для мобильных устройств, среди которых выбор модели представления и доступа к данным, внедрение коммуникационной модели, реализация модели поведения с помощью конечных автоматов и использование XML.

Книга рассчитана на разработчиков разной квалификации, а также может быть полезна для студентов и преподавателей соответствующих специальностей.






    //Освободить все распределенные нами ранее ресурсы

    //------------------------------------------------

    if (streamOutToIrDA != null) {

     try {

      streamOutToIrDA.Close();

     } саtch{};//Поглотить любую ошибку

     streamOutToIrDA = null;

    }

    if (streamInFromFile != null) {

     try {

      streamInFromFile.Close();

     } catch{};//Поглотить любую ошибку

     streamInFromFile = null;

    }

    if (irDASender != null) {

     try {

      irDASender.Close();

     } catch{}; //Поглотить любую ошибку

     irDASender = null;

    }

    return; //Выход

   }


   //Проверить успешность выполнения

   if (bSuccess == true) {

    m_descriptionOfLastSendAttempt = "Success!";

    setStatus(SendStatus.Finished_Successfully);

    return;

   }


   //Проверить, не была ли операция отменена пользователем

   if (m_wasSenderStopped == true) {

    m_descriptionOfLastSendAttempt = "User Aborted.";

    setStatus(SendStatus.Finished_Aborted);

    return;

   }


   //B противном случае... Нам пока не удалось обнаружить сервер IrDA,

   //имя которого совпадает с именем службы. Мы продолжим выполнение

   //цикла и попытаемся найти сервер.

  }


  //Мы никогда не попадем в это место программы при выполнении

 }


 //Попытаться передать поток ввода-вывода (например, файл) посредством IR

 //[возвращаемое значение]:

 // true: успешная передача файла

 // false: файл не был успешно передан

 private bool sendStream(

  out string errorDescription, ref System.IO.Stream streamOutToIrDA,

  ref System.Net.Sockets.IrDAClient irDASender, ref System.IO.Stream streamInFromFile) {

  errorDescription = "";


  //----------------------------

  //Создание нового клиента IRDA

  //----------------------------

  try {

   //-------------------------------------------------------

   //Возврат произойдет довольно быстро. Клиент будет выбран

   //и возвращен, если прослушивающие клиенты отсутствуют.

   //-------------------------------------------------------

   irDASender = new System.Net.Sockets.IrDAClient(m_IrDAServiceName);

  } catch (System.Exception eCreateClient) {

   //B данном случае могло возникнуть несколько ситуаций:

   //#1: отсутствуют прослушивающие устройства

   //#2: прослушивающее устройство существует, но не реагирует

   // (может отказаться от разговора)

   errorDescription = eCreateClient.Message;

   return false;

  }

  //B данном случае могло возникнуть несколько ситуаций:

  //#1: Мы получили соединение от приемного устройства IR

  //#2: IR-запрос был отменен (кто-то вызвал функцию STOP).

  if (m_wasSenderStopped == true) {

   irDASender.Close();

   irDASender = null;

   return false;

  }


  //==========================================

  //ПЕРЕДАТЬ ДАННЫЕ!

  //==========================================


  //Открыть файл, который мы хотим передать

  streamInFromFile = System.IO.File.OpenRead(m_fileToSend);


  //Открыть сокет IrDA, которому мы хотим передать данные

  streamOutToIrDA = irDASender.GetStream();


  const int BUFFER_SIZE = 1024;

  byte[] inBuffer = new byte[BUFFER_SIZE];

  int bytesRead;

  int iTestAll = 0;

  int iTestWrite = 0;

  do {

   //Считать байты из файла

   bytesRead = streamInFromFile.Read(inBuffer, 0, BUFFER_SIZE);

   iTestAll = iTestAll + 1;


   //Записать байты в наш выходной поток

   if (bytesRead > 0) {

    streamOutToIrDA.Write(inBuffer, 0, bytesRead);

    iTestWrite = iTestWrite + 1;

   }

  } while (bytesRead > 0);


  //Сбросить выходной поток

  streamOutToIrDA.Flush(); //Закончить запись любых данных

  streamOutToIrDA.Close(); //Закрыть поток

  streamOutToIrDA = null;


  //Освободить локальный файл

  streamInFromFile.Close();

  streamOutToIrDA = null;


  //Освободить порт IrDA

  irDASender.Close();

  irDASender = null;


  //Успешное завершение!!!

  return true;

 }

} //конец класса

Листинг 15.5. Класс IrDAFileReceive

//-------------------------------------------------------------------

//Обеспечивает прием файла через IrDA (инфракрасный порт).

//

//Этот класс НЕ является реентерабельным и не должен вызываться более

//чем одной функцией за один раз. Если необходимо иметь несколько

//сеансов связи через IR, это необходимо делать путем создания

//нескольких различных экземпляров данного класса.

//-------------------------------------------------------------------

public class IrDAFileReceive {

 private bool m_wasListenerStopped;

 private string m_IrDAServiceName;

 private string m_fileNameForDownload;

 private string m_errorDuringTransfer;

 private System.Net.Sockets.IrDAListener m_irListener;

 private ReceiveStatus m_ReceiveStatus;

 public string ErrorText {

  get {

   return m_errorDuringTransfer;

  }

 }


 //--------------------------

 //Различные состояния приема

 //--------------------------

 public enum ReceiveStatus {

  NotDone_SettingUp,

  NotDone_WaitingForSender,

  NotDone_Receiving,

  Done_Success,

  Done_Aborted,

  Done_ErrorOccured

 }


 //------------------------------

 // Возвращает состояние передачи

 //------------------------------

 public ReceiveStatus Status {

  get {

   //Обеспечить многопоточную безопасность для предотвращения

   //параллельного выполнения операций чтения/записи

   lock(this) {

    return m_ReceiveStatus;

   } //конец lock

  } //конец get

 } //конец свойства


 private void setStatus(ReceiveStatus newStatus) {

  //Обеспечить многопоточную безопасность для предотвращения

  //параллельного выполнения операций чтения/записи

  lock(this) {

   m_ReceiveStatus = newStatus;

  } //конец lock

 }


 //--------------------------------------------------

 // [in] filename: желаемое имя для входного файла IR

 //--------------------------------------------------

 public IrDAFileReceive(string filename, string irdaServiceName) {

  //Имя сокета IrDA, который мы хотим открыть

  m_IrDAServiceName = irdaServiceName;

  //Имя файла, в котором мы хотим сохранить полученные данные

  m_fileNameForDownload = filename;

 }


 //----------------------------------------------------------

 //Обеспечивает асинхронный прием файла через IR

 //

 // [in] filename: имя файла, в который осуществляется запись

 //----------------------------------------------------------

 public void WaitForIRFileDownloadAsync() {

  //Заметьте, что сейчас мы находимся в режиме подготовки

  setStatus(ReceiveStatus.NotDone_SettingUp);


  //-------------------

  //Создать новый поток

  //-------------------

  System.Threading.ThreadStart threadEntryPoint;

  threadEntryPoint =

   new System.Threading.ThreadStart(WaitForIRFileDownload);

  System.Threading.Thread newThread = new System.Threading.Thread(threadEntryPoint);


  //Запустить поток на выполнение

  newThread.Start();

 }


 //------------------------------------------

 //Открывает порт IR и ожидает загрузки файла

 //------------------------------------------

 public void WaitForIRFileDownload() {

  System.IO.Stream outputStream = null;

  System.Net.Sockets.IrDAClient irdaClient = null;

  System.IO.Stream irStreamIn = null;

  try {

   //=========================================================

   //Задать и загрузить файл!

   //=========================================================

   internal WaitForIRFileDownload(ref outputStream,ref irdaClient, ref irStreamIn);

  } catch

  //Поглотить любые возникающие ошибки

  {

   setStatus(ReceiveStatus.Done_ErrorOccured);

  }

  //=============================================

  //Освободить все ресурсы

  //=============================================


  //Закрыть наш входной поток

  if (irStreamIn != null) {

   try {

    irStreamIn.Close();

   } catch {} //Поглотить любые возникающие ошибки

  }


  //Закрытие клиента IrDA


На Facebook В Твиттере В Instagram В Одноклассниках Мы Вконтакте
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!

Похожие книги на "Программирование мобильных устройств на платформе .NET Compact Framework"

Книги похожие на "Программирование мобильных устройств на платформе .NET Compact Framework" читать онлайн или скачать бесплатно полные версии.


Понравилась книга? Оставьте Ваш комментарий, поделитесь впечатлениями или расскажите друзьям

Все книги автора Иво Салмре

Иво Салмре - все книги автора в одном месте на сайте онлайн библиотеки LibFox.

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Отзывы о "Иво Салмре - Программирование мобильных устройств на платформе .NET Compact Framework"

Отзывы читателей о книге "Программирование мобильных устройств на платформе .NET Compact Framework", комментарии и мнения людей о произведении.

А что Вы думаете о книге? Оставьте Ваш отзыв.