4-Описание программы (1061346)
Текст из файла
Московский государственный технический университет им. Н.Э. Баумана
Утверждаю: | |
Галкин В.А. | "__"___________2009 г. |
Курсовая работа по дисциплине
«Сетевые технологии»
«Локальная безадаптерная сеть»
описание программы
(вид документа)
писчая бумага
(вид носителя)
________15________
(количество листов)
ИСПОЛНИТЕЛИ: | |
студенты группы ИУ5-74 | |
Салихов Р.М. | ________________ |
Жильцов Д.А. | ________________ |
Меснянкин К.Л. | ________________ |
Москва, 2009г.
1. Общие сведения.
Наименование: “Программа обмена текстовыми сообщениями”.
Программа выполняется на языке программирования С++ и работает под управлением операционной системы Windows 98 и выше.
2. Назначение разработки.
Программа должна реализовывать функцию передачи текстовых сообщений между двумя ПЭВМ, соединенными через интерфейс RS-232C нуль-модемным кабелем.
3. Описание логической структуры.
3.1. Алгоритм интерфейсной части программы.
3.2. Алгоритм передачи текстового сообщения.
3.3 Алгоритм приема текстового файла.
4. Используемые технические средства.
Программа должна работать на IBM-совместимой ЭВМ следующей конфигурации:
-
Центральный процессор Perntium166 или выше;
-
Объем оперативной памяти 32 Мб;
-
Видеоадаптер и монитор VGA и выше;
-
Стандартная клавиатура;
-
Свободного пространства на жестком диске 2Мб;
Для работы программы требуются два IBM-совместимых компьютера, соединенных нуль-модемным кабелем через интерфейс RS-232C.
5. Входные и выходные данные.
5.1. Входные данные.
Входными данными является текстовое сообщение, набранное пользователем.
5.2. Выходные данные.
Выходными данными являются:
-
текст переданного сообщения на ПЭВМ;
-
сообщения об ошибках и выполнении передачи.
6. Спецификация данных.
6.1. Внутренние данные.
Данные указаны без учета стартовых и стоповых байтов.
Запрос на соединение:
Наименование | Тип поля | Размер (байт) |
Type (4) | Char | 1 |
Поддержание соединения:
Наименование | Тип поля | Размер (байт) |
Type (3) | Char | 1 |
Положительная квитанция:
Наименование | Тип поля | Размер (байт) |
Type (6) | Char | 1 |
Разрыв соединения:
Наименование | Тип поля | Размер (байт) |
Type (5) | Char | 1 |
Параметры порта:
Наименование | Тип поля | Размер (байт) |
Type (2) | Char | 1 |
DCB | Char [5] | 5 |
Информационный блок:
Наименование | Тип поля | Размер (байт) |
Type (1) | Char | 1 |
Data | AnsiString | Sizeof(Data) |
6.2. Структура сообщения.
Программа работает с текстовыми сообщениями стандарта ANSI размером не более 500 символов.
7. Спецификация функций.
int __fastcall SelectPort() – функция отображения окна выбора порта, возвращает номер порта;
void __fastcall Init(int i) – функция открытия и инициализации порта, устанавливает начальные значения параметров СОМ-порта;
DWORD WINAPI ReadThread(LPVOID p) – функция приема сообщений, выполняется в непрерывно потоке, осуществляет ожидание и чтение сообщений из буфера СОМ-порта, анализирует сообщения и выполняет соответствующие действия;
void __fastcall AddToMemo(TMemo * pMemo, char * str) – функция добавления строчки в поле по указателю pMemo, используется для вывода сообщений в окно диалога;
void __fastcall TForm1::Button3Click(TObject *Sender) – функция обработки нажатия кнопки «История» в форме «Исходящее сообщение»
void __fastcall TForm2::Button3Click(TObject *Sender) – функция обработки нажатия кнопки «История» в форме «Входящее сообщение»
void __fastcall TForm7::Button1Click(TObject *Sender) – функция обработки нажатия кнопки «Очистить» в форме «История»
char __fastcall ostatok(char a) – функция определения остатка от деления при выполнении операций циклического кодирования и декодирования, возвращает остаток;
void __fastcall Code(unsigned char * buf,unsigned char * buffer, int num) – функция циклического кодирования сообщения;
void __fastcall Decode(unsigned char * buf,unsigned char * buffer, int num) – функция декодирования сообщения;
void __fastcall TForm1::FormCreate(TObject *Sender) – функция обработки сообщения создания формы TForm1, очищает поле редактирования сообщения и блокирует кнопку «Отправить»;
void __fastcall TForm1::Button1Click(TObject *Sender) – функция обработки нажатия кнопки «Отправить», осуществляет формирование информационного кадра и его запись в порт;
void __fastcall TForm1::FormDestroy(TObject *Sender) – функция обработки события закрытия формы, осуществляет отправку сообщения о разъединении, закрытие порта и выход из программы;
void __fastcall TForm1::Button2Click(TObject *Sender) – функция обработки нажатия кнопки «Подключиться», осуществляет формирование кадра запроса на соединение и его запись в порт;
void __fastcall TForm1::Options1Click(TObject *Sender) – функция обработки выбора пункта меню «Настройки порта», выводит окно выбора параметров;
void __fastcall TForm1::About1Click(TObject *Sender) – функция обработки выбора пункта меню «Разработчики», выводит информационное окно о создателях программы;
void __fastcall TForm1::Timer2Timer(TObject *Sender) – функция обработки события таймера, используется при определении недостижимости среды передачи;
void __fastcall TForm1::Timer3Timer(TObject *Sender) – функция обработки события таймера, используется при недоставке квитанции о получении сообщения;
void __fastcall TForm6::Button1Click(TObject *Sender) – функция выбора порта;
void __fastcall TForm3::Button1Click(TObject *Sender) – функция обработки нажатия кнопки ОК в диалоговом окне «Настройки», осуществляет формирование кадра параметров, его запись в порт и установку параметров для локального СОМ-порта, закрывает окно;
void __fastcall TForm3::FormCreate(TObject *Sender) – функция обработки события создания формы «Настройки», определяет и отображает установленные параметры порта;
void __fastcall TForm3::Button2Click(TObject *Sender) – функция обработки нажатия кнопки Cancel в диалоговом окне «Настройки», закрывает окно;
void __fastcall TForm5::Button1Click(TObject *Sender) – функция обработки нажатия кнопки ОК в окне «О программе…», закрывает окно;
Листинг основных функций:
Unit2.cpp
//…
void __fastcall TForm2::FormCreate(TObject *Sender)
{
Init(SelectPort()-1);
if (hCom==INVALID_HANDLE_VALUE) Application->Terminate();
else
{hInputThread = CreateThread(NULL,65535,&ReadThread,NULL,0,&InputThreadID);
if (!hInputThread)
{ShowMessage("Невозможно создать поток");
Application->Terminate();}
Form2->Visible=TRUE;
Form2->Memo1->ReadOnly=TRUE;
Form2->Memo1->Clear();}
}
//----------------------------------------------
Unit1.cpp
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//…
HANDLE hCom, hInputThread;
DCB dcb;
DWORD InputThreadID;
OVERLAPPED OL;
COMMTIMEOUTS ct;
int SENDCONNECT=0;
char * BUFFER;
int LEN, INFOBITS=3;
//---------------------------------------------------------------------------
int __fastcall SelectPort()
{
int i;
Application->CreateForm(__classid(TForm6), &Form6);
if (i = (Form6->ShowModal()))
{Form6->Close();
return(i);}
Form6->Visible=TRUE;
}
//---------------------------------------------------------------------------
void __fastcall Init(int i)
{
if (i)
hCom = CreateFile("COM2", GENERIC_READ | GENERIC_WRITE,
/*FILE_SHARE_READ | FILE_SHARE_WRITE*/0, NULL,
OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0);
else
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.