Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 6 459

/ вопрос решён /

Здравствуйте! Научите рисовать динамические графики? Нигде этого не могу найти. В любом виде. (Данные из COM-порта, USB 1.1, USB 2.0). Три (или больше) разноцветных графика одновременно. По оси "У" 255 точек, по оси "Х" время дискретизации на ваше усмотрение. На любом известном вам языке прог, с пояснениями на Могучем и литературном... Специально писать не надо. Дайте, чего не жалко, просто попялиться. Люди из easyelectronics.ru очень нуждаются в этом уже долгие годы.
Например:

Приложение:
  1. var
  2. Form1: TForm1;
  3. conf:array[1..256] of string;
  4. ComPort:Thandle;
  5. t,j:integer;
  6. q,z:integer;
  7. buf:array[1..4200] of AnsiChar;
  8. implementation
  9.  
  10. {$R *.dfm}
  11. procedure TForm1.FormCreate(Sender: TObject);
  12. begin
  13. conf[1]:='1';
  14. ComPort:=ComOpen('com'+conf[1]);
  15.  
  16. j:=0 ;
  17. q:=0;
  18. t:=1;
  19.  
  20. end;
  21.  
  22. procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
  23. begin
  24. ComWrite(ComPort,'E'+#10+#13);
  25. sleep(200);
  26. ComClose(ComPort);
  27. end;
  28.  
  29.  
  30. procedure TForm1.Timer1Timer(Sender: TObject);
  31. var i,h:longint;
  32. code,k,p:integer;
  33. j1:integer;
  34. x:char;
  35. str,s:string;
  36. newStr:array[1..2100] of string;
  37. //buf:array[1..42000] of Char;
  38. begin
  39. j1:=1;
  40. str:=ComRead(comPort);
  41. if(str<>'') then
  42. begin
  43. for i:=1 to length(str) do
  44. begin
  45.  
  46. if j>2110 then
  47. begin timer1.Enabled:=false;
  48.  
  49. if Timer1.Enabled=True then lbl1.Caption:='on'
  50. else lbl1.Caption:='off';
  51. break;
  52. end;
  53. buf[j]:=str[j];
  54. mmo1.Lines.add(IntToStr(j)+' '+inttostr(Ord(str[j]))+' '+IntToStr(j+1)+' '+inttostr(Ord(str[j+1])));
  55. j:=j+2;
  56.  
  57.  
  58. if ((j>8) and (j<2008)) then
  59. Series1.AddXY((j-8),256*Ord(str[j+1])+Ord(str[j]));
  60.  
  61.  
  62. end;
  63. end;
  64. end;
  65.  
  66.  
  67.  
  68. procedure TForm1.Button1Click(Sender: TObject);
  69. var temp:string;
  70. i,p:integer;
  71. begin
  72.  
  73. j:=1;i:=1;
  74. Timer1.Enabled:=true;
  75. if Timer1.Enabled=True then lbl1.Caption:='on'
  76. else lbl1.Caption:='off';
  77. ComWrite(ComPort,'G'+#10+#13);
  78. temp:=ComRead(ComPort);
  79. {if Timer1.Enabled=false then
  80. while j<2110 do
  81. begin
  82. p:=ord(buf[j]);
  83. end;
  84.  
  85.  
  86. end;
  87.  
  88. procedure TForm1.N3Click(Sender: TObject);
  89. begin
  90. ComWrite(ComPort,'E'+#10+#13);
  91. sleep(200);
  92. ComClose(ComPort);
  93. close();
  94. end;
  95.  
  96. procedure TForm1.N2Click(Sender: TObject);
  97. var path:string;
  98. begin
  99. SaveDialog1.Execute;
  100. path:=SaveDialog1.FileName;
  101. if path<>'' then memo1.Lines.SaveToFile(path);
  102. end;
  103.  
  104. procedure TForm1.RadioButton1Click(Sender: TObject);
  105. begin
  106. ComWrite(ComPort,'T1'+#10+#13);t:=25
  107. end;
  108.  
  109. procedure TForm1.RadioButton2Click(Sender: TObject);
  110. begin
  111. ComWrite(ComPort,'T2'+#10+#13);t:=50
  112. end;
  113.  
  114. procedure TForm1.RadioButton3Click(Sender: TObject);
  115. begin
  116. ComWrite(ComPort,'T3'+#10+#13);t:=100
  117. end;
  118.  
  119. procedure TForm1.Button2Click(Sender: TObject);
  120. begin
  121. timer1.Enabled:=false;
  122. end;
  123.  
  124. procedure TForm1.Exit1Click(Sender: TObject);
  125. begin
  126.  
  127. Close;
  128.  
  129. end;
  130.  
  131. procedure TForm1.N5Click(Sender: TObject);
  132. begin
  133.  
  134. Tmr1.Enabled:=True ;
  135. end;
  136.  
  137. procedure TForm1.tmr1Timer(Sender: TObject);
  138. begin
  139.  
  140. if Timer1.Enabled=False then
  141.  
  142.  
  143. begin
  144.  
  145. Button1.Click ;
  146.  
  147. end;
  148. begin
  149. if tmr1.Enabled=True then lbl2.Caption:='on' else
  150. lbl2.Caption:='off'
  151. end;
  152.  
  153.  
  154. end;
  155.  
  156.  
  157.  
  158. procedure TForm1.N6Click(Sender: TObject);
  159. begin
  160. tmr1.Enabled:=False;
  161. end;
  162.  
  163. end.


zvygin1964 Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: zvygin1964 (статус: Посетитель)
Вопрос отправлен: 24 июля 2013, 22:16
Состояние вопроса: решён, ответов: 0.


Мини-форум вопроса

Всего сообщений: 20; последнее сообщение — 5 августа 2013, 13:16; участников в обсуждении: 3.
zvygin1964

zvygin1964 (статус: Посетитель), 24 июля 2013, 22:21 [#1]:

Или так:
var
bmp: TBitmap;

procedure Timer(wnd,uMsg,idEvent,dwTime: LongInt);stdcall;
begin
bmp.Canvas.Draw(-1,0,bmp); //Сдвигаем график влево на 1 пиксель
bmp.Canvas.FillRect(Rect(511,0,512,256)); //Стираем столбик справа
bmp.Canvas.LineTo(511,random(20)+128); //Рисуем график
Form1.Canvas.Draw(0,0,bmp); //Вывод графика на форму
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
bmp:=TBitmap.Create;
bmp.Height:=256;
bmp.Width :=512;
bmp.Canvas.MoveTo(511,128); //Начальная позиция графика
bmp.Canvas.Pen.Color:=255; //Цвет графика
bmp.Canvas.Brush.Color:=0; //Цвет фона
BitBlt(bmp.Canvas.Handle,0,0,512,256,0,0,0,BLACKNESS); //Заливаем экран чёрным цветом
SetTimer(0,0,100,@Timer);
end;
min@y™

min@y™ (статус: Доктор наук), 24 июля 2013, 22:34 [#2]:

Посмотри вот это демо.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
zvygin1964

zvygin1964 (статус: Посетитель), 30 июля 2013, 19:56 [#3]:

Я не понимаю шуток, даже от уважаемых людей. Не умеете? А просто построить динамический график по данным из потока?
min@y™

min@y™ (статус: Доктор наук), 30 июля 2013, 20:05 [#4]:

Цитата (zvygin1964):

Я не понимаю шуток, даже от уважаемых людей. Не умеете? А просто построить динамический график по данным из потока?

Это ты щас к кому обращаешься-то? И кто тут шутит? Я не понял...
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
zvygin1964

zvygin1964 (статус: Посетитель), 30 июля 2013, 21:53 [#5]:

Я просил научить, а не демонстрировать Ваши способности.
dandbyt

dandbyt (статус: Посетитель), 30 июля 2013, 21:58 [#6]:

zvygin, я думаю что пользователь "min@y™" Сказал используй компонент для построение графика TeeChar
min@y™

min@y™ (статус: Доктор наук), 30 июля 2013, 22:40 [#7]:

Цитата (zvygin1964):

Я просил научить, а не демонстрировать Ваши способности.

Научить я, как раз, и пытался, выложив демо-проект (с исходниками!), который и демонстрирует построение самых разнообразных динамических графиков в программах на Delphi. И я никоим образом не демонстрировал свои способности, ибо этот самый демо-проект включён в стандартные дистрибутивы Delphi со времён царя Гороха, и я его создателем не являюсь.
Когда много лет назад мне таки понадобилось построение красивых графиков в очередном моём проекте, я постигал сабж (причём успешно) именно по исходникам этой самой демки. Смею заметить - при полном отсутствии доступа к этим вашим интернетам! Поэтому я посмел предположить, что и у тебя это должно получиться.
Если по мере изучения сабжа будут появляться какие-то конкретные вопросы - задавай. И формулируй их правильно, пожалуйста.

Цитата (dandbyt):

я думаю что пользователь "min@y™" Сказал используй компонент для построение графика TeeChar

Всё верно.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
min@y™

min@y™ (статус: Доктор наук), 30 июля 2013, 22:49 [#8]:

Да, забыл добавить: если влом заморачиваться с таким сложным компонентом, как TChart, есть варианты попроще. Например, THeartMachine и т.п.



ИМХО: Если проект не учебный (не стоит задача отрисовки графика своими силами/мозгом), то целесообразно использовать готовые отлаженные варианты кода/компоненты, если они решают поставленную задачу, и не заморачиваться: сильно экономит время.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
zvygin1964

zvygin1964 (статус: Посетитель), 31 июля 2013, 18:51 [#9]:

Вот это уже ответ. Меня как раз интересуют готовые компоненты.
Примерно такой, как использован в программе Terminal.exe
от Великого DI HALT. Интересно, на чём она писалась? Явно не на LabVIEW. Ведь такая скромная. А какая умная. Похожий исходник на любом языке есть у кого?
Давайте по делу, с примерами кода. Как у Самого Великого DI HALT! И поподробней, мне много лет. Я в микроконтроллерах AVR.
C паяльником. Все остальное темный лес.
Нас здесь таких нуждающихся много (easyelectronics.ru). Сами мы не местные. ПомоЖите кто чем может!
min@y™

min@y™ (статус: Доктор наук), 31 июля 2013, 20:43 [#10]:

Цитата (zvygin1964):

Вот это уже ответ. Меня как раз интересуют готовые компоненты.

Ну так забирай готовый компонент и используй его.



Цитата (zvygin1964):

Примерно такой, как использован в программе Terminal.exe

Вот это поворот! Это чо ж за зверь такой? У меня нет такой программы.

Цитата (zvygin1964):

от Великого DI HALT

А это кто ваще?

Цитата (zvygin1964):

Интересно, на чём она писалась?

Понятия не имею.

Цитата (zvygin1964):

Явно не на LabVIEW.

Я и не слышал никогда про эту среду разработки. Пришлось покурить википедию для интереса.

Цитата (zvygin1964):

Ведь такая скромная. А какая умная.

Дааааааааааааааа??!!!!!!111

Цитата (zvygin1964):

Похожий исходник на любом языке есть у кого?

Исходник чего? Построения динамических графиков?

Цитата (zvygin1964):

Давайте по делу, с примерами кода.

Давайте, конечно, давно бы так! Для начала определимся с техническим заданием и, естественно, с суммой моего гонорара за проделанную работу.



Цитата (zvygin1964):

Как у Самого Великого DI HALT!

Да кто этот, блин, Великий Кормчий? К нему лично обращаться не пробовал?



Цитата (zvygin1964):

И поподробней, мне много лет.

Ага! И ПОБЫСТРЕЕ, Б...Я!!! А то на пенсию выпрут!!!1111

Цитата (zvygin1964):

Я в микроконтроллерах AVR. C паяльником.

А я - на диване. С ноутбуком на пузе и пивом.

Цитата (zvygin1964):

Все остальное темный лес.

Ну и чего же ты от меня хочешь-то? Чтобы я сделал ЧТО?!

Цитата (zvygin1964):

Нас здесь таких нуждающихся много (easyelectronics.ru).

В чём ваша нужда заключается? Все спецы разбежались и уехали в Москвабад?

Цитата (zvygin1964):

Сами мы не местные. ПомоЖите кто чем может!

Ну я ж просил задавать конкретные вопросы.

Цитата (min@y™):

Если по мере изучения сабжа будут появляться какие-то конкретные вопросы - задавай. И формулируй их правильно, пожалуйста.

ИТОГО: Ты меня совсем запутал, я не понимаю, чего тебе надо.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
zvygin1964

zvygin1964 (статус: Посетитель), 1 августа 2013, 19:08 [#11]:

Знакомьтесь: http://www.youtube.com/watch?v=650Pa-dz9rY&list=PL27A58A2D3AAAEE07 , в кадре Сам DI HALT !
По теме -
Задача: Создание исходника (с пояснениями) программы для отображения результатов измерений полученных из любительских устройств в виде графиков на координатной сетке с легендой для выбора языка программирования (перспективности изучения). Люди из easyelectronics.ru очень нуждаются в этом уже долгие годы.
Готовых программ много. Интересно написать свою.
За компонент спасибо. Пробую. Торопиться некуда. На пенсии давно. Десятка лет хватит.
zvygin1964

zvygin1964 (статус: Посетитель), 1 августа 2013, 20:39 [#12]:

А готовую Terminal v1.9b by Bray можно скачать у создателя.
Он обитает https://sites.google.com/site/terminalbpp/
Хочется создать свой, простенький график. И измываться над ним...
min@y™

min@y™ (статус: Доктор наук), 1 августа 2013, 23:43 [#13]:

Цитата (zvygin1964):

Знакомьтесь: http://www.youtube.com/watch?v=650Pa-dz9rY&list=PL27A58A2D3AAAEE07 , в кадре Сам DI HALT !
А готовую Terminal v1.9b by Bray можно скачать у создателя.
Он обитает https://sites.google.com/site/terminalbpp/
Хочется создать свой, простенький график. И измываться над ним...

И не подумаю. Нафига оно мне надо?

Цитата (zvygin1964):

Задача: Создание исходника (с пояснениями) программы для отображения результатов измерений полученных из любительских устройств в виде графиков на координатной сетке с легендой для выбора языка программирования (перспективности изучения). Люди из easyelectronics.ru очень нуждаются в этом уже долгие годы.

Для создания такой программы нужно:
1. Подробное ТЗ.
2. Любительские устройства или их программы-эмуляторы/симуляторы.
3. Деньги для программиста-полиглота.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
zvygin1964

zvygin1964 (статус: Посетитель), 2 августа 2013, 00:02 [#14]:

Куда уже подробнее. Разработка не нужна. Интересуют готовые куски на всех известных языках для их сравнения.
Устройство зацеплено за соседний ПК. А если для него специально писать не будут, тогда зачем оно вам? Используйте рандомайс, или как там оно у вас называется.
У людей это называется случайным числом (микроконтроллер 8 битный- от 0 до 255).
Нет, пока меня деньги не интересуют. Спасибо за предложение. Пока это хобби.
Может быть вы потом книжку напишите как Ю.Ревич. Вот её я куплю, для коллекции, даже если в 500 страницах будет один удачный пример.
А вы тут один? Жаль... Наверно скучно Вам переписываться самому с собой. На easyelectronics.ru не так. Слава создателю DI HALT !
min@y™

min@y™ (статус: Доктор наук), 2 августа 2013, 00:40 [#15]:

Цитата (zvygin1964):

Куда уже подробнее. Разработка не нужна. Интересуют готовые куски на всех известных языках для их сравнения.

Котовые куски чего?
И где ж я тебе их возьму-то на всех языках?

Цитата (zvygin1964):

Устройство зацеплено за соседний ПК. А если для него специально писать не будут, тогда зачем оно вам?

Ни хрена не понял.

Цитата (zvygin1964):

Используйте рандомайс, или как там оно у вас называется. У людей это называется случайным числом (микроконтроллер 8 битный- от 0 до 255).

Ой, да неужели?! Спасибо, что разрешил. А то как же я без ГПСЧ жить-то буду?!

Цитата (zvygin1964):

Нет, пока меня деньги не интересуют. Спасибо за предложение. Пока это хобби.

А я ничего и не предлагал.

Цитата (zvygin1964):

Может быть вы потом книжку напишите как Ю.Ревич. Вот её я куплю, для коллекции, даже если в 500 страницах будет один удачный пример.

Исключено. Я писáть не умею.

Цитата (zvygin1964):

А вы тут один? Жаль... Наверно скучно Вам переписываться самому с собой.

Нет, я тут не один. Просто народ прочитал вопрос, первые комменты к нему и прошёл мимо. А мне заняться нечем, в больнице лежу, есть время потроллить людей, которые сами напрашиваются на это.

Цитата (zvygin1964):

На easyelectronics.ru не так. Слава создателю DI HALT !

Это у вас там секта такая? Ну-ну...
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
zvygin1964

zvygin1964 (статус: Посетитель), 5 августа 2013, 08:04 [#16]:

Окончание программы понятно. Спасибо хорошие люди подсказали, компонент PlotLab хороший (от http://www.delphipages.com/comp/plotlab_v-5953.html , бесплатно для некоммерческого использования).
Но ваш THeartMachine вообще чудо. И посмотреть, и поковырять есть чего.
Теперь вернёмся к началу: получение данных из USB 1.1, USB 2.0 со скоростью, ну к примеру, 9600 бод.
Это умеем?
min@y™

min@y™ (статус: Доктор наук), 5 августа 2013, 08:30 [#17]:

Цитата (zvygin1964):

Теперь вернёмся к началу: получение данных из USB 1.1, USB 2.0 со скоростью, ну к примеру, 9600 бод. Это умеем?

Сюда заходить не пробовал, или тебя там забанили?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
zvygin1964

zvygin1964 (статус: Посетитель), 5 августа 2013, 12:48 [#18]:

Спасибо. Это очень хорошее сочетание. У меня так не получалось. Считаю вопрос решенным. Мне этого хватит надолго!
zvygin1964

zvygin1964 (статус: Посетитель), 5 августа 2013, 12:52 [#19]:

Сколько я вам должен? Куда перечислить?
min@y™

min@y™ (статус: Доктор наук), 5 августа 2013, 13:16 [#20]:

Цитата (zvygin1964):

У меня так не получалось.

Почему не получалось-то?

Цитата (zvygin1964):

Сколько я вам должен? Куда перечислить?

Мне ничего не надо, у меня всё есть. Можешь купить бутылку водки и выпить за моё здоровье.

Цитата (zvygin1964):

Считаю вопрос решенным.

Как скажешь.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

5 августа 2013, 13:17: Статус вопроса изменён на решённый (изменил модератор min@y™): Пожелание топикстартера.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:28
Выполнено за 0.03 сек.