LinuxCNC - dziwny komunikat po pomiarze długości narzędzia

Po pomiarze narzędzia pojawia się komunikat

Dyskusje dotyczące działania obsługi programu LinuxCNC
Awatar użytkownika

tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 3
Posty: 7861
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

Re: LinuxCNC - dziwny komunikat po pomiarze długości narzędzia

#11

Post napisał: tuxcnc » 17 maja 2020, 13:32

Jeszcze raz.
A comment of the form (PROBEOPEN filename.txt) will open filename.txt and store the 9-number coordinate consisting of XYZABCUVW of each successful straight probe in it. The file must be closed with (PROBECLOSE). For more information see the Comments Section.
(http://linuxcnc.org/docs/2.6/html/gcode ... :G38-probe)
Wynika z powyższego, że plik utworzony przez PROBEOPEN jest pamięcią pomiarów, uzupełnianą po każdym POMIARZE, a nie po każdym odczycie.
Należy wykonać taką sekwencję pomiarów i odczytów, aby stwierdzić czy faktycznie jest jakaś kolejka, bo może jej wcale nie ma, a komunikat o błędzie jest kompletnie od czapy, co się przecież czasem zdarza.
Czyli np. uruchomić zapis do pliku, zrobić kilka pomiarów na pewno różniących się wynikiem, zrobić kilka odczytów i porównać z zawartością pliku.
Szczerze mówiąc nie rozumiem po jasną cholerę odczyty miałyby być kolejkowane i jaki miałoby mieć sens odczytywanie nieaktualnych pomiarów ...
Takie kwiatki czasem pozostają po porzuconych pomysłach.




Autor tematu
drzasiek90
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 8
Posty: 1760
Rejestracja: 25 kwie 2016, 11:58
Lokalizacja: Jodlowa
Kontakt:

Re: LinuxCNC - dziwny komunikat po pomiarze długości narzędzia

#12

Post napisał: drzasiek90 » 17 maja 2020, 14:42

Zrozumiałem jak działa PROBEOPEN ale nie rozumiem co mi to da, skoro maszyna pracuje i za każdym razem dostaje narzędzie inne, różniące się znacznie długością od poprzedniego o procedura działa poprawnie. Jeśli plik utworzony przez PROBEOPEN jest pamięcią pomiarów to niech sobie jest, ale ja go nie tworzę więc takowej pamięci nie mam. Zrobiłem test czy pomiary zapisują się do "jakiegoś tajemniczego bufora FIFO" i test wykazał, że tak nie jest. Mogę wykonać test z PROBEOPEN ale dalej nie da mi to odpowiedzi o jaką kolejkę chodzi.

Awatar użytkownika

tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 3
Posty: 7861
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

Re: LinuxCNC - dziwny komunikat po pomiarze długości narzędzia

#13

Post napisał: tuxcnc » 17 maja 2020, 15:43

drzasiek90 pisze:
17 maja 2020, 14:42
ale dalej nie da mi to odpowiedzi o jaką kolejkę chodzi.
Może w ogóle nie tej odpowiedzi szukasz ...
Błąd jest idiotyczny, sam pomysł żeby wyniki pomiarów kolejkować jest idiotyczny, nic tu nie ma sensu ani logiki.
Zapewne ktoś kiedyś wpadł na jakiś cudowny pomysł, który się potem okazał idiotyczny i został porzucony, a śmiecie w kodzie pozostały ...
Zajrzałem do kodu i znalazłem taką linię :

Kod: Zaznacz cały

int GET_EXTERNAL_QUEUE_EMPTY() { return true; }

To jest definicja funkcji odpowiedzialnej za wyświetlanie tego debilnego komunikatu.
Ta funkcja nic nie robi i ZAWSZE zwraca tą samą wartość.
Jeśli tak jest w istocie, to zapewne błąd dostajesz bo komputer Ci się sypie, albo program zainstalowałeś z uszkodzonego nośnika.


Autor tematu
drzasiek90
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 8
Posty: 1760
Rejestracja: 25 kwie 2016, 11:58
Lokalizacja: Jodlowa
Kontakt:

Re: LinuxCNC - dziwny komunikat po pomiarze długości narzędzia

#14

Post napisał: drzasiek90 » 17 maja 2020, 16:24

Dzięki za naprowadzenie.
Funkcja ta zdefiniowana jest 2 krotnie:

Pierwszy raz w pliku gcodemodule.cc

Kod: Zaznacz cały

int GET_EXTERNAL_QUEUE_EMPTY() { return true; }
drugi raz w pliku enccanon.cc

Kod: Zaznacz cały

int GET_EXTERNAL_QUEUE_EMPTY(void)
{
    flush_segments();

    return emcStatus->motion.traj.queue == 0 ? 1 : 0;
}
Nie wiem jeszcze który z tych plików się kompiluje.

A za wyświetlenie tego komunikatu odpowiada zapewne kod z pliku rs274ngc_pre.cc

Kod: Zaznacz cały

if (settings->probe_flag) {
	CHKS((GET_EXTERNAL_QUEUE_EMPTY() == 0),
	     NCE_QUEUE_IS_NOT_EMPTY_AFTER_PROBING);
	set_probe_data(&_setup);
	settings->probe_flag = false;
    }

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „LinuxCNC (dawniej EMC2)”