Автоматизированная система оптического распознавания текста

Автор работы: Пользователь скрыл имя, 22 Июня 2014 в 13:00, дипломная работа

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

Современные мобильные телефоны — устройства многофункци-ональные. Они позволяют не только разговаривать с другими абонентами, но и воспроизводить музыку, фотографировать, планировать важные дела. Кроме того, мобильный телефон может заменить беспроводную мышь или клавиатуру для управления компьютером.
В настоящее время первое место по использованию занимают телефоны, оснащенные операционной системой Android предназначенной для мобильных устройств. Такие операционные системы в принципе аналогичны используемым на стационарных компьютерах и ноутбуках системам (Windows, Linux и т.д.), но они, во-первых, пока несколько проще и, во-вторых, ориентированы в большей степени на беспроводную связь.

Прикрепленные файлы: 1 файл

Диплом_собранный(2 июня).docx

— 373.18 Кб (Скачать документ)

8.4 Общие требования к организации рабочих мест пользователей ПЭВМ

При размещении рабочих мест с ПЭВМ расстояние между рабочими столами с видеомониторами (в направлении тыла поверхности одного видеомонитора и экрана другого видеомонитора) должно быть не менее 2,0 м, а расстояние между боковыми поверхностями видеомониторов - не менее 1,2 м. Рабочие места должны располагаться от стен с оконными проемами на расстоянии не менее 1,5 м; от стен без оконных проемов на расстоянии не менее 1,0 м. Площадь на одно рабочее место должна составлять не менее 6,0 м2, а объем – не менее 20,0 м3.

Рабочие места с ПЭВМ в помещениях с источниками вредных производственных факторов должны размещаться в изолированных кабинах с организованным воздухообменом.

Рабочие места с ПЭВМ при выполнении творческой работы, требующей значительного умственного напряжения или высокой концентрации внимания, рекомендуется изолировать друг от друга перегородками высотой от 1,5 до 2 м.

Экран видеомонитора должен находиться от глаз пользователя на расстоянии от 600 до700 мм, но не ближе 500 мм с учетом размеров алфавитно-цифровых знаков и символов, а глаза пользователя должны находиться на уровне центра экрана монитора.

Размер экрана для разных видов работ может колебаться. Для домашних пользователей минимальный размер – 14 дюймов по диагонали; частота регенерации должна составлять не менее 85 Гц. Оптимальным считается установка максимально возможной частоты при отсутствии мерцания.

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

Поверхность сиденья, спинки и других элементов стула (кресла) должна быть полумягкой, с нескользящим, слабо электризующимся и воздухопроницаемым покрытием, обеспечивающим легкую очистку от загрязнений.

8.5 Требования к организации оборудованию рабочих мест с ПЭВМ для взрослых пользователей

Конструкция рабочего стула должна обеспечивать:

- ширину и глубину поверхности  сиденья не менее 400 мм;

- плоскую поверхность сиденья с закругленным передним краем;

- регулировку высоты поверхности  сиденья в пределах от 400 до550 мм и углам наклона вперед до 15 градусов и назад до 5 градусов;

- высоту опорной поверхности  спинки от 280 до 320 мм, ширину - не менее 380 мм и радиус кривизны горизонтальной плоскости - 400 мм;

- угол наклона спинки  в вертикальной плоскости в  пределах от -30 до +30 градусов;

- регулировку расстояния  спинки от переднего края сиденья  в пределах от 260 до 400 мм;

- стационарные или съемные  подлокотники длиной не менее  250 мм и шириной от 50 до 70 мм;

- регулировку подлокотников  по высоте над сиденьем в  пределах от 230 до 30 мм и внутреннего расстояния между подлокотниками в пределах от 350 до 500 мм.

8.6 Требования к организации медицинского обслуживания пользователей ПЭВМ

Лица, работающие с ПЭВМ более 50 % рабочего времени (профессионально связанные с эксплуатацией ПЭВМ), должны проходить обязательные предварительные при поступлении на работу и периодические медицинские осмотры в установленном порядке.

Медицинское освидетельствование студентов высших учебных заведений на предмет установления противопоказаний к работе с ПЭВМ проводится в установленном порядке.

 

Заключение

Разработанная программа использования мобильного устройства в качестве игрового манипулятора, мыши и клавиатуры  для дистанционного управления персональным компьютером упростила работу с ПК. Программа позволила пользователям заменить беспроводную мышь, клавиатуру или игровой манипулятор для дистанционного управления компьютером.

В дальнейшем планируется продолжать развитие системы, увеличивая качество функциональность управления и скорость работы.

 

Список литературы

1. Роджерс Рик, Ломбардо Джон, Медниекс Зигурд. Android. Разработка приложений. – М.: Эком, 2010. –400с.

2. Голощапов А.Л. Googleandroid: программирование для мобильных устройств. – СПб.: BHV, 2010. –448с.

3. П. Рошан. Дж. Лиэри. Основы построения беспроводных локальных сетей стандарта 802.11.– М.: Вильямс, 2007. – 296с.

4. http://developer.alexanderklimov.ru/android/orientation.php

5. http://habrahabr.ru/blogs/android_development/

 

Приложение А

Иерархия целей

Рисунок А.1 Иерархия целей

 

Приложение Б

Иерархия задач

Рисунок Б.1 — Иерархия задач подцели «Реализация серверной части»


Рисунок Б.2— Иерархия задач подцели «Реализация клиентской части»

 

 

Приложение В

Код основных алгоритмов программы

Алгоритм  поиска доступных хостов.

this.hostlist = new Vector<String>();

((ListView)this.findViewById(R.id.lvHosts)).setOnItemClickListener(new AdapterView.OnItemClickListener() {

public void onItemClick(AdapterView adapter, View v, int position, long id) {

onHostClick(position);

}

});

private void onHostClick(int item) {

this.tbIp.setText(this.hostlist.get(item));

this.onConnectButton();

}

private void updateHostList() {

FoundHostsAdapter adapter = new FoundHostsAdapter(this.hostlist, this.getApplication());

((ListView)this.findViewById(R.id.lvHosts)).setAdapter(adapter);

}

Алгоритм подключения к серверу.

private void onConnectButton() {

String ip = this.tbIp.getText().toString();

if (ip.matches("^[0-9]{1,4}\\.[0-9]{1,4}\\.[0-9]{1,4}\\.[0-9]{1,4}$")) {

try {

Settings.setIp(ip);

//

Intent i = new Intent(this, PadActivity.class);

this.startActivity(i);

this.finish();

} catch (Exception ex) {

 

Toast.makeText(this, this.getResources().getText(R.string.toast_invalidIP), Toast.LENGTH_LONG).show();

Log.d(TAG, ex.toString());

}

} else {

 

Toast.makeText(this, this.getResources().getText(R.string.toast_invalidIP), Toast.LENGTH_LONG).show();

}

}

Передача команд управления мыши.

private void moveMouseFromSensors() {

this.accelSet = false;

this.magSet = false;

this.currSpace.setSpace(this.accel, this.mag);

double dotX = Point3D.dot(this.currSpace.y, this.lastSpace.x);

double dotY = Point3D.dot(this.currSpace.y, this.lastSpace.y);

double angleX = Math.acos(dotX) / Math.PI - 0.5;

double angleY = Math.acos(dotY) / Math.PI;

Log.d(TAG, String.valueOf(angleX * 400) + ", " + String.valueOf(angleY * 400));

//

this.sendMouseEvent(2, (float) (angleX * 400), (float) (0 * 400));

this.lastSpace.copy(this.currSpace);

}

private void sendMouseEvent(int type, float x, float y) {

//

floatxDir = x == 0 ? 1 : x / Math.abs(x);

floatyDir = y == 0 ? 1 : y / Math.abs(y);

//

Object[] args = new Object[3];

args[0] = type;

args[1] = (float) (Math.pow(Math.abs(x), mMouseSensitivityPower)) * xDir;

args[2] = (float) (Math.pow(Math.abs(y), mMouseSensitivityPower)) * yDir;

OSCMessage msg = new OSCMessage("/mouse", args);

try {

this.sender.send(msg);

} catch (Exception ex) {

Log.d(TAG, ex.toString());

}

}

Передача команд управления клавиатурой.

Public boolean onKeyDown(intkeycode, KeyEventev) {

if (keycode == 58) {

this.toggleButton = true;

return false;

}

//

Object[] args = new Object[3];

args[0] = 0; /* key down */

args[1] = keycode;

args[2] = new Character(

Character.toChars(Settings.charmap.get(keycode, ev.getMetaState()))[0]).toString();

OSCMessage msg = new OSCMessage("/keyboard", args);

try {

this.sender.send(msg);

} catch (Exception ex) {

Log.d(TAG, ex.toString());

}

return true;

}

Public boolean onKeyUp(intkeycode, KeyEventev) {

if (keycode == KeyEvent.KEYCODE_BACK) {

if (!this.softShown) {

Intent i = new Intent(this, RemoteDroid.class);

this.startActivity(i);

this.finish();

} else {

this.softShown = false;

}

} else if (keycode == 58) {

this.toggleButton = false;

return false;

}

//

Object[] args = new Object[3];

args[0] = 1; /* key up */

args[1] = keycode;

args[2] = new Character(

Character.toChars(Settings.charmap.get(keycode, ev.getMetaState()))[0]).toString();

OSCMessage msg = new OSCMessage("/keyboard", args);

try {

this.sender.send(msg);

} catch (Exception ex) {

Log.d(TAG, ex.toString());

}

return true;

}

 

Приложение Г

Описание некоторых классов

Класс Settings, определяющий настройки тачпада

public class Settings {

public static String ip;

public static KeyCharacterMapcharmap;

public static boolean tapToClick;

public static int clickTime;

public static int sensitivity;

public static int scrollSensitivity;

public static boolean scrollInverted;

private static SharedPreferences prefs;

private static final String PREFS_IPKEY = "remoteip";

private static final String PREFS_TAPTOCLICK = "tapclick";

private static final String PREFS_TAPTIME = "taptime";

private static final String PREFS_SENSITIVITY = "sensitivity";

private static final String PREFS_RECENT_IP_PREFIX = "recenthost";

private static final String PREFS_SCROLL_SENSITIVITY = "scrollSensitivity";

private static final String PREFS_SCROLL_INVERTED = "scrollInverted";

public static final int MAX_SAVED_HOSTS = 5;

public static LinkedList<String>savedHosts;

Класс OSCWorld, отвечающий за работу с клиентом

public class OSCWorld extends World {

private static final float sensitivity = 1.6f;

private OSCPortIn receiver;

private Robot robot;

private boolean shifted = false;

private boolean modified = false;

private KeyTranslator translator;

private GraphicsDevice[] gDevices;

private Rectangle[] gBounds;

private Label lbDebug;

private int scrollMod = -1;

private float xLeftover = 0;

private float yLeftover = 0;

private DiscoverableThread discoverable;

public OSCWorld() {

super();

}

 

Приложение Д

Модульная структура программы

Рисунок Д.1 – Модульная структура клиента

Рисунок Д.2 – Модульная структура сервера


Информация о работе Автоматизированная система оптического распознавания текста