Читайте также:
|
|
Для работы с последовательным портом необходимо выполнить следующие основные действия:
· открытие сом для чтения и записи;
· запись данных в сом порт;
· чтение данных;
· изменение настроек СОМ–порта;
· закрытие.
Приведем пример функций для работы с СОМ – портом.
#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 | Нарушение авторских прав