Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
6 / 5 / 4
Регистрация: 16.04.2014
Сообщений: 48

Структура класса для работы с устройством

16.04.2014, 10:08. Показов 1566. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте,

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

Итак, есть устройство Device с которого можно получать данные Events и Messages. Сделал класс Device. элементами которого являются экземпляры классов Event и Message:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Device
{
    public Event Events;
    public Message Messages;
}
 
public class Event
{
    public string LastEvent; 
}
 
public class Message
{ 
    public string LastMessage;
}
Теперь я могу создавать экземпляры класса Device и обращаться к нужным мне элементам, например, вот так:
C#
1
2
Device DV = new Device();
MessageBox.Show(DV.Messages.LastMessage);
Эементы LastEvent и LastMessage классов Event и Message должны получать данные из самого устройства, т.е. выглядят они посути вот так:
C#
1
2
3
4
5
6
7
public string LastEvent
{
    get
    {
        return Connector.ReadFromDevice(LastEventCommand);
    }
}
где Connector.ReadFromDevice - метод для чтения данных непосредственно из устройства.

Вот собственно никак не могу придумать такую структуру класса, чтобы Connector.ReadFromDevice (Connector - класс для работы с устройством) был доступен во всех "вложенных" методах/элементах класса Device. При этом класс Connector не должен быть статическим т.к. работать мне нужно будет с несколькими устройствами одновременно.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.04.2014, 10:08
Ответы с готовыми решениями:

WinApi для работы с устройством микрофона
Добрых времени суток. Суть проблемы такова что на ноутбуке сломался микрофон - переодически его нужно отключать (см. вложение) и включать...

Прога для работы с PCI-e устройством.
Здравствуйте. Я проектирую плату, которая подключается в pci-e порт компьютера. Для ее отладки необходимо написать некую отладочную...

Структура для работы с массивом
напишите пожалуйста программу по следующему заданию.. очень нужно.. Создать структуру для работы с массивом. Данные структуры: массив...

6
 Аватар для Spawn
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
16.04.2014, 10:14
Если не статика, то передавать экземпляр Вашего Connector всем дочерним элементам (или родительского Device, через который уже до любого члена устройства достучаться можно будет).
0
6 / 5 / 4
Регистрация: 16.04.2014
Сообщений: 48
16.04.2014, 10:21  [ТС]
Про передачу экземпляра - это понятно, просто если таких классов будет несколько десятков, то это не слишком удобно получиться. Что-то мне подсказывает, что по другому не получится, но всеже может кто сталкивался с какими-то нестандартными реализациями для подобных случаев...
0
 Аватар для Spawn
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
16.04.2014, 10:26
Ваш LastEvent вообще свойством быть не должен, если на то пошло. Connector-то он должен откуда-то получать. Что закладывается в данное свойство?
0
6 / 5 / 4
Регистрация: 16.04.2014
Сообщений: 48
16.04.2014, 10:33  [ТС]
LastEvent должен возвращать последний Event, который содержиться в устройстве, т.е. его полубому надо считывать с самого устройства. Вариант Считывания из устройства всех информации не рассматривается т.к. в этом есть необходимость только при изменившемся LastEvent.

Насколько я понял, то вы предлагаете переделать класс вот так?:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
public class Device
{
    public Event Events;
    public Message Messages;
    private Connect Connector;
 
    public Device(string IP)
    {
        Connector = new Connect(IP);
        Messages = new Message(Connector);
        Events = new Event(Connector);
    }
}
 
public class Event
{
    private Connect Connector;
    public Event(Connect Connector)
    {
        this.Connector = Connector;
    }
    public string LastEvent
    {
        get
        {
            return Connector.ReadFromDevice("LastEventCommand");
        }
    }            
}
 
public class Message
{
    private Connect Connector;
    public Message(Connect Connector)
    {
        this.Connector = Connector;
    }
    public string LastMessage;            
}
 
public class Connect
{
    public string ReadFromDevice(string Command) { return "";}
    public Connect(string IP) { }
}
0
 Аватар для Spawn
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
16.04.2014, 11:18
Классу Connect ещё Device не забудьте передать...

C#
1
public Connect(string IP, Device device) { }
А то ReadFromDevice понятия не будет иметь откуда чего брать...
0
6 / 5 / 4
Регистрация: 16.04.2014
Сообщений: 48
16.04.2014, 11:35  [ТС]
Не не... Тут я видимо немного в заблуждение ввел назвав метод класса Connect ReadFromDevice. Тут "Device" в конце названия к классу Device отноения не имеет, класс Connect - это класс для работы с реальным устройством.

Посути мне надо переделать вот такую структуру класса:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class Device
{
    public Event Events;
}
 
public class Event
{
    public string LastEvent
    {
        get
        {
            return Connector.ReadFromDevice("LastEventCommand");
        }
    }            
}
 
public static class Connector
{
    public static string ReadFromDevice(string Command) { return "";}
}
которая отлично отрабатывает для работы с одним у стройством, в структуру для работы с несколькими устройствами, т.е. избавиться от static элементов. При этом желательно без передачи всем элементам класса Device экземпляра класса Connector.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.04.2014, 11:35
Помогаю со студенческими работами здесь

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

Как написать конструктор для класса, в котором содержится структура?
#include "stdafx.h" #include "iostream" #include "conio.h" using namespace std; const int a = 50; struct Spec { char...

Какая нужна комплектация для Учебного класса института на 10 мест для комфортной работы на лабораторных по информатике?
Посоветуйте какая нужна комплектация(наиболее частые применяемые программы,и исходя из этого ос,процессор,мат.плата,оперативная...

Создания класса для работы с БД
Доброе утро, делаю контрольное задание по ООП и СУБД, суть задачи такая 1) Создать класс для работы с БД(СУБД выбираете сами) 2)...

Создание класса для работы с БД
Добрый день, не могу разобраться, мне надо написать класс, для работы с БД, там должно быть: 1) соединение с БД, и закрытия БД, 2)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru