|
0 / 0 / 0
Регистрация: 30.01.2024
Сообщений: 26
|
||||||
Нужна помощь в понимании как реализовать сбор данных и их обработку30.01.2024, 19:40. Показов 3029. Ответов 37
Метки нет (Все метки)
День добрый. Имеется контроллер, с которого читаю время его работы. я получаю это время, далее через час я получаю еще раз время работы с устройства, с этих данных мне надо получить разницу. И так в течении всего дня собирать данные, и каждый час получать статистику)
С этих параметров получаю часы и миллисекунды с контроллера 6752 6751 . у меня неделя программирования, самообучение) Не представляю как мне закрутить программу, так что бы все работало. может кто поможет?
0
|
||||||
| 30.01.2024, 19:40 | |
|
Ответы с готовыми решениями:
37
Помощь в понимании Помощь в понимании RowViewModel
|
|
0 / 0 / 0
Регистрация: 30.01.2024
Сообщений: 26
|
|
| 01.02.2024, 19:21 [ТС] | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 30.01.2024
Сообщений: 26
|
|
| 01.02.2024, 19:24 [ТС] | |
|
TimeSpan convert_param_to_TimeSpan(int _param6751, int _param6752) //
{ //hh:mm:ss var mils = TimeSpan.FromMinutes(_param6752).TotalMi lliseconds; //из минут в лиллисикунды var out_milisec = mils + _param6751; //сложение двух полей милисикундных var timeSpan = TimeSpan.FromMilliseconds(out_milisec); int dd = timeSpan.Days; int hh = (int)timeSpan.TotalHours; int mm = timeSpan.Minutes; int ss = timeSpan.Seconds; return timeSpan; } так вот этот блок этим и занимается
0
|
|
|
|
|
| 01.02.2024, 19:26 | |
|
Ну и не раскрыт вопрос: что берется в качестве интервала - разница времен текущего и прошлого получения значения или общее (накопленное)...
Допустим, опросили контроллер, он прислал "61 37488". Через 5 часов опросили еще раз: "85 40500". И что дальше?
0
|
|
|
0 / 0 / 0
Регистрация: 30.01.2024
Сообщений: 26
|
|
| 01.02.2024, 19:34 [ТС] | |
|
ну вот эти параметры я и опрашиваю каждый час, записываюся они в массив all_day[_hours] = _timeSpan; где _hours это время соответственно, допустим 8часов было, соотвественно ячейка массива all_day[8], далее пишется туда в 9 часов all_day[9] , а потом все это хозяйство вычитается и записывается в другой массив all_day_sub[8] = _all_day[8].Subtract(_all_day[9]);
как-то так)) п.с. мой мозг не особо молод и восприимчив к новой информации, если я что-то сегодня пишу, завтра могу в своем коде пол часа разбираться)
0
|
|
|
0 / 0 / 0
Регистрация: 30.01.2024
Сообщений: 26
|
|
| 01.02.2024, 19:36 [ТС] | |
|
идея проста . сохранить со станка время в 8 часов утра, а потом в 9 часов утра, и получить эту разницу, что и будет являтся временим, работы станка 0_о
0
|
|
|
|
||||||||||||||||
| 01.02.2024, 20:07 | ||||||||||||||||
|
ssuss,
1
|
||||||||||||||||
|
0 / 0 / 0
Регистрация: 30.01.2024
Сообщений: 26
|
|
| 01.02.2024, 20:19 [ТС] | |
|
Спасибо, попробую разобраться что вы написали)
0
|
|
| 01.02.2024, 21:42 | ||
|
ssuss, может такой вариант вам пригодится (см. вложение)?
Несколько замечаний по коду: 1. В примере использован ридер заглушка, то есть он возвращает одно и тоже время. Его реализацию надо заменить на реальное чтение данных (см. комментарии в коде). 2. Возможно в список нужно помещать не сами отметки, а разницу между текущей и предыдущей. Эта логика легко реализуется, но нужно понимать что же именно требуется. 3. Форматирование временных меток можно настроить в методе ToString класса CNCWorkTime, причём можно наделать кучу перегрузок с форматтерами и без, это дело вкуса. 4. Метод Read класса CNCWorker можно/нужно обернуть в Task для освобождения потока UI. Но я не стал этого делать , так как: 5. В примере показано как работают Binding-и на примере использования BindingList. Обратите внимание, что с листбоксом в коде мы никак не взаимодействуем, а он сам обновляется. 6. Таймер может быть настроен на любой интервал времени. Для демонстрации интервал 1 сек., но по вашим словам это должен быть час. Решается изменением одного значения. В общем будут вопросы спрашивайте.
0
|
||
|
0 / 0 / 0
Регистрация: 30.01.2024
Сообщений: 26
|
|
| 01.02.2024, 23:01 [ТС] | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 30.01.2024
Сообщений: 26
|
||
| 02.02.2024, 09:31 [ТС] | ||
|
________________________________________ ________ Период работы | Время работы станка | Кол-во деталей ________________________________________ ________ 8:00-9:00 | 40м 45с | 120 ________________________________________ ________ 9:00-10:00 | 35м 10с | 100 и тд. 24 часа Примерно так табличка должна выглядеть . Прикрутил ваш код к своей программе. Работает добавление времени в лист и тд, но что тут происходит мне понять сложно, интерфесы их реализация и все такое, и я не в состоянии что-то править под себя , к сожалению.
0
|
||
| 02.02.2024, 11:42 | ||||||||
|
Теперь о том, что является вспомогательным. Это ридер FanucReader, именно он выполняет чтение данных из станка. Его методы ReadHighParameter и ReadLowParameter вызываются в методе Read класса CNCWorker. Ридер устанавливается для класса CNCWorker при помощи инжекции через конструктор, но можно установить его и через свойство CNCReader. Зачем интерфейс ICNCReader? У разных ЧПУ могут быть разные методы или адреса ячеек памяти (регистры) возвращающие время работы станка. Поэтому под конкретный станок (ЧПУ) надо написать свой ридер и всё, остаётся только установить у класса CNCWorker новый ридер и он будет работать с другим станком (ЧПУ). Интерфейс определяет обязательность двух методов чтения данных ReadHighParameter и ReadLowParameter в любом ридере реализующем данный интерфейс. То есть это такой контракт между конкретным ридером и классом CNCWorker. Есть ещё конвертер CNCWorkTimeConverter, но его назначение думаю понятно. Добавлено через 7 минут
0
|
||||||||
|
0 / 0 / 0
Регистрация: 30.01.2024
Сообщений: 26
|
||
| 02.02.2024, 18:59 [ТС] | ||
|
Добавлено через 5 часов 49 минут Uswer, я дико запутался. ничего не получается(
0
|
||
| 03.02.2024, 20:46 | ||||||
|
Деталей 100шт. всегда летит в конструктор класса периода, т.к. я не знаю как ты их получаешь и как лучше всего их описать классами.
Второй параметр время работы станка, т.к. используется всё та же заглушка, то время не меняется, а значит станок стоит, т.е. время его работы = 0. Добавлено через 11 минут Ошибку допустил, в форме замени if на этот
0
|
||||||
|
0 / 0 / 0
Регистрация: 30.01.2024
Сообщений: 26
|
|||||||
| 03.02.2024, 21:11 [ТС] | |||||||
|
У меня не получалось, пошел другим способом, пишу сразу в БД access ,а потом хочу оттуда вытягивать данные ну и сними както уже работать) Добавлено через 9 минут
0
|
|||||||
|
0 / 0 / 0
Регистрация: 30.01.2024
Сообщений: 26
|
|
| 03.02.2024, 22:38 [ТС] | |
|
получилось , работает. а мона сделать что бы лишние столбцы не выводились с timeSpan значениями?
0
|
|
|
0 / 0 / 0
Регистрация: 30.01.2024
Сообщений: 26
|
|
| 03.02.2024, 23:00 [ТС] | |
|
dataGridView2.Columns[1].Visible = false; так склыл)
0
|
|
| 03.02.2024, 23:00 | |
|
Помощь в понимании чужого кода Помощь в понимании части программы Нужно реализовать сбор данных Потоки. Помощь в понимании примера из книги Как ускорить обработку обработку данных в Пайтон?!?! Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки
Правым кликом по серверу -> отладочная информация -> edit
Заменить "net": "raw", на "net": "tcp",
Нажать кнопку reload.
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|