Форум программистов, компьютерный форум, киберфорум
Pure Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 26.01.2013
Сообщений: 3

Эмулятор СЧПУ

26.01.2013, 22:34. Показов 3099. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго всем!
Помогите создать эмулятор системы ЧПУ - фрезерный станок ГФ2171+СЧПУ 2С42(Электроника 60).
Т.е. нужен инструмент написания и проверки УП для станка.
Главная проблема: как реализовать в PB одновременно рисование по точкам (из массива или файла) и вывод в окно или гаджет координат X и Y. Бьюсь над этим уже -надцать месяцев, пролистал сотни примеров с сайтов и форумов, а воз и ныне там. Ничего похожего не нашел.
Для справки: Win7(x86)+PB 4.51.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.01.2013, 22:34
Ответы с готовыми решениями:

Эмулятор
Народ приветы! посоветуйте или эмулятор без танцев с бубном или что... нужно .apk запустить (там игра, чем выше разрешение, тем лучше. Andy...

Эмулятор
Где найти эмулятор телефона 176х208? Добавлено через 14 минут Nokia

ПО-эмулятор МК
Подскажите, возможно существуют программные решения для эмуляции схем на основе МК? (естественно в МК "виртуально" заливается...

4
Эксперт по электронике
6570 / 3197 / 335
Регистрация: 28.10.2011
Сообщений: 12,475
Записей в блоге: 7
26.01.2013, 22:50
Зачем рисовать и выводить в окно в одно и тоже время? Делайте это по очереди.
Действия происходят быстро и визуально будет казаться что все выполняется одновременно.
1
0 / 0 / 0
Регистрация: 26.01.2013
Сообщений: 3
26.01.2013, 23:35  [ТС]
Пожалуйста, подскажите что неправильно.
Это простой вариант, пробовал и с процедурами.
PureBasic
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
:fie:
;{ Начало
x2=250:y2=250
 
Dim a(10):Dim b(10)
a(0)=15.85:b(0)=38.27
a(1)=38.27:b(1)=15.85
a(2)=38.27:b(2)=-15.85
a(3)=15.85:b(3)=-38.27
a(4)=-15.85:b(4)=-38.27
a(5)=-38.27:b(5)=-15.85
a(6)=-38.27:b(6)=15.85
a(7)=-15.85:b(7)=38.27
a(8)=-35:b(8)=0
a(9)=0:b(9)=-100
a(10)=-24:b(10)=-14
 
col=RGB(255,0,0)
t=50
 
OpenWindow(0, 0, 100, 500, 500, "It_new_4", #PB_Window_SystemMenu)
StringGadget(1,30,457,40,20,"")
StringGadget(2,30,477,40,20,"")
TextGadget(3,10,460,20,20,"X",#PB_Text_Center)
TextGadget(4,10,480,20,20,"Y",#PB_Text_Center)
ButtonGadget(5,100,477,50,20,"Рисуй")
;}
 
Repeat
  EventID=WaitWindowEvent()
  Select EventID
    Case #PB_Event_Gadget
      Select EventGadget()
        Case 5
          While i<=7
            a=a(i):b=-b(i)
            ur.f=ATan2(a,b)
            x1=x2:y1=y2
            x2=x1+a:y2=y1+b
            If a>0
              Gosub m1
            ElseIf a<0
              Gosub m2
            Else
              If b>0
                Gosub m3
              ElseIf b<0
                Gosub m4
              EndIf
            EndIf
            i=i+1
          Wend 
      EndSelect
  EndSelect
Until  EventID = #PB_Event_CloseWindow
End
;{Подпрограммы
m1:;+X
For k=0 To a
  l=k*|!REG3XP3!>Tan(ur)
  xt=x1+k:yt=y1+l
  StartDrawing(WindowOutput(0))
  Plot(xt,yt,col)
  StopDrawing()
  Delay(t)
  SetGadgetText(1,Str(x2))
  SetGadgetText(2,Str(y2))
Next k
Return
 
m2:;-X
For k=0 To a Step -1
  l=k*|!REG3XP3!>Tan(ur)
  xt=x1+k:yt=y1+l
  StartDrawing(WindowOutput(0))
  Plot(xt,yt,col)
  StopDrawing()
  Delay(t)
  SetGadgetText(1,Str(x2))
  SetGadgetText(2,Str(y2))
Next k
Return
 
m3:;X0/+Y
For k=0 To b
  xt=x1:yt=y1+k
  StartDrawing(WindowOutput(0))
  Plot(xt,yt,col)
  StopDrawing()
  Delay(t)
  SetGadgetText(1,Str(x2))
  SetGadgetText(2,Str(y2))
Next k
Return
 
m4:;X0/-Y
For k=0 To b Step -1
  xt=x1:yt=y1+k
  StartDrawing(WindowOutput(0))
  Plot(xt,yt,col)
  StopDrawing()
  Delay(t)
  SetGadgetText(1,Str(x2))
  SetGadgetText(2,Str(y2))
Next k
Return
;}
0
Эксперт по электронике
6570 / 3197 / 335
Регистрация: 28.10.2011
Сообщений: 12,475
Записей в блоге: 7
27.01.2013, 00:58
Программа писалась с нуля или портировалась в ранних версий бейсика?
Просто так обычно не пишут. Код такой, как будто программа не предназначена для многозадачной среды. Окно программы просто виснет, поскольку система посылает сообщения об событиях, но программа на время рисования их не обрабатывает.
Рисовать нужно, например, в отдельном потоке. Не забудьте в опциях проекта включить поддержку потоков.
PureBasic
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
Global x2=250, y2=250
 
Global Dim a(10)
Global Dim b(10)
a(0)=15.85:b(0)=38.27
a(1)=38.27:b(1)=15.85
a(2)=38.27:b(2)=-15.85
a(3)=15.85:b(3)=-38.27
a(4)=-15.85:b(4)=-38.27
a(5)=-38.27:b(5)=-15.85
a(6)=-38.27:b(6)=15.85
a(7)=-15.85:b(7)=38.27
a(8)=-35:b(8)=0
a(9)=0:b(9)=-100
a(10)=-24:b(10)=-14
 
Global col=RGB(255,0,0)
Global t=50
 
Procedure m1(a, x1, y1, ur.f)
  For k=0 To a
    l=k*|!REG3XP3!>Tan(ur)
    xt=x1+k:yt=y1+l
    If StartDrawing(WindowOutput(0))
      Plot(xt,yt,col)
      StopDrawing()
    EndIf
    Delay(t)
    SetGadgetText(1,Str(xt))
    SetGadgetText(2,Str(yt))
  Next k
EndProcedure
 
Procedure m2(a, x1, y1, ur.f)
  For k=0 To a Step -1
    l=k*|!REG3XP3!>Tan(ur)
    xt=x1+k:yt=y1+l
    If StartDrawing(WindowOutput(0))
      Plot(xt,yt,col)
      StopDrawing()
    EndIf
    Delay(t)
    SetGadgetText(1,Str(xt))
    SetGadgetText(2,Str(yt))
  Next k
EndProcedure
 
Procedure m3(b, x1, y1)
  For k=0 To b
    xt=x1:yt=y1+k
    If StartDrawing(WindowOutput(0))
      Plot(xt,yt,col)
      StopDrawing()
    EndIf
    Delay(t)
    SetGadgetText(1,Str(xt))
    SetGadgetText(2,Str(yt))
  Next k
EndProcedure
 
Procedure m4(b, x1, y1)
  For k=0 To b Step -1
    xt=x1:yt=y1+k
    If StartDrawing(WindowOutput(0))
      Plot(xt,yt,col)
      StopDrawing()
    EndIf
    Delay(t)
    SetGadgetText(1,Str(xt))
    SetGadgetText(2,Str(yt))
  Next k
EndProcedure
 
Procedure Thread(*x)
  
  While i<=7
    a=a(i):b=-b(i)
    ur.f=ATan2(a,b)
    x1=x2:y1=y2
    x2=x1+a:y2=y1+b
    If a>0
      m1(a, x1, y1, ur)
    ElseIf a<0
      m2(a, x1,  y1, ur)
    Else
      If b>0
        m3(b, x1, y1)
      ElseIf b<0
        m4(b, x1, y1)
      EndIf
    EndIf
    i=i+1
  Wend 
  
EndProcedure
 
 
OpenWindow(0, 0, 100, 500, 500, "It_new_4", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
StringGadget(1,30,457,40,20,"")
StringGadget(2,30,477,40,20,"")
TextGadget(3,10,460,20,20,"X",#PB_Text_Center)
TextGadget(4,10,480,20,20,"Y",#PB_Text_Center)
ButtonGadget(5,100,477,50,20,"Рисуй")
;}
 
Repeat
  EventID=WaitWindowEvent()
  Select EventID
    Case #PB_Event_Gadget
      Select EventGadget()
        Case 5
          
          If IsThread(Thread)=0
            Thread = CreateThread(@Thread(), 0)
          Else
            MessageRequester("", "Уже рисуется!", #MB_OK|#MB_ICONWARNING)
          EndIf
         
      EndSelect
      
  EndSelect
Until EventID = #PB_Event_CloseWindow
End
0
0 / 0 / 0
Регистрация: 26.01.2013
Сообщений: 3
27.01.2013, 01:37  [ТС]
Спасибо!
Я пустой чайник в PB.
Хотя Бейсик изучал еще 20 лет назад на Роботроне (ОС CPM)
Процедуры, потоки - это для меня пока сложно. Но, надеюсь, со временем разжую.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.01.2013, 01:37
Помогаю со студенческими работами здесь

Эмулятор
Нажимаю на запуск. Эмулятор запускается. На экране эмулятора надпись ANDROID. на черном фоне. И ВСЁ! Больше ничего нет, чтобы не писал в...

Эмулятор. На С, С++
Здравствуйте уважаемые читатели форума! У меня такой вопрос: (СРАЗУ ПРЕДУПРЕЖДАЮ Я НЕ ОЧЕНЬ ХОРОШО РАЗБИРАЮСЬ ПОКА В ЭТОМ ТАК ЧТО ОЧЕНЬ...

Эмулятор IE 6
Здравствуйте, уважаемые форумчане, ищу программу... Как-то давно натыкался на софтину, которая умеет запускать любые версии IE, начиная...

Эмулятор катализатора
вот есть мысли сделать такую штуку. кможет кто в курсе на каких машинах какой алгоритм проверки работы катализатора? зннаю на lexus gx470...

Не запускается эмулятор
Сигнатура проблемы: Имя события проблемы: APPCRASH Имя приложения: emulator-arm.exe Версия приложения: 0.0.0.0 Отметка...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Философия технологии
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, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru