Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 01.12.2014
Сообщений: 49

Добавить функционал программе

18.12.2014, 08:40. Показов 836. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть установка, которая будет использоваться на заводе. К ней подключен так называемый "шкаф", от которого происходит управление этой установкой. Внутри шкафа стоит прибор (метакон 5хх), через который и будет идти управление. Подключаются к нему так: т.к. у него интерфейс RS-485, то подключаемся через преобразователь и получаем уже интерфейс RS-232 (СОМ порт). Вот собственно под это дело написана программка. НО! Данную программу нужно расширить, а именно:
  • добавить возможность, чтобы программа каждую минуту считывала данные с метакона
  • записывала эти данные в файл (тут еще сам думаю в какой именно)
  • и исходя из данных в этом файле рисовала графики
  • графики можно было бы распечатать на принтере
Помогите пожалуйста это реализовать.
Вложения
Тип файла: zip 123.zip (20.4 Кб, 11 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.12.2014, 08:40
Ответы с готовыми решениями:

Добавить функционал
Вот есть у меня такая вот форма, задача - в выпадающем меню клацаю по цифре, и она добавляется в JLabel слева, одновременно если есть...

Добавить функционал
Здравствуйте, в программу необходимо добавить команду : логическое "не", и Добавить команду «СТОП», которая прекращает работу программы....

Добавить функционал к TShape
Привет всем))) Слушайте как к компоненту TShape Добавить надпись в цент? и чтобы ее можно было менять..... можно так вообще?)

12
0 / 0 / 0
Регистрация: 01.12.2014
Сообщений: 49
18.12.2014, 16:49  [ТС]
UPD. Поможет кто?
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
18.12.2014, 17:25
Так уже ж сам сделал!
Сохранить в .xls (App.Path)
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
18.12.2014, 17:30
Цитата Сообщение от family Посмотреть сообщение
добавить возможность, чтобы программа каждую минуту считывала данные с метакона
Добавь таймер, Interval = 60000, в обработчике:
Visual Basic
1
Call cmdRead_Click
Цитата Сообщение от family Посмотреть сообщение
записывала эти данные в файл (тут еще сам думаю в какой именно)
Сначала определись с форматом.
Цитата Сообщение от family Посмотреть сообщение
и исходя из данных в этом файле рисовала графики
Какие графики? В каком виде? Добавь PictureBox и рисуй на нем с помощью псевдометодов Line и Pset.
Цитата Сообщение от family Посмотреть сообщение
графики можно было бы распечатать на принтере
Для этого есть объект Printer. Также рисуешь с помощью этих псевдометодов или перерисовываешь с готовых с помощью PaintPicture, отправляешь на печать с помощью метода EndDoc.
0
0 / 0 / 0
Регистрация: 01.12.2014
Сообщений: 49
19.12.2014, 08:17  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Добавь таймер, Interval = 60000, в обработчике:
Это я так и сделал.
Цитата Сообщение от The trick Посмотреть сообщение
Call cmdRead_Click
Данное событие как я понимаю вызывает таймер из любого места?
Цитата Сообщение от The trick Посмотреть сообщение
Сначала определись с форматом.
Определился, выбрал .xls. Ну тут я уже понял как с ним работать.
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
19.12.2014, 11:26
Данное событие как я понимаю вызывает таймер из любого места?
С точностью до наоборот!
Таймер работает сам по себе если его запустили и с заданным интервалом вызыват процедуру cmdRead_Click
0
0 / 0 / 0
Регистрация: 01.12.2014
Сообщений: 49
19.12.2014, 11:48  [ТС]
Цитата Сообщение от Alex77755 Посмотреть сообщение
С точностью до наоборот!
Таймер работает сам по себе если его запустили и с заданным интервалом вызыват процедуру cmdRead_Click
Это да, я понял, просто выразился не так.

Собственно я потихоньку пишу функционал. Но вот выскочила проблема, ошибка overflow вот в этом куске кода:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub Timer3_Timer()
ReDim Preserve temperatura(N)
temperatura(N) = Val(writeData(strMetakonOut))
Label2.Caption = writeData(strMetakonOut)
VisualGraph1.NumPoint = N
VisualGraph1.MaxX = N
If N > 2 Then
For j = 1 To VisualGraph1.NumPoint
VisualGraph1.ActivPoint = j
VisualGraph1.ActivData = temperatura(j)
VisualGraph1.GraphMode = 1
Next
VisualGraph1.GraphMode = 2
End If
N = N + 1
End Sub
Debug указывает сюда -
Visual Basic
1
VisualGraph1.ActivData = temperatura(j)
Значения:
temperatura = 32768
j = 8
0
 Аватар для zink0000
258 / 107 / 26
Регистрация: 15.03.2012
Сообщений: 353
Записей в блоге: 35
19.12.2014, 12:13
Debug указывает сюда -
Visual Basic
1
VisualGraph1.ActivData = temperatura(j)
Скорее всего ActivData задано как целое (Integer)
Integer - диапазон от -32 768 до 32 767.
Проверьте.
0
0 / 0 / 0
Регистрация: 01.12.2014
Сообщений: 49
19.12.2014, 12:24  [ТС]
Цитата Сообщение от zink0000 Посмотреть сообщение
Скорее всего ActivData задано как целое (Integer)
Integer - диапазон от -32 768 до 32 767.
Проверьте.
Перепроверил, ActivData - Long.
0
 Аватар для Апострофф
9908 / 3924 / 742
Регистрация: 11.10.2011
Сообщений: 5,904
19.12.2014, 13:06
temperatura() объявлена as Integer, а не Long.
0
0 / 0 / 0
Регистрация: 01.12.2014
Сообщений: 49
19.12.2014, 14:05  [ТС]
Цитата Сообщение от Апострофф Посмотреть сообщение
temperatura() объявлена as Integer, а не Long.
Ну не настолько я глуп) temperatura тоже Long. Я поэтому и не стал писать в куске кода эти переменные объявленные.

Добавлено через 48 минут
Неравный бой закончился таким кодом:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub Timer3_Timer()
ReDim Preserve temperatura(N)
temperatura(N) = Val(writeData(strMetakonOut))
If temperatura(N) = 32768 Then
temperatura(N) = 0
End If
Label2.Caption = writeData(strMetakonOut)
VisualGraph1.NumPoint = N
VisualGraph1.MaxX = N
If N > 2 Then
For j = 1 To VisualGraph1.NumPoint
VisualGraph1.ActivPoint = j
VisualGraph1.ActivData = temperatura(j)
VisualGraph1.GraphMode = 1
Next
VisualGraph1.GraphMode = 2
End If
N = N + 1
End Sub
Я начал смотреть, рисуется ли график при других значениях, да, рисуется. А именно на значении 32768 выдает ошибку. Но это я так понял данные с метакона как раз об ошибке. Т.е. мы теперь просто игнорируем ошибку и пишем только другие данные, а они у меня будут колебаться от 0 до 100.
0
0 / 0 / 0
Регистрация: 01.12.2014
Сообщений: 49
19.12.2014, 15:47  [ТС]
В общем с отображением графика я разобрался. Скрин для наглядности прикрепил.

Теперь дело стоит за выводом этого графика в .xls. Я конечно разберусь с этим, но хотелось бы услышать или увидеть и другие варианты / решения.
Миниатюры
Добавить функционал программе  
0
0 / 0 / 0
Регистрация: 01.12.2014
Сообщений: 49
22.12.2014, 12:46  [ТС]
UPD. Застрял на выводе графика в файл .xls...( Поможете?

Добавлено через 3 часа 55 минут
Вывод графика в .xls
Visual Basic
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
46
47
48
49
50
51
52
53
54
55
ReDim Preserve myTime(N)
myTime(N) = Format(time, "hh:mm:ss")
 
Dim myExcel As Excel.Application
Dim myBook As Excel.Workbook
Dim mySheet As Excel.Worksheet
Dim myChart As Excel.Chart
 
Set myExcel = CreateObject("excel.application")
Set myBook = myExcel.Workbooks.Add
Set xlSheet = myBook.Worksheets(1)
 
xlSheet.Range("B1").Value = "T1"
For i = 1 To N - 1
xlSheet.Range("A" & Trim(Str(i + 2))).Value = myTime(i)
xlSheet.Range("B" & Trim(Str(i + 2))).Value = Trim(Str(temperatura(i)))
Next
 
Set myChart = myBook.Charts.Add
              myChart.ChartType = xlLine
              myChart.SetSourceData Source:=xlSheet.Range("A1:H" & Trim(Str(N + 1))), PlotBy:=xlColumns
              myChart.Location Where:=xlLocationAsNewSheet
              myChart.Axes(xlCategory).HasMajorGridlines = True
              myChart.Axes(xlCategory).HasMinorGridlines = False
              myChart.Axes(xlValue).HasMajorGridlines = True
              myChart.Axes(xlValue).HasMinorGridlines = False
              myChart.PlotArea.Border.ColorIndex = 16
              myChart.PlotArea.Border.Weight = xlThin
              myChart.PlotArea.Border.LineStyle = xlContinuous
              myChart.PlotArea.Interior.ColorIndex = 2
              myChart.PlotArea.Interior.PatternColorIndex = 1
              myChart.PlotArea.Interior.Pattern = xlSolid
              myChart.Axes(xlCategory).CrossesAt = 1
              myChart.Axes(xlCategory).AxisBetweenCategories = True
              myChart.Axes(xlCategory).ReversePlotOrder = False
              myChart.Legend.LegendEntries(1).LegendKey.Border.ColorIndex = 55
              myChart.Legend.LegendEntries(1).LegendKey.Border.Weight = xlThick
              myChart.Legend.LegendEntries(1).LegendKey.Border.LineStyle = xlContinuous
              myChart.Legend.LegendEntries(1).LegendKey.MarkerBackgroundColorIndex = xlNone
              myChart.Legend.LegendEntries(1).LegendKey.MarkerForegroundColorIndex = xlNone
              myChart.Legend.LegendEntries(1).LegendKey.MarkerStyle = xlNone
              myChart.Legend.LegendEntries(1).LegendKey.Smooth = False
              myChart.Legend.LegendEntries(1).LegendKey.MarkerSize = 3
              myChart.Legend.LegendEntries(1).LegendKey.Shadow = False
              myChart.Axes(xlValue).MinimumScaleIsAuto = True
              myChart.Axes(xlValue).MaximumScale = 100
              myChart.Axes(xlValue).MinorUnitIsAuto = True
              myChart.Axes(xlValue).MajorUnit = 10
              myChart.Axes(xlValue).Crosses = xlAutomatic
              myChart.Axes(xlValue).ReversePlotOrder = False
              myChart.Axes(xlValue).ScaleType = xlLinear
              myChart.Axes(xlValue).DisplayUnit = xlNone
myBook.SaveAs App.Path  & Format$(Now, "file - dd.mm.yy-hh_nn") & ".xls"
 
myExcel.Quit
Добавлено через 17 минут
Как бы все, программа готова) Остальное все тонкости настройки, всем спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.12.2014, 12:46
Помогаю со студенческими работами здесь

Добавить функционал в калькулятор
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Calculator { public static void main(String...

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

Какой функционал добавить к боту(ВК)?
Всем хай! Последнее время меня потянуло на создание ботов для приложений вконтакте(С#). Вот хотел спросить: какие функции можно зделать в...

Добавить функционал в программу сведений о студентах
ПРиветик ! я написала програмку,но мне нужно ее усложнить, а я уже запуталася что и как =((:- #include <stdio.h> #include...

Модифицировать игру Battleship и добавить функционал
Добрый вечер, у меня уже есть готовая игра, но её нужно немного измменить. Игра зделана с возможностью расстановки 10 кораблей, каждый...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru