[#1] Skrypt AmigaDOS i okno CON.
Witam wszystkich. Piszę sobie pewien skrypt AmigaDOS i potrzebuje Waszej pomocy. Mianowicie po uruchomieniu skryptu większość wykonywanych przez niego czynności będzie niewidoczna, ale w pewnym momencie potrzebuje wyświetlić komunikat w oknie konsoli. Nie jest to dla mnie problem bo wystarczy że napiszę polecenie typu :

Echo Pierwszy komunikat >CON:X/Y/XSize/YSize/Skrypt/WAIT/NOCLOSE/NOSIZE

W tym miejscu pada dręczące mnie pytanie, jak zrobić aby następne komunikaty trafiały również do tego okna?

Próbowałem podwójne przekierowanie >> ale nie pomaga, bo otwiera się kolejne, nowe okno. Wiem że gdy uruchomie skrypt z ikonki, po przez IconX to w ToolTypes mogę wpisać:

Window=CON:X/Y/XSize/YSize/Skrypt/WAIT/NOCLOSE/NOSIZE

Ale to sprawi, że okno otworzy się już w chwili uruchomienia skryptu, a ja tak nie chcę. Chce aby otwierało się dopiero po pewnym czasie.

Proszę o pomoc. Dziękuję.

Ostatnia aktualizacja: 07.12.2021 06:05:01 przez Ponki1986
[#2] Re: Skrypt AmigaDOS i okno CON.

@Ponki1986, post #1

Spróbuj dodać flagę AUTO do definicji okna:
Window=CON:X/Y/XSize/YSize/Skrypt/WAIT/NOCLOSE/NOSIZE/AUTO


Flaga AUTO powoduje że okno CON otworzy się dopiero kiedy coś trafi na standardowe wyjście.
1
[#3] Re: Skrypt AmigaDOS i okno CON.

@vojo, post #2

Dzięki, zapomniałem o fladze AUTO.

Dobrze, ale to raczej dalej nie rozwiązuje w pełni mojego problemu, ponieważ skrypt będzie oflagowany jako S i podpięty pod deficons, gdzie ustawione będzie aby uruchamiał się z konsoli Shell bez okna dialogowe. Czyli że mój skrypt będzie przyjmował argumenty za pomocą .key .ket .bra, więc w sieci znalazłem takie coś:

Zamiast używać nowego okna do wyjścia, możesz wysłać je do aktualnie wybranego okna, używając * zamiast CON: x/y/szerokość/wysokość/tytuł.


Jeżeli dobrze rozumiem to pierwszy komunikat powinien wyglądać w stylu:

Echo Bla bla bla >CON:...

natomiast następne

Echo Bla bla bla >*

Czy tak?

Ostatnia aktualizacja: 07.12.2021 08:53:14 przez Ponki1986

Ostatnia aktualizacja: 07.12.2021 08:53:52 przez Ponki1986
[#4] Re: Skrypt AmigaDOS i okno CON.

@Ponki1986, post #3

Jeżeli dobrze rozumiem to pierwszy komunikat powinien wyglądać w stylu:


nie wiem czy dobrze rozumiesz, ale strona, z której przytoczony przez ciebie cytat pochodzi, is a centralized place to find "official" information about AmigaOS 4.0 and beyond, tak że nawet jeśli rozumiesz dobrze, niekoniecznie musi działać. Sam już nie raz się nadziałem, bo *ujki nigdzie w nagłówku nie zaznaczają, że ta cała pieprzona dokumentacja to jest NG. Ale wystarczy pamiętać, że czerwona kulka to syf i nieprawdziwa Amiga, bo prawdziwa Amiga to tęczowy ptak, i już sam jej widok powinien budzić podejrzenia.

Ostatnia aktualizacja: 07.12.2021 10:13:48 przez snajper
[#5] Re: Skrypt AmigaDOS i okno CON.

@Ponki1986, post #3

Z tego co sprawdziłem da się tak zrobić jak chcesz.

Przygotuj skrypt pomocniczy "Pom" z jedną linijką:

Copy T:Log *

Teraz w skrypcie głównym po prostu dopisuj do pliku "T:Log" komunikaty.

.Key IMIE/A
.Bra {
.Ket }

NewShell FROM=Pom WINDOW=CON:0/0/640/200/Konsola/AUTO

Echo "Witaj {IMIE}!" >T:Log
Echo "Komunikat" >>T:Log

Przynajmniej dla tego przykładu zadziałało. Przepraszam - trzeba to jeszcze poprawić. Instrukcja Copy T:Log * kopiuje plik tylko raz.

Ostatnia aktualizacja: 07.12.2021 10:33:15 przez Hexmage960
[#6] Re: Skrypt AmigaDOS i okno CON.

@Ponki1986, post #1

Skoro masz już rozwiązanie, to podepnę się pod temat - czy jest w AmigaDOS coś takiego jak timer/interval, który pozwalałby uruchomić coś w pętli, co np. sekundę, do osiągnięcia określonego warunku?
[#7] Re: Skrypt AmigaDOS i okno CON.

@_arti, post #6

Tak, jest to możliwe. Przykład:

LAB Etykieta
IF NOT EXISTS T:Plik
WAIT 5
SKIP BACK Etykieta
ENDIF
1
[#8] Re: Skrypt AmigaDOS i okno CON.

@Hexmage960, post #5

Dzięki. Ale teraz pytanie, czy polecenie EndCLI lub EndShell wykonane w głównym skrypcie zamknie owe okno?
[#9] Re: Skrypt AmigaDOS i okno CON.

@Ponki1986, post #8

Hej.

To okno NewShell może być raczej zamknięte z jej poziomu, tzn. w skrypcie "Pom" musi wystąpić EndShell.

Ja myślę, że warto pozostać przy normalnym wykonywaniu skryptu np. z IconX i WINDOW=CON: i wysyłaniu komunikatów ECHO w zwyczajny sposób do bieżącej konsoli.

Problemem jest tylko przekazanie parametrów .KEY. Póki co nie udało mi się to, ale i na to jest rozwiązanie - można zastosować np. zmienne środowiskowe, którym przypisujemy odpowiednie wartości.

Pozdrawiam.
[#10] Re: Skrypt AmigaDOS i okno CON.

@Hexmage960, post #5

Hexmage960 sprawdziłem Twoje rozwiązanie i faktycznie działa. Zrobiłem to tak, że pierwszy, główny skrypt przyjmuje argumenty po przez .key, generuje zmienne do ENV oraz uruchamia drugi skrypt z użyciem polecenia NewShell w oknie docelowym. Drugi skrypt natomiast wyświetla w pętli komunikaty z użyciem zmiennych utworzonych przez ten pierwszy, do momentu aż jedna ze zmiennych będzie miała konkretną wartość, w tedy polecenie EndShell zamyka okno.
[#11] Re: Skrypt AmigaDOS i okno CON.

@Ponki1986, post #10

Cieszę się, że rozwiązanie działa.

Tak naprawdę, żeby rozwiązać to zagadnienie wystarczyłby dosłownie jeden program podobny do NewShell, który otwierałby okno konsoli CON, a następnie wykonywałby skrypt z argumentami w tej konsoli (albo wyświetlałby dane z pliku na bieżąco jak z urządzenia PIPE).

EXECUTE skrypt >CON: niestety nie przekierowuje wyników skryptu do nowej konsoli.

Z kolei NewShell FROM="Skrypt" nie pozwala podawać parametrów skryptu.

Być może znajdziesz program do tego zadania na Aminecie.

Ostatnia aktualizacja: 07.12.2021 21:09:29 przez Hexmage960
[#12] Re: Skrypt AmigaDOS i okno CON.

@Hexmage960, post #11

Jeżeli chodzi o skrypty z ikonek to z CLICon można cuda na kiju...
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem