Автор работы: Пользователь скрыл имя, 08 Ноября 2012 в 13:52, курсовая работа
Разрабатываемая программа создавалась с целью организации передачи файлов между двумя терминалами ВИП-МК в обоих направлениях при помощи соединения по интерфейсу RS232. В программу также включена поддержка звуков, сигнализирующая о выводе новой информации на дисплей. На примере разрабатываемого прибора изучены некоторые возможности платформы ВИП-МК (работа с дисплеем, работа со звуком) и особенности работы с ним (общение с помощью SSH).
Тема проекта: Передача файлов по RS232.
Срок сдачи студентом законченного проекта _______.
Исходные данные к проекту:
учебно-методическая литература;
требования к содержанию и оформлению проекта.
Требования к функциональным характеристикам
У пользователя имеется возможность ввести
содержимое файла для передачи в виде текста.
Пользователь может просмотреть содержимое
принятого файла.
Передача файлов может осуществляться в обоих направлениях.
Ввод данных производится через клавиатуру.
Вывод данных производится с помощью дисплея (2х40 символов), а также с помощью звукового оповещения в момент вывода строк на дисплей.
Требования к составу и параметрам технических средств
ОС Linux версии 2.6.32 .
Место необходимой памяти на диске – не более 1000 КБайт.
Клавиатура PS/2.
Звуковая карта, поддерживаемая звуковой подсистемой OSS.
Стадии и этапы разработки.
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
«НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ
ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
Институт кибернетики
Направление 230100 «Информатика и вычислительная техника»
Кафедра информатики и проектирования систем
«ПЕРЕДАЧА ФАЙЛОВ ПО RS232»
Пояснительная записка к курсовому проекту по дисциплине «Микропроцессорные системы»
Вариант 6
Студент гр. 8В82 Е.Р. Николенко
Ассистент каф. ИПС А.А. Шамин
Томск 2012
Техническое задание:
содержимое файла для передачи в виде текста.
принятого файла.
Стадия |
Результат |
Время выполнения |
Системный анализ |
Техническое задание |
24.01.2012 - 07.02.2012 |
Проектирование и программная реализация |
Исходные тексты и исполняемый файл |
08.02.2012 - 29.03.2012 |
Тестирование и отладка |
Исходные тексты и исполняемый файл |
30.03.2012 - 13.04.2012 |
Документирование |
Пояснительная записка, руководство пользователя |
14.04.2012 - 28.04.2012 |
Пояснительная записка
Разрабатываемая программа создавалась с целью организации передачи файлов между двумя терминалами ВИП-МК в обоих направлениях при помощи соединения по интерфейсу RS232. В программу также включена поддержка звуков, сигнализирующая о выводе новой информации на дисплей. На примере разрабатываемого прибора изучены некоторые возможности платформы ВИП-МК (работа с дисплеем, работа со звуком) и особенности работы с ним (общение с помощью SSH).
Структура системы представлена на рисунке 1.
Персональный компьютер (ПК) и соединение по локальной сети необходимо для загрузки отлаживаемого ПО на ВИП-МК и осуществления контроля над его работой.
USB аудио гарнитура необходима для воспроизведения звуковых сигналов.
Вся необходимая информация выводится на дисплей платформы ВИП-МК.
Программа отображает текущую дату и время и ждет от пользователя нажатия какой-либо клавиши. При нажатии клавиши «Показать события», программа выводит список событий со звуковым оповещением. При нажатии клавиши «Настройка» входит в режим настройки даты, времени и списка событий.
Рис 2. Блок-Схема алгоритма
В качестве средств разработки для ВИП-МК был использован кросс-компилятор языка C++ -g++.
Кросс-компилятор — компилятор, производящий исполняемый код для платформы, отличной от той, на которой исполняется сам кросс-компилятор. В данном случае — сам компилятор исполняется на платформе х86 (персональный компьютер), а исполняемый код, полученный в процессе компиляции — на платформе ARM9T (ВИП-МК).
Блок воспроизведения звукового файла 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.
Для проверки работы системы были проведены следующие тесты:
В ходе проведения проверок
было установлено, что все элементы устройства
работают корректно.
Заключение
В результате выполнения курсовой работы были получены навыки работы с SSH, компилятором g++. Углублены знания по дисциплине «микропроцессорные системы». Изучены возможности платформы ВИП-МК. Программа была протестирована, отлажена и теперь готова к работе.
Руководство пользователя
Сразу после включения на дисплей выводится текущая дата и время.
При нажатии клавиши «Показать события» на дисплей поочередно выводятся события на текущую дату со звуковым оповещением.
При нажатии клавиши «Настройка»
появляется меню настройки, где пользователь
может настроить текущую дату и время,
а так же настроить список событий на конкретную
дату.
Список использованных источников.
Приложение 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_
tcgetattr(ttyS0,&settings);
cfmakeraw(&settings);
cfsetospeed(&settings,B19200);
cfsetispeed(&settings,B19200);
tcsetattr(ttyS0,TCSANOW,&
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 - Микропроцессорные системы