4-Opisanie_Programmy_final (Готовый курсовой проект 10)
Описание файла
Файл "4-Opisanie_Programmy_final" внутри архива находится в следующих папках: Готовый курсовой проект 10, kursa4-seti. Документ из архива "Готовый курсовой проект 10", который расположен в категории "". Всё это находится в предмете "сетевые технологии" из 6 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "сетевые технологии" в общих файлах.
Онлайн просмотр документа "4-Opisanie_Programmy_final"
Текст из документа "4-Opisanie_Programmy_final"
Московский государственный технический университет им. Н.Э.Баумана
_________________________________________________________________
Утверждаю: | |
Галкин В.А. | "__"_____________2015 г. |
Курсовая работа по дисциплине
«Сетевые технологии»
«Локальная безадаптерная сеть»
Описание программы
(вид документа)
писчая бумага
(вид носителя)
22
(количество листов)
ИСПОЛНИТЕЛИ: | |
студенты группы ИУ5-XX | |
XXX XXX XXX | "___"_________2015 г. |
Москва - 2015
______________________________________________________________
1. Общие сведения.
Наименование: “Программа посылки сообщений через com-порты Чат”.
Программа выполняется на языке программирования С# и работает под управлением операционной системы Windows XP и выше.
2. Назначение разработки.
Программа должна реализовывать функцию передачи текстовых файлов между ПЭВМ, соединенными через интерфейс RS-232C нуль-модемным кабелем с поддержкой широковещательной рассылки сообщений.
3. Описание логической структуры.
3.1. Алгоритм интерфейсной части программы.
Алгоритм интерфейсной части приведен следующем рисунке.
3.2. Алгоритм передачи сообщения.
3.3 Алгоритм приема сообщения.
4. Используемые технические средства.
Программа должна работать на IBM-совместимой ЭВМ следующей конфигурации:
-
Центральный процессор Perntium I или выше;
-
Объем оперативной памяти 32 Мб;
-
Видеоадаптер и монитор VGA и выше;
-
Стандартная клавиатура;
-
Свободного пространства на жестком диске 2Мб;
Для работы программы требуются IBM-совместимые компьютеры, соединенных нуль-модемным кабелем через интерфейс RS-232C. Или же 1 компьютер, на котором установлена программа Virtual Serial Port Emulator с произведенными настройками (созданы 3 пары com-портов: COM1-COM6, COM2-COM3, COM4-COM5)
5. Входные и выходные данные.
5.1. Входные данные.
Входными данными является текстовое сообщение, набранное пользователем.
5.2. Выходные данные.
Выходными данными являются:
-
текст переданного сообщения на ПЭВМ;
-
сообщения об ошибках и выполнении передачи.
6. Спецификация данных.
6.1. Внутренние данные.
Данные указаны без учета стартовых и стоповых байтов.
Запрос на соединение:
Наименование | Тип поля | Размер (байт) |
UPLINK | Byte | 1 |
Поддержание соединения:
Наименование | Тип поля | Размер (байт) |
LINKACTIVE | Byte | 1 |
Положительная квитанция:
Наименование | Тип поля | Размер (байт) |
ACK | Byte | 1 |
Разрыв соединения:
Наименование | Тип поля | Размер (байт) |
DOWNLINK | Byte | 1 |
Информационный блок:
Наименование | Тип поля | Размер (байт) |
DAT | Byte | 1 |
Data | AnsiString | Sizeof(Data) |
6.2. Структура сообщения.
Программа работает с текстовыми сообщениями стандарта ANSI размером не более 255 символов.
7. Спецификация функций.
public void SetParityToComboBox(object obj) – задает возможные значения четности
public void SetStopBitsToComboBox(object obj) – задает возможные стоп-биты
public bool OpenPort() – открывает все COM порты на компьютере
public byte[] CodeString(string msg) – кодирует строку по алгоритму Хеминга
public string DeCodeString(byte[] msg) – декодирует массив байтов по алгоритму Хеминга
public void FrameAnalysis(byte mybyte, SerialPort comPort) – анализ типов прищедших кадров
private static int CharToInt(char c) – получение числового кода символа
private void DisplayData(MessageType type, string msg, bool isMsg) – отображение сообщений в чат или лог
public void WriteData(string msg, FrameType currentFrameType, bool msgNoDisplay, SerialPort comPort) – запись данных в COM порт
private void UserNameOKButton_Click(object sender, EventArgs e) – действие при нажатии клавиши ОК на форме выбора пользователя
private void SettingsForm_Load(object sender, EventArgs e) – действия, выполняемые при загрузке формы настроек
private void LoadValues() – загрузка данных для формы настроек
private void SetDefaults() – задание первоначальных значений для формы настроек
private void SettingsOK_Click(object sender, EventArgs e) – действия, выполняемые при нажатии клавиши ОК на форме настроек
public List<SerialPort> GetPorts() – получение портов компьютера
private void button1_Click(object sender, EventArgs e) – действия, выполняемые при нажатии клавиши ОК на форме информации
private void HistoryForm_Load(object sender, EventArgs e) – действия, выполняемые при загрузке формы истории
private void AckUplinkTimerTick(object sender, EventArgs e) – таймер AckUplink для соединения с 1м компьютером
private void AckDownlinkTimerTick(object sender, EventArgs e) – таймер AckDownLink для соединения с 1м компьютером
private void AckUplinkTimerTick(object sender, EventArgs e) – таймер AckUplink для соединения со 2м компьютером
private void AckDownlinkTimerTick(object sender, EventArgs e) – таймер AckDownLink для соединения со 2м компьютером
private void AckActivelinkTimerTick(object sender, EventArgs e) – таймер AckActiveLink
private void DisconnectionState() – действия при разрыве соединения
private void открытьИсториюToolStripMenuItem_Click(object sender, EventArgs e) – действия при нажатии на пункт меню История
private void Form1_Load(object sender, EventArgs e) – действия при загрузке главной формы
private void f_FormClosed(object sender, EventArgs e) – действия при закрытии формы настроек
private void справкаToolStripMenuItem_Click(object sender, EventArgs e) - действия при нажатии на пункт меню Справка
private void ConnectionButton_Click(object sender, EventArgs e) – действия при нажатии на клавишу Соединение
private void DisconectionButton_Click(object sender, EventArgs e) – действия при нажатии на кнопку Разрыв Соединения
private void comPort_DataReceived(object sender, SerialDataReceivedEventArgs e) – действия при получении данных из COM порта
private void SendTextButton_Click(object sender, EventArgs e) – действия при нажатии на клавишу Отправить Главной Формы
private void FileDialog_FileOk(object sender, System.ComponentModel.CancelEventArgs e) – действия при выборе файла истории
private bool OpenUserPort(int startPort) – функция открытия com-портов для конкретного пользователя
Листинг основных функций:
Settings.cs (Настройка COM портов)
using System;
using System.Collections.Generic;
using System.IO.Ports;
using System.Windows.Forms;
namespace ST_Kurs_Chat
{
public class Settings
{
private string _data = string.Empty;
private string _parity = string.Empty;
private string _speed = string.Empty;
private string _stop = string.Empty;
public DateTime DtNew = new DateTime();
public Dictionary<string, SerialPort> ports = new Dictionary<string, SerialPort>();
private readonly SerialPort _comPort = new SerialPort();
public string Speed
{
get{ return _speed;}
set { _speed = value; }
}
public string Parity
{
get { return _parity; }
set { _parity = value; }
}
public string Stop
{
get { return _stop; }
set { _stop = value; }
}
public string Data
{
get { return _data; }
set { _data = value; }
}
public bool LinkActive { get; set; }
public void SetParityToComboBox(object obj)
{
foreach (var str in Enum.GetNames(typeof (Parity)))
((ComboBox) obj).Items.Add(str);
}
public void SetStopBitsToComboBox(object obj)
{
foreach (var str in Enum.GetNames(typeof (StopBits)))
((ComboBox) obj).Items.Add(str);
}
public bool OpenPort(string user)
{
bool opened;
switch (user)
{
case "Сергей":
opened = OpenUserPort(1);
break;
case "Валерия":
opened = OpenUserPort(3);
break;
case "Надежда":
opened = OpenUserPort(5);
break;
default:
opened = false;
break;
}
return opened;
}
private bool OpenUserPort(int startPort)
{
try
{
for (var i = startPort; i < startPort + 2; i++)
{
var newport = new SerialPort();
newport.BaudRate = int.Parse(_speed);
newport.DataBits = int.Parse(_data);
newport.StopBits = (StopBits)Enum.Parse(typeof(StopBits), _stop);
newport.Parity = (Parity)Enum.Parse(typeof(Parity), _parity);
newport.RtsEnable = true;
newport.PortName = "COM" + i;
string name = string.Empty;
switch (i)
{
case 1:
case 4:
name = "Надежда";
break;
case 2:
case 5:
name = "Валерия";
break;
case 3:
case 6:
name = "Сергей";
break;
}
ports.Add(name, newport);
newport.Open();
}
}
catch
{
ports.Clear();
return false;
}
return true;
}
}
}
Program.cs (начало работы с программой)
using System;
using System.Windows.Forms;
namespace ST_Kurs_Chat
{
internal static class Program
{
[STAThread]
private static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
Heming.cs (Кодирование и декодирование по алгоритму хеминга)
using System;
using System.Collections.Generic;
using System.Linq;
namespace ST_Kurs_Chat
{
internal class Heming
{
public byte[] CodeString(string msg)
{
if (string.IsNullOrEmpty(msg))
return new byte[1];
var returnMsg = new List<byte>();
var msgArr = msg.ToCharArray();
var msgIntArr = new int[msgArr.Length];
for (var i = 0; i < msgArr.Length; i++)
msgIntArr[i] = Convert.ToInt32(msgArr[i]);
foreach (var oneChar in msgIntArr)