Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Методические указания. Для работы с последовательным портом необходимо выполнить следующие основные

Читайте также:
  1. frac34; Методические основы идентификации типа информационного метаболизма психики.
  2. I. Организационно-методические указания
  3. II. МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ ПО ИЗУЧЕНИЮ ДИСЦИПЛИНЫ
  4. II.1. МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ ПО ПОДГОТОВКЕ И ПРОВЕДЕНИЮ ЛЕКЦИЙ
  5. III. Методические рекомендации для преподавателей
  6. III. УЧЕБНО-МЕТОДИЧЕСКИЕ МАТЕРИАЛЫ ПО ДИСЦИПЛИНЕ
  7. III.1. МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ ПО ПОДГОТОВКЕ И ПРОВЕДЕНИЮ ПРАКТИЧЕСКИХ (СЕМИНАРСКИХ) ЗАНЯТИЙ ПО КУРСУ ФИЛОСОФИИ И МЕТОДОЛОГИИ НАУЧНОГО ЗНАНИЯ

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

· открытие сом для чтения и записи;

· запись данных в сом порт;

· чтение данных;

· изменение настроек СОМ–порта;

· закрытие.

Приведем пример функций для работы с СОМ – портом.

 

#include "SerialComm.h"

//for "open()"

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

//for error

#include <errno.h>

#include <string.h>

#include <stdio.h>

#include <sys/neutrino.h>

#include <time.h>

//int CSerialComm::m_fd = 0;

CSerialComm::CSerialComm(void *pWidget)

{

m_fd = 0;

m_pWidget = pWidget;

};

//функция открывает СОМ – порт для чтения и записи

//переменная name_comm – имя последовательного порта

int CSerialComm::Open(const char *name_comm)

{

m_fd = open(name_comm,O_RDWR);

if(m_fd == -1){

throw CSerialCommException("Open");

}

return 1;

}

int CSerialComm::Write(unsigned char *pbuf, int BytesToWrite)

{

int BytesWritten = 0; //число записанных байт

BytesWritten = write(m_fd, pbuf, sizeof(pbuf));

if(BytesWritten!=sizeof(pbuf)){

throw CSerialCommException("Write");

}

return 1;

}

int CSerialComm::Read(unsigned char *pbuf, int BytesToRead)

{

BytesRead = read(m_fd, pbuf, sizeof(pbuf)); //чтение данных из последовательного порта

if(BytesRead == -1) {

throw CSerialCommException("Read");

}

return 1;

}

bool CSerialComm::Close()

{

if(close(m_fd) == -1){

throw CSerialCommException("Close");

}

return true;

}

Задание 16

Цель работы — освоение работы с СОМ‑портом.

Порядок выполнения

Сделать поток, который будет записывать и считывать массива данных по СОМ – порту. В main() реализовать ввод массива данных.

В функции main() создать поток с круговой дисциплиной диспетчеризации. В данном потоке реализовать следующий алгоритм.

while(1){

записать массив данных в СОМ-порт

считать массив данных.

}

В функции main() реализовать меню со следующими пунктами:

Ввод массива данных.

Выход.

Задание 17

Цель работы — Написать многопоточный вариант программы для работы с СОМ – портом. Синхронизацию работы потоков осуществить с использованием метода присоединение.

Порядок выполнения

Сделать поток, который будет выполнять запись данных в СОМ – порт.

Функцию чтения данных реализовать в main(). Часть алгоритма функции main для работы с СОМ – портом

while(1){

Запуск потока для записи данных в СОМ порт.

Ожидание завершения потока. Вызов функции pthread_join(…).

Чтение данные из СОМ – порта.

Вывести данные, которые были записаны, и данные, которые были считаны.

Выполнять цикл в течение 5 сек.

}

Задание 18

Цель работы — Написать многопоточный вариант программы для работы с СОМ – портом. Синхронизацию работы потоков осуществить с использованием метода присоединение.

Порядок выполнения

Сделать поток, который будет выполнять чтение данных из СОМ – порта.

Функцию записи данных реализовать в main(). Часть алгоритма функции main для работы с СОМ – портом

while(1){

Запись данных в СОМ порт.

Запуск потока для чтения данных из СОМ – порта.

Ожидание завершения потока. Вызов функции pthread_join(…).

Вывести данные, которые были записаны, и данные, которые были считаны.

Выполнять цикл в течение 3 сек.

}

Задание 19

Цель работы — написать многопоточный вариант программы для работы с СОМ – портом. Для синхронизации работы потоков использовать барьер.


Дата добавления: 2015-12-08; просмотров: 42 | Нарушение авторских прав



mybiblioteka.su - 2015-2024 год. (0.008 сек.)