360 likes | 554 Views
2014. Министерство образования и науки Российской Федерации ФГАОУ ВПО «Уральский федеральный университет имени первого Президента России Б. Н. Ельцина» Институт радиоэлектроники и информационных технологий – РТФ Кафедра информационных технологий.
E N D
2014 Министерство образования и науки Российской ФедерацииФГАОУ ВПО «Уральский федеральный университет имени первого Президента России Б. Н. Ельцина» Институт радиоэлектроники и информационных технологий – РТФ Кафедра информационных технологий РАЗРАБОТКА СИСТЕМЫОПОВЕЩЕНИЯ СОТРУДНИКОВ И КЛИЕНТОВ КОМПАНИИ230101 0000 521
Цель дипломного проекта Разработать вспомогательную систему оповещения сотрудников и клиентов о предстоящих мероприятиях в компании.
Современные информационные системы позволяют в максимально короткие сроки выявить наиболее существенные тенденции развития компании в целом и оценить эффективность работы отдельных структурных подразделений, а так же вовремя среагировать на ту или иную ситуацию в бизнес-процессе.
Задачи дипломного проекта • создать систему позволяющую посредством АТ команд взаимодействовать, обмениваться данными с устройством; • изучить готовые программные продукты позволяющие взаимодействовать с устройством; • изучить возможности взаимодействия с устройством посредством COM порта; • изучить программные оболочки позволяющие разрабатывать подобные низкоуровневые программные решения на базе взаимодействия с COM портом; • разработать программное решение позволяющее взаимодействовать с устройством посредством АТ команд; • разработать инструкцию программиста; • разработать инструкцию пользователя; • оценить экономическую целесообразность проекта.
Терминальные решения Далее приводится обзор и анализ существующих решений для взаимодействия с устройством. Приведены примеры реализации интерфейсов. Демонстрируется возможность взаимодействия с устройством посредством АТ команд.
Сравнительный анализ программных решений • HyperTerminal – разрабатывается и поддерживается Microsoft, позволяет взаимодействовать с устройством, производить отсылку команд, использовать расширенные средства для работы с COM портом, является довольно объемным продуктом, обладает большими возможностями. В качестве примера реализации интерфейса нашего продукта использоваться не будет. Так как обладает обширными возможностями которые в нашем случае не нужны.
Сравнительный анализ программных решений • PuTTY – программный продукт является терминалом. Продукт написан для создания удалённых подключений по разным интерфейсам и может взаимодействовать с различными устройствами подключенными по COM порту. Обладает довольно большими возможностями. По большому счёту представляет из себя целую систему для взаимодействия как по сети интернет, так и непосредственно напрямую с устройством. В качестве примера для реализации использоваться не будет, в силу своей глобальности.
Сравнительный анализ программных решений • Huawei Modem Terminal – терминальная среда разработанная специально для взаимодействия с устройствами “Huawei”, по своему интерфейсу является довольно простой, позволяет организовать взаимодействие с устройством. Обладает простым набором функций. Позволяет изучить синтаксис АТ команд. Реализует управление практически всеми функциями устройства. В качестве примера будем использовать интерфейс данной программы.
Среды разработки Далее приводится обзор и анализ существующих сред разработки для осуществления производства программного продукта. Приведены примеры интерфейсов. Проанализированы положительные и отрицательные стороны продуктов. Оценена возможность взаимодействия сустройством посредством COM порта. Оценена целесообразность реализации в каждой из сред.
Сравнительный анализ сред разработки • Borland C++ 3.1 – среда разработки позволяющая создавать DOS приложения в среде Windows и соответственно в среде DOS. В первую очередь среда ориентирована на пользователей которые только начинают программировать, в качестве обучающей программированию программы. Однако, позволяет реализовывать довольно сложные проекты, включает в себя функции заложенные в 90-х годах Страуструпом в язык С++. Хотя данная среда и поддерживает реализацию взаимодействия с COM портом, выбор данного продукта в качестве среды разработки окажется довольно странным решением. Поскольку проект предполагает наличие пользовательского интерфейса, было принято решение в данной среде проект не разрабатывать.
Сравнительный анализ сред разработки • Borland C++ Builder 5.0 – интегрированная среда разработки, используемая для разработки программных продуктов разной направленности. Использует объектно-ориентированный принцип разработки приложений. Проект будет разрабатываться в данной среде. Поскольку среда обладает многими возможностями. В частности: простой понятный интерфейс, высокая скорость работыоболочки, имеются необходимые средства отладки приложений. Среда использует доступный и понятный язык C++. Также возможно реализовать весь программный потенциал приложения. Имеются необходимые для работы с COM портом библиотеки.
Сравнительный анализ сред разработки • Microsoft Visual Studio – мощный программный продукт позволяющий создавать приложения разной направленности. Содержит в себе огромное количество разнообразных средств по отладке и настройке приложений, Позволяет в полной мере работать с проектом приложения и его компонентами. Реализует перспективный язык программирования С#. Поскольку приложение довольно объемное и предназначено для разработки довольно масштабных проектов, в нашем случае использование данного продукта, на мой взгляд, не является оправданным. Т.е. использоваться не будет. Хотя и имеются все необходимые средства для реализации данного проекта.
Согласно проекту необходимо реализовать: • низкоуровневое взаимодействие с COM портом, т.е. открытие, закрытие, настройка параметров, обмен информацией; • передачу АТ команды в COM порт; • алгоритм отправки СМС, согласно АТ стандарту; • работу со строковыми данными; • вывод и анализ информации.
Работа с COM портом осуществляется через класс CommPort, используются следующие поля и методы данного класса boolean CommPort->Open, int CommPort->ComNumber, boolean CommPort->InBuffUsed void CommPort->GetBlock(char *s, int in_b) void CommPort->PutString(char *str) void CommPort->PutBlock(char *str, int s) При этом не использовались функции прерывания ассемблера.
Формат AT команд • AT – тестовая команда • AT+[command]? - вывод параметров • AT+[command]=? - вывод возможных параметров, тест команды • AT+[command]=value - установка параметра (ов)
Основныеиспользуемые AT команды • AT – проверка подключения • ATI8 – информационная команда • AT+CBC – уровень заряда устройства • AT+CSQ – уровень сигнала (RSSI) • AT+CMGF=1(0) – режим работы устройства (text, pdu) • AT+CMGS=“+79502022223” – задание номера получателя в текстовом режиме • AT+CMGS=31 – задание длины сообщения • ATD*102#; - выполнение USSD запроса • ATD+79502022223; - выполнение голосового вызова • ATH – сброс вызова • AT+CHUP сброс всех вызовов
Формат СМС команды PDU SMS = SCA + TPDU SCA – “07” (1байт типа + 6 байт номера) + “91” (типмеждународный) + “9720780110F0” (номер смс центра, подготовленный)либо “00” если центр не задан явно. TPDU – “01” (исход. сообщ.) + “00” (не использ.) + “0B” (длина номера 11 цифр в hex) + “91” (тип международный) + “9705022222F3” (номер получ. подготовл. ) + “00” (идент. протокола) + “08” (формат сообщ. UCS2, не флеш) + “12” (длина сообщ. 18байт – 12 в hex) + “041F 0440 0438 0432 0435 0442 0021 0021 0021” (сообщение согласно UCS2)
Методы использованные для работы со строками char *strcpy (char *dst, const char *src); char *strcat(char * str1, const char *str2); Trim(AnsiString(str)); void IntToStr(int input, char *output); TrimLeft(str); TrimRight(str); size_t strlen(const char *str) void IntToHex(int input, char *output); Основные задачи были реализованы строковыми функциями методами класса string.
Последовательность событий • Создание формы. Выполняются процессы подготовки формы. Подготовка таймеров. Установка элементов формы в нужное состояние. • Событие подключения к COM порту. Инициализация взаимодействия. • События работы с буфером COM порта: отсылка команд в буфер, организация взаимодействия. • Завершение работы формы. Закрытие соединения. Отключение вспомогательных элементов.
Последовательность событий • Создание формы. Инициализация элементов формы. Подготовка параметров. Задание полям необходимых для работы свойств. Инициализация таймера. • Событие подключения. Инициализация взаимодействия с COM. • События выбора режима работы. Устанавливаются необходимые свойства полей. Выполняется проверка допустимых команд. • Событие ввода сообщения. Осуществление необходимых проверок. Осуществляется подсчёт и обработка введенных данных. • События вспомогательных элементов формы. • Событие отправки сообщения, выполняются необходимые проверки, выполняется отправка. • Закрытие формы. Завершение соединения. Отключение всех вспомогательных элементов формы. Завершение работы.
Далее демонстрируются некоторые ключевые моменты кода.
Проверка поддержки режима strcpy(str, "AT+CMGF=1"); strcat(str, cr); CommPort1->PutString(str); Sleep(100); int in_b=0; in_b=CommPort1->InBuffUsed; char *s=new char[in_b+1]; in_b=CommPort1->GetBlock(s, in_b); s[in_b]=0; //nujno vivesti s if ((s[12]=='E') && (CheckBox2->Checked==true)) //proveryaem esli modem otvetil ERROR { ShowMessage("Текстовый режим не поддерживается данным устройством"); Sleep(300); CheckBox2->Checked=false; //sbrasivaem checked Label10->Caption=s[12]; //test //zakomentirovat' Memo1->MaxLength=70; Label13->Caption=70; sym_count=70; }
Осуществление проверки номера strcpy(str, Edit2->Text.c_str()); //pomeschaem smscnum v str //Trim(AnsiString(str)); //udalyaem probeli v nomere esli oni est' sleva i sprava //for (int i=0; i<strlen(str); i++) { // if (str[i]==' ') str[i]=str[i+1]; } if (str[0]=='8') { str[0]='7'; //Trim(AnsiString(str)); } if (str[0]=='+') //esli est' "+" sdvigaem vse cifri vlevo, + ischezaet { for(unsigned int i=0; i<=strlen(str); i++) { str[i]=str[i+1]; } //str[0]=0; //TrimLeft(AnsiString(str)); } if( strlen(str)!=11) { ShowMessage("Возможно номер получателя задан не корректно"); } num_length=strlen(str);
Осуществление кодирования символов WideString WIN=(Memo1->Text.c_str()); int ch; a=0; for (int i=1; i<=WIN.Length(); i++) { ch=WIN[i]; if (ch<127) // kodiruem strochniye i prpisniye latinskie bukvi { //ShowMessage("latin detected!!!"); strcat(mes, IntToHex(ch,4).c_str()); } if (ch==1105) //malen'kaya yo { strcat(mes, "0451"); } if (ch==1025) { //ShowMessage("big yo detected!!!"); strcat(mes, "0401"); } if (ch>161) // kodiruem strochniye i prpisniye latinskie bukvi { //ShowMessage("russian character detected!"); strcat(mes, IntToHex(ch,4).c_str()); } }
Заключение В данном дипломном проекте был проведён обзор инструментальных средств разработки приложений. Выбор был сделан в пользу Borland Builder, т.к. он реализует в полной мере язык С++, а также необходимые нам возможности. Выполнен сравнительный обзор программных средств для работы с устройством. Была самостоятельно реализована процедура рассылки сообщений. Получен опыт программирования низкоуровневых операций. Проект, безусловно, является экономически выгодным.