Двухосевой станочек
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Двухосевой станочек
Скорее всего создаётся копия класса/метода, которая после выполнения уничтожается. Точнее можно сказать после изучения текста, но честно говоря неохота время тратить.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- elephant007
- Мастер
- Сообщения: 857
- Зарегистрирован: 18 ноя 2012, 13:12
- Репутация: 332
- Откуда: Сибирь, Томск
- Контактная информация:
Re: Двухосевой станочек
потому что ты же не объявляешь отдельно переменную pos. это функция класса. Когда создал от класса объект stX можно обратится к унаследованной им функции stX.pos. Обратится в программе, а не в объявлении функции.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Двухосевой станочек
Это как?UAVpilot писал(а):Скорее всего создаётся копия класса/метода, которая после выполнения уничтожается. Точнее можно сказать после изучения текста, но честно говоря неохота время тратить.
Есть два объекта одного класса, у них есть фунукция, которая хочет поменять параметр внутри класса... и все...
Хорошо, как тогда поменять параметр объекта класса из его функции?
Как сделать get или set?
Но функция же вызывается уже после создания объекта?elephant007 писал(а):потому что ты же не объявляешь отдельно переменную pos. это функция класса. Когда создал от класса объект stX можно обратится к унаследованной им функции stX.pos. Обратится в программе, а не в объявлении функции.
(stX.pos - это не функция, это парамерт float...)
А, точно исходники вот тут:
https://github.com/cnc-club/IC
Вот тут задается Stepper:
https://github.com/cnc-club/IC/blob/mas ... pperIC.cpp
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Двухосевой станочек
Похоже это ваше ардуино чудит...
tst.cc
tst.cc
Код: Выделить всё
#include <stdio.h>
class Stepper {
public:
Stepper(float ppm, int step_pin, int dir_pin, int home_pin, int homing_direction);
int dir_inv;
void home();
void setSpeed(float mmin);
int step(float mm);
float pos;
long steps;
float ppm;
float home_postion;
int dir_pin;
int step_pin;
int home_pin;
int homing_direction;
private:
unsigned long step_delay; // delay between steps, in ms, based on speed
unsigned long last_step_time;
};
Stepper::Stepper(float ppm, int step_pin, int dir_pin, int home_pin, int homing_direction)
{
pos = 0;
steps = 0;
dir_inv = 1;
step_pin = step_pin;
dir_pin = dir_pin;
home_pin = home_pin;
home_postion = 2;
homing_direction = homing_direction;
ppm = ppm;
// pinMode(step_pin, OUTPUT);
// pinMode(dir_pin, OUTPUT);
// pinMode(home_pin, INPUT);
}
int Stepper::step(float mm)
{
pos += mm;
return 0;
}
void Stepper::home()
{
pos=0;
steps=0;
}
void Stepper::setSpeed(float mmin)
{
step_delay = 5;
}
Stepper stX(10, 8, 7, 15, -1);
int main(void) {
printf("pos=%f\n", stX.pos);
stX.step(123);
printf("pos=%f\n", stX.pos);
}
Код: Выделить всё
$ g++ tst.cc
$ ./a.out
pos=0.000000
pos=123.000000
$
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Двухосевой станочек
Не, это я чудил.
Все оказалось, как ты и писал, только тогда я эту твою фразу не понял:
Блин два дня угробил, чтобы до этого дойти...
Все оказалось, как ты и писал, только тогда я эту твою фразу не понял:
Ненавижу Си . У меня в функцию передавался stX, но передавался как Stepper, а не Stepper*, в итоге, создавался новый объект класса Stepper, который делал шаги, записывал изменение положения внутри себя... и благополучно удалялся .UAVpilot писал(а):Скорее всего создаётся копия класса/метода, которая после выполнения уничтожается.
Блин два дня угробил, чтобы до этого дойти...