Описание программы (Готовый курсовой проект 9)
Описание файла
Файл "Описание программы" внутри архива находится в папке "Готовый курсовой проект 9". Документ из архива "Готовый курсовой проект 9", который расположен в категории "". Всё это находится в предмете "сетевые технологии" из 6 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "сетевые технологии" в общих файлах.
Онлайн просмотр документа "Описание программы"
Текст из документа "Описание программы"
Московский государственный технический университет им. Н.Э.Баумана
_________________________________________________________________
Утверждаю: | |
Галкин В.А. | "__"_____________2011 г. |
Курсовая работа по курсу «Сетевые технологии»
«Локальная безадаптерная сеть»
Описание программы
(вид документа)
писчая бумага
(вид носителя)
8
(количество листов)
ИСПОЛНИТЕЛИ: | |
студенты группы ИУ5-74 | |
Чаев В.А. Новосельцев А.Б. Табаков И.К. | _____________________ _____________________ _____________________ "__"_____________2011 г. |
Москва - 2011
________________________________________________________________
Содержание
1. Введение. 3
2. Физический уровень. 3
3. Канальный уровень. 8
4. Прикладной уровень. 8
1. Введение.
Программный продукт написан на языке Borland C++ Builder 6.0.
Для создания диалоговых окон и их элементов использовались стандартные библиотеки и элементы управления. Дополнительные функции и обработчики прерываний, не относящиеся к стандартным, приведены ниже в зависимости от уровня.
2. Физический уровень.
2.1. Класс ComPort
Реализует взаимодействие с последовательным портом.
class ComPort {
public:
int iErrNum;
AnsiString asError;
ComPort ();
HANDLE GetComHandle () {return hComPortHandler;};
int GetBlockSize () {return iBlockSize;};
bool IsOpened () {return bPortOpened;};
AnsiString GetPortName ();
bool SetParams (AnsiString PortName, int iBSize, int iBRate);
bool OpenComPort ();
bool CloseComPort ();
bool OpenCom();
private:
bool bPortOpened;
HANDLE hComPortHandler;
char* cPortName;
char* cPrevPortName;
int iBlockSize;
int iBitRate;
DCB dcbCom;
COMMTIMEOUTS CommTimeOuts;
};
Для него определены следующие функции:
-
bool ComPort::SetParams (AnsiString PortName, int iBSize, int iBRate) – проверяет, допустимы ли передаваемые ей параметры для COM-порта; если параметры допустимы, то они копируются в переменные – члены класса, функция возвращает true; если параметры недопустимы, устанавливается ошибка и функция возвращает false.
-
bool ComPort::OpenComPort () – открывает COM-порта, настраивает его параметры, таймауты, сбрасывает входной и выходной буферы; в данной функции используются следующие библиотечные функции:
-
HANDLE CreateFile (LPCTSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDistribution, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile) – открывает порт; функция возвращает описатель файла; значения параметров:
-
lpFileName – указатель на строку с именем открываемого порта;
-
dwDesiredAccess – задает тип доступа к файлу;
-
dwShareMode – задает параметры совместного доступа к файлу;
-
lpSecurityAttributes – задает атрибуты защиты файла;
-
dwCreationDistribution – управляет режимами автосоздания, автоусечения файла и им подобными;
-
dwFlagsAndAttributes – задает атрибуты создаваемого файла;
-
hTemplateFile – задает описатель файла-шаблона.
-
BOOL PurgeComm (HANDLE hFile, DWORD dwFlags) – сброс очередей приема/передачи в драйвере; значения параметров:
-
hFile – описатель открытого файла коммуникационного порта;
-
dwFlags – определяет, какие именно действия выполнять.
-
BOOL GetCommState (HANDLE hFile, LPDCB lpDCB ) – функция заполняет структуру DCB информацией о текущих настройках устройства; значения параметров:
-
hFile – описатель открытого файла коммуникационного порта;
-
lpDCB – указатель на структуру DCB.
-
BOOL SetCommState (HANDLE hFile, LPDCB lpDCB ) – функция осуществляет конфигурирование порта; значения параметров:
-
hFile – описатель открытого файла коммуникационного порта;
-
lpDCB – указатель на структуру DCB с настроенными параметрами.
-
BOOL GetCommTimeouts (HANDLE hFile, LPCOMMTIMEOUTS lpCommTimeouts) - функция считывания установленных в системе значений таймаутов; значения параметров:
-
hFile – описатель открытого файла коммуникационного порта;
-
lpCommTimeouts – указатель на структуру COMMTIMEOUTS.
-
BOOL SetCommTimeouts (HANDLE hFile, LPCOMMTIMEOUTS lpCommTimeouts) - функция установки таймаутов порта из структуры COMMTIMEOUTS; значения параметров:
-
hFile – описатель открытого файла коммуникационного порта;
-
lpCommTimeouts – указатель на структуру COMMTIMEOUTS.
-
HANDLE GetComHandle () – возвращает описатель открытого файла коммуникационного порта.
-
int GetBlockSize () – возвращает установленный размер блока данных.
-
bool IsOpened () – возвращает true, если порт открыт, и false, если порт закрыт.
-
bool CloseComPort () – закрывает открытый ранее порт и возвращает true, если порт не был открыт или закрытие порта завершено с ошибкой, возвращает false; в данной функции используются следующие библиотечные функции:
-
BOOL PurgeComm (HANDLE hFile, DWORD dwFlags) – описана ранее;
-
BOOL CloseHandle (HANDLE hObject) - закрытие объекта по его описателю; значения параметров:
-
hObject – описатель открытого файла коммуникационного порта.
2.2. Класс SendFile
Реализует передачу данных в коммуникационный порт.
class SendFile {
public:
SendFile (HANDLE hCHandler) {hComHandler=hCHandler;};
void SetParam (HANDLE hCHandler) {hComHandler=hCHandler;};
bool Send (void* sbuf, int iSize);
AnsiString asError;
private:
HANDLE hComHandler;
};
Для него определены следующие функции:
-
void SetParam (HANDLE hCHandler) – устанавливает используемый описатель порта; значения параметров:
-
hCHandler – описатель открытого файла коммуникационного порта.
-
bool Send (void* sbuf, int iSize) – осуществляет передачу в порт; значения параметров:
-
sbuf – указатель на массив для передачи в порт;
-
iSize – количество байт для передачи.
В данной функции используются следующие библиотечные функции:
-
BOOL WriteFile (HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped) – осуществляет передачу данных в порт как в файл; значения параметров:
-
hFile – описатель открытого файла коммуникационного порта;
-
lpBuffer – адрес буфера для записи считанных символов;
-
nNumberOfBytesToWrite – число ожидаемых к приему байт;
-
lpNumberOfBytesWritten – число фактически принятых байт;
-
lpOverlapped – адрес структуры OVERLAPPED, используемой для асинхронных операций.
2.3. Класс ReceiveFile
Реализует прием данных из коммуникационного порта.
class ReceiveFile {
public:
ReceiveFile (HANDLE hCHandler);
~ReceiveFile () {if (rbuf!=NULL) delete (rbuf);};
void SetParam (HANDLE hCHandler) {hComHandler=hCHandler;};
bool Receive (int iSize, int Attempts);
bool ReceiveBytes (int iSize, int Attempts);
bool ReceiveInt (int Attempts);
char* rbuf;
short int * sibuf;
int ibuf;
AnsiString asError;
private:
HANDLE hComHandler;
COMSTAT csStat;
};
Для него определены следующие функции:
-
void SetParam (HANDLE hCHandler) – аналогична функции в классе SendFile.
-
bool Receive (int iSize, int Attempts) – функция ожидает прихода символов во входной буфер порта, считывает их и записывает в массив char, если при чтении возникает ошибка, или после указанного количества попыток в буфер не приходят символы, то устанавливается ошибка; значения параметров:
-
iSize – количество байт для чтения из порта;
-
Attempts – количество попыток чтения.
В данной функции используются следующие библиотечные функции:
-
BOOL ClearCommError (HANDLE hFile, LPDWORD lpErrors, LPCOMSTAT lpStat) – записывает в структуру COMSTAT информации о текущем состоянии порта; значения параметров:
-
hFile – описатель открытого файла коммуникационного порта;
-
lpErrors – адрес переменной, в которую заносится информация об ошибке;
-
lpStat – адрес структуры COMMSTAT, в которую заносится информация о состоянии порта.
-
BOOL ReadFile (HANDLE hFile, LPVOID lpBuffer, DWORD NumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped) - осуществляет считывание данных из порта как из файла; значения параметров:
-
hFile – описатель открытого файла коммуникационного порта;
-
lpBuffer – адрес буфера с символами для записи в порт;
-
nNumberOfBytesToRead – число байт для передачи;
-
lpNumberOfBytesRead – число переданных байт;
-
lpOverlapped – адрес структуры OVERLAPPED, используемой для асинхронных операций.
-
void Sleep (unsigned long milliseconds) – прерывает выполнение программы на заданное время; значения параметров:
-
milliseconds – время приостановки выполнения в миллисекундах.
-
bool ReceiveBytes (int iSize, int Attempts) – аналогична функции Receive, но считанные из порта символы записываются в массив short int.
-
bool ReceiveInt (int Attempts) - аналогична функции Receive, но считанные из порта символы записываются в переменную типа int.
2.4. Класс ACK_NAK
Реализует прием и отправку управляющих кадров.
class ACK_NAK
{
public:
ACK_NAK (HANDLE hCHandler);
void SetParam (HANDLE hCHandler) {hComHandler=hCHandler;};
void SendACK ();
void SendNAK ();
void SendMaster ();
void SendGive ();
void SendTake ();
void SendDisconnect ();
char ReceiveACK (int Attempts);
private:
HANDLE hComHandler;
COMSTAT csStat;
};
Для него определены следующие функции:
-
void SetParam (HANDLE hCHandler) – аналогична функции в классе SendFile.
-
void SendACK () – реализует отправку положительной квитанции, работает аналогично функции Send класса SendFile.
-
void SendNAK () – реализует отправку отрицательной квитанции, аналогична функции SendACK.
-
void SendMaster () – реализует отправку квитанции «ведущая станция», аналогична функции SendACK.
-
void SendGive () – реализует отправку квитанции ВСОФ, аналогична функции SendACK.
-
void SendTaker () – реализует отправку квитанции ВСЗФ, аналогична функции SendACK.
-
void SendDisconnect () – реализует отправку квитанции о разрыве соединения, аналогична функции SendACK.
-
char ReceiveACK (int Attempts) – реализует получение квитанции, работает аналогично функции Receive класса ReceiveFile, возвращает char – значение принятой квитанции.
3. Канальный уровень.
1) void Timer3(void) - осуществляет ожидание Master квитанции. В случае ее получения станция становится ведомой. Таймер блокируется, если станция сама отправила квитанцию.
2) void SendFileSM(void)- выполняет передачу файла ведомой станцией к ведущей.
3) void ReceiveFileSM(void)- выполняет получение файла от ведущей станции ведомой.
4) void Timer2(void) - осуществляет реакцию ведомой станции на сигнал ведущей. В зависимости от того, какая квитанция получена ею, она либо принимает файл, либо принимает запрос на файл.
5) void ReceiveFileMS(void)- осуществляет получение файла от ведомой станции ведущей.
6) void SendFileMS(void) – осуществляет передачу файла от ведущей станции ведомой.
4. Прикладной уровень.
-
void TForm1::addToConsole(AnsiString Mess)- добавляет строку в консоль.
-
void TForm1::setProgressBar(int pos)- устанавливает состояние элемента ProgressBar.
-
void TForm1::FormCreate(TObject *Sender)- выполняет исходные настройки переменных при запуске программы.
-
void TForm1::ComboBox1Change(TObject *Sender)- открывает выбранный ком порт, если до этого был открыт другой порт, то предварительно закрывает предыдущий.
-
void TForm1::Button1Click(TObject *Sender)- вызывает стандартный диалог для выбора файла и сохраняет путь к файлу в соответствующем поле.
-
void TForm1::Button2Click(TObject *Sender)- в зависимости от состояния группы кнопок либо посылает файл, либо посылает запрос на файл.
-
void TForm1::Timer1Timer(TObject *Sender)- проверяет параметры программы и дает доступ к нажатию клавиш.
-
void TForm1::Button3Click(TObject *Sender) - выводит на экран окно с информацией о программе.
-
void TForm1::Button4Click(TObject *Sender) - осуществляет генерацию Master квитанции. Станция, получившая на нее подтверждение (АСК), становится ведущей.
-
void TForm1::Edit1Change(TObject *Sender) – изменяет имя текущего файла в зависимости от информации в соответствующем поле.
9