Передача файлов по RS232 - Микропроцессорные системы

Автор работы: Пользователь скрыл имя, 08 Ноября 2012 в 13:52, курсовая работа

Краткое описание

Разрабатываемая программа создавалась с целью организации передачи файлов между двумя терминалами ВИП-МК в обоих направлениях при помощи соединения по интерфейсу RS232. В программу также включена поддержка звуков, сигнализирующая о выводе новой информации на дисплей. На примере разрабатываемого прибора изучены некоторые возможности платформы ВИП-МК (работа с дисплеем, работа со звуком) и особенности работы с ним (общение с помощью SSH).

Содержание работы

Тема проекта: Передача файлов по RS232.
Срок сдачи студентом законченного проекта _______.
Исходные данные к проекту:
учебно-методическая литература;
требования к содержанию и оформлению проекта.
Требования к функциональным характеристикам
У пользователя имеется возможность ввести
содержимое файла для передачи в виде текста.
Пользователь может просмотреть содержимое
принятого файла.
Передача файлов может осуществляться в обоих направлениях.
Ввод данных производится через клавиатуру.
Вывод данных производится с помощью дисплея (2х40 символов), а также с помощью звукового оповещения в момент вывода строк на дисплей.
Требования к составу и параметрам технических средств
ОС Linux версии 2.6.32 .
Место необходимой памяти на диске – не более 1000 КБайт.
Клавиатура PS/2.
Звуковая карта, поддерживаемая звуковой подсистемой OSS.
Стадии и этапы разработки.

Содержимое работы - 1 файл

курсоваяМПС_Николенко.doc

— 419.50 Кб (Скачать файл)

МИНИСТЕРСТВО ОБРАЗОВАНИЯ  И НАУКИ РФ

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

 «НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ

ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ  УНИВЕРСИТЕТ»

 

Институт кибернетики

Направление 230100 «Информатика и вычислительная техника»

Кафедра информатики и проектирования систем

 

 

 

 

 

 

 

 

«ПЕРЕДАЧА ФАЙЛОВ ПО RS232»

 

Пояснительная записка  к курсовому проекту по дисциплине «Микропроцессорные системы»

 

Вариант 6

 

 

 

 

 

 

 

 

 

 

Студент гр. 8В82              Е.Р. Николенко

 

 

Ассистент каф. ИПС                    А.А. Шамин

 

 

 

 

 

 

 

Томск 2012

Техническое задание:

 

  1. Тема проекта: Передача файлов по RS232.
  2. Срок сдачи студентом законченного проекта _______.
  3. Исходные данные к проекту:
    1. учебно-методическая литература;
    2. требования к содержанию и оформлению проекта.
  4. Требования к функциональным характеристикам
    1. У пользователя имеется возможность ввести

содержимое файла для передачи в виде текста.

    1. Пользователь может просмотреть содержимое

принятого файла.

    1. Передача файлов может осуществляться в обоих направлениях.
    2. Ввод данных производится через клавиатуру.
    3. Вывод данных производится с помощью дисплея (2х40 символов), а также с помощью звукового оповещения в момент вывода строк на дисплей.
  1. Требования к составу и параметрам технических средств
    1. ОС Linux версии 2.6.32 .
    2. Место необходимой памяти на диске – не более 1000 КБайт.
    3. Клавиатура PS/2.
    4. Звуковая карта, поддерживаемая звуковой подсистемой OSS.
  1. Стадии и этапы разработки.

Стадия

Результат

Время выполнения

Системный анализ

Техническое задание

24.01.2012 - 07.02.2012

Проектирование и программная реализация

Исходные тексты и исполняемый файл

08.02.2012 - 29.03.2012

Тестирование и отладка

Исходные тексты и исполняемый файл

30.03.2012 - 13.04.2012

Документирование

Пояснительная записка, руководство пользователя

14.04.2012 - 28.04.2012


 

 

 

 

 

 

Пояснительная записка

 

  1. Введение

Разрабатываемая программа создавалась с целью организации передачи файлов между двумя терминалами ВИП-МК в обоих направлениях при помощи соединения по интерфейсу RS232. В программу также включена поддержка звуков, сигнализирующая о выводе новой информации на дисплей. На примере разрабатываемого прибора изучены некоторые возможности платформы ВИП-МК (работа с дисплеем, работа со звуком) и особенности работы с ним (общение с помощью SSH).

 

  1. Описание структуры разрабатываемой системы.

Структура системы представлена на рисунке 1.


 

 

Персональный компьютер (ПК) и соединение по локальной сети необходимо для загрузки отлаживаемого ПО на ВИП-МК и осуществления контроля над его работой.

USB аудио гарнитура необходима для воспроизведения звуковых сигналов.

Вся необходимая информация выводится на дисплей платформы ВИП-МК.

 

  1. Обоснование и разработка алгоритмов работы.

Программа отображает текущую дату и время и ждет от пользователя нажатия какой-либо клавиши. При нажатии клавиши «Показать события», программа выводит список событий со звуковым оповещением. При нажатии клавиши «Настройка» входит в режим настройки даты, времени и списка событий.

 

Рис 2. Блок-Схема алгоритма

  1. Выбор средств разработки.

В качестве средств разработки для ВИП-МК был использован кросс-компилятор языка C++ -g++.

Кросс-компилятор — компилятор, производящий исполняемый код для платформы, отличной от той, на которой исполняется сам кросс-компилятор. В данном случае — сам компилятор исполняется на платформе х86 (персональный   компьютер), а исполняемый код, полученный в процессе компиляции — на  платформе  ARM9T  (ВИП-МК).

 

  1. Описание разработанных программных средств.

Блок воспроизведения звукового файла play:

int play(int number){

 

int audio_fd, in_fd, format;

int nchans, rate, actlen;

unsigned char buf[BUF_SIZE];

char path[30];

 

sprintf(path, "./%d", number);

 

in_fd = open(path, O_RDONLY);  //number of wav

audio_fd = open("/dev/dsp", O_WRONLY, 0);

format = AFMT_U8;

ioctl(audio_fd, SNDCTL_DSP_SETFMT, &format);

if (format != AFMT_U8) return EXIT_FAILURE;

 

nchans = 1;

rate = 8000;

ioctl(audio_fd, SNDCTL_DSP_CHANNELS, &nchans);

ioctl(audio_fd, SNDCTL_DSP_SPEED, &rate);

 

while ((actlen = read(in_fd, buf, BUF_SIZE)) > 0)

write(audio_fd, buf, actlen);

close(audio_fd);

close(in_fd);

return EXIT_SUCCESS;        

}

 

Полный листинг программы представлен в приложении 1.

 

 

 

 

  1. Тестирование системы.

Для проверки работы системы были проведены следующие тесты:

  • проверка возможности ввода содержимого файла;
  • проверка просмотра содержимого принятого файла;
  • проверка работы отправки в обоих направлениях;
  • проверка работы звука.

В ходе проведения проверок было установлено, что все элементы устройства работают корректно.  
Заключение

 

В результате выполнения курсовой работы были получены навыки работы с SSH, компилятором g++. Углублены знания по дисциплине «микропроцессорные системы». Изучены возможности платформы ВИП-МК. Программа была протестирована, отлажена и теперь готова к работе.

 

Руководство пользователя

 

Сразу после включения на дисплей выводится текущая дата и время.

При нажатии клавиши «Показать события» на дисплей поочередно выводятся события на текущую дату со звуковым оповещением.

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

Список использованных источников.

  1. Краткое описание структуры аппаратного обеспечения ВИП-МК. // http://portal.tpu.ru/SHARED/s/SALEX

 

  1. Структура и функции ПО ВИП-МК. Краткое описание. // http://portal.tpu.ru/SHARED/s/SALEX

 

  1. Терминал ВИП-МК. Справочные данные // http://portal.tpu.ru/SHARED/s/SALEX

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Приложение 1.

#include <stdio.h>

#include <fcntl.h>

#include <termios.h>

#include <unistd.h>

#include <stdlib.h>

#include <string.h>

#include <string>

int _flag = 0;

 

using namespace std;

 

int play(int number){

 

int audio_fd, in_fd, format;

int nchans, rate, actlen;

unsigned char buf[BUF_SIZE];

char path[30];

 

sprintf(path, "./%d", number);

 

in_fd = open(path, O_RDONLY);  //number of wav

audio_fd = open("/dev/dsp", O_WRONLY, 0);

format = AFMT_U8;

ioctl(audio_fd, SNDCTL_DSP_SETFMT, &format);

if (format != AFMT_U8) return EXIT_FAILURE;

 

nchans = 1;

rate = 8000;

ioctl(audio_fd, SNDCTL_DSP_CHANNELS, &nchans);

ioctl(audio_fd, SNDCTL_DSP_SPEED, &rate);

 

while ((actlen = read(in_fd, buf, BUF_SIZE)) > 0)

write(audio_fd, buf, actlen);

close(audio_fd);

close(in_fd);

return EXIT_SUCCESS;        

}

 

int getch()

{

  struct termios oldt, newt;

  int ch;

  tcgetattr(STDIN_FILENO, &oldt);

  newt = oldt;

  newt.c_lflag &= ~(ICANON | ECHO);

  tcsetattr(STDIN_FILENO, TCSANOW, &newt);

  ch = getchar();

  tcsetattr(STDIN_FILENO, TCSANOW, &oldt);

  return ch;

}

 

void clear()

{

    printf("%cc",0x1B);

}

char line1[100];

char line2[100];

char line3[100];

char numb1[100];

char numb2[100];

char numb3[100];

char numb4[100];

 

void printLine1()

{

    printf("\x1b[1;1f");

    printf("%s\n", line1);

}

 

void printLine2(int t)

{

    printf("\x1b[2;1f");

    if (t == 2) printf("%s", line2);

    else printf("%s", line3);

}

 

int main() {

struct termios settings;

int ttyS0=open("/dev/ttyS0",O_RDWR);

tcgetattr(ttyS0,&settings);

cfmakeraw(&settings);

cfsetospeed(&settings,B19200);

cfsetispeed(&settings,B19200);

tcsetattr(ttyS0,TCSANOW,&settings);

    srand(time(NULL));

    char buf[255];

    char user;

    int count = 0;

    int date= 0;

    int question_score = 0;

    int score_bonus = 3;

    int right = -1;

    int i = 0, j = 0;

    FILE *uin;

   

   

    uin=fopen("base","r");

 

    fscanf(uin, "%s\n", buf);

 

    count = atoi(buf);

   

    int z=1;

    int myrand;

    int a[4];

    char tempNum[2] = " ";

clear();  

         

        }

         strcat(line2, ">>");

printLine2(2);

        user = getch();

 

        while (user == 'z' || user == 'a' ||user == 's' )

        {

            if (user == 'z' && z != 0)

            { strcpy(line2,"");

                if (right == 1 || right == 3){

  strcat(line2, "1)");

  strcat(line2, numb1);

  strcat(line2, " ");

  strcat(line2, "3)");

  strcat(line2, numb3);

  strcat(line2, " ");

}

else {

   strcat(line2, "2)");

  strcat(line2, numb2);

  strcat(line2, " ");

  strcat(line2, "4)");

  strcat(line2, numb4);

  strcat(line2, " ");

}

 

 

               

                z = 0;

               

 

clear();

printLine1();

printLine2(2);

            }

            else if (user == 'a')

    {

      clear();

      printLine1();

      printLine2(2);

    }

    else if (user == 's')

    {

      clear();

      printLine1();

      printLine2(3);

    }

           

            user = getch();

        }

       

        if ((user - 48) != right) {

    clear();

            date= count;

            right = -1;

   

  

        }

       

    } while (date< count);

 

    if (date== count){

     clear();

      printf("÷Ù ×ÙÉÇÒÁÌÉ!\n");}

    else {

      clear();

      printf("÷Ù ÐÒÏÉÇÒÁÌÉ...\n");}

 

   

 

    printf("÷ÁÛ  ÒÅÚÕÌØÔÁÔ: %d", date);

    getch();

 

    return 0;

}




Информация о работе Передача файлов по RS232 - Микропроцессорные системы