kategoria: ANSI C
[#1] Port szeregowy - wysyłanie tekstu
zrobiłem sobie jakiś czas temu kabelek null-modem aby poeksperymentować z połączeniem między Amigą na MiniMaciem przez port serial. Udało mi się finalnie spiąć oba komputery z sobą (null-modem 25-9, adapter USB-RS232 na PL2303). Po odpaleniu programu Term na MOSie i Amidze wszystko śmiga jak trzeba (tzn. to co napiszę na Amidze, pokazuje się w oknie Terma na MOSie i vice versa). Rozochocony tym sukcesem postanowiłem napisać krótki program (a raczej przepisać go z Amiga RKM Devices Manual) który wysyła na port serial tekst "Amiga ". Byłem pewien, że po jego skompilowaniu i uruchomieniu na Amidze, ten sam tekst zobaczę pod Termem na MOSie. I tu niespodzianka. Owszem tekst się wypisuje, ale nie "Amiga " a coś takiego: "fž†ž ~f ". I nie jest to wina Terma, bo po skompilowaniu i uruchomieniu pod MOSem programu nasłuchującego port serial, wynik jest dokładnie taki sam! O co tu kaman ?

Link do programu wysyłającego tekst "Amiga " na port szeregowy. W programie zamieniłem wywołanie

if (SerialMP=CreateMsgPort())


na

if (SerialMP =(struct MsgPort *) CreatePort (0,0));

bo inaczej LatticeC wywalał się w trakcie kompilacji. Ale czy to może mieć jakieś znaczenie ?
[#2] Re: Port szeregowy - wysyłanie tekstu

@MarX, post #1

który wysyła na port serial tekst "Amiga ". Byłem pewien, że po jego skompilowaniu i uruchomieniu na Amidze, ten sam tekst zobaczę pod Termem na MOSie. I tu niespodzianka. Owszem tekst się wypisuje, ale nie "Amiga " a coś takiego: "fž†ž ~f ".


Wygląda to na pierwszy rzut oka, jakby Amiga wysyłała z różną szybkością niż niż Mac Mini odbiera. Sprawdź ustawienia portu szeregowego. Mogą tu mieć znaczenia też takie ustawienia jak kontrola trasnmisji (RTS/CTS vs. XON/XOFF) ale najbardziej prawdopodobne jest złe ustawienie baud rate (któraś strona wysyła szybciej/wolniej niż druga odbiera).

LatticeC


Błagam, czy my żyjemy w 1985? Weź jakiś nowoczesny kompilator a zaoszczędzi Ci to masę kłopotów. VBCC 4 life.
[#3] Re: Port szeregowy - wysyłanie tekstu

@strim_, post #2

@strim_: strzał w dziesiątkę - chodziło o baud rate! Wszedłem w ustawienia portu szeregowego na Amidze i wszystko było już jasne. Wysyłałem z BPS rate 9600, a w Termie pod MOSem miałem ustawione 19200. Dzięki za szybką i konkretną odpowiedź.

Co do kompilatora to czy VBCC uruchomi się na Amidze 600 z 2 MB pamięci ? Jeśli tak, to już jestem nim bardzo zainteresowany :)


Ostatnia aktualizacja: 12.04.2014 21:38:28 przez MarX
[#4] Re: Port szeregowy - wysyłanie tekstu

@MarX, post #3

Co do kompilatora to czy VBCC uruchomi się na Amidze 600 z 2 MB pamięci ? Jeśli tak, to już jestem nim bardzo zainteresowany :)


Szczerze mówiąc to nie testowałem na tak ograniczonej konfiguracji, ale powinien się uruchomić. Na A600 z ACA630 + AmgiaOS 3.1 na 100% działa :). W razie czego zgłoś błąd w nowym wątku albo bezpośrednio do autora. Chętnie poprawia błędy/dodaje usprawnienia.


Ostatnia aktualizacja: 12.04.2014 22:21:21 przez strim_

Ostatnia aktualizacja: 12.04.2014 22:23:31 przez strim_
[#5] Re: Port szeregowy - wysyłanie tekstu

@strim_, post #4

Szczerze mówiąc to nie testowałem na tak ograniczonej konfiguracji


Właśnie taki podtekst miało moje pytanie o VBCC. Zapewne nie zadziała na prawie nagiej A600 lub na A500 z dodatkowym flopem. A w tej chwili to są moje maszyny deweloperskie. Co do LatticeC to nie mogę na niego narzekać. Jak na możliwości tak old-schoolowego sprzętu spisuje się rewelacyjnie.
[#6] Re: Port szeregowy - wysyłanie tekstu

@MarX, post #5

Zapewne nie zadziała na prawie nagiej A600 lub na A500 z dodatkowym flopem.


Znaczy, developujesz bez dysku twardego?

Ja rozumiem, że oldskool i w ogóle, ale nie wiem po co sobie życie utrudniać. Sam dysk twardy podniesie Ci produktywność jakieś 100x.

VBCC sam w sobie nie ma wygórowanych wymagań, ale całe środowisko developerskie na 1 dyskietce na pewno się nie zmieści... Poza tym, zdajesz sobię sprawe z faktu, że możesz VBCC zainstalować pod MOSem i do niego target AmigaOS 3 (w ten sposób możesz kompilować programy na klasyka spod MorphOSa)?


Ostatnia aktualizacja: 13.04.2014 11:52:57 przez strim_
[#7] Re: Port szeregowy - wysyłanie tekstu

@strim_, post #6

Znaczy, developujesz bez dysku twardego?


Spokojnie, nie jest ze mną aż tak źle . Mam CFkę w A600 i dodatkowy 1 MB RAMu. Z tego co wyczytałem VBCC wymaga minimum procesora 020, więc odpada. Narazie nic poważnego nie programuję, a Lattice, z powodu właśnie swojej starości i niewielkich rozmiarów (oraz niewielkich wymagań) jest naprawdę OK. Z tym kompilowaniem dla AOS3 pod MOSem to fajna sprawa, będę musiał to obadać, chociaż w tej chwili zależy mi najbardziej na tym aby programy uruchamiały się pod "AmigaOS 1.3" (ciekawe co na to Jubi )
[#8] Re: Port szeregowy - wysyłanie tekstu

@MarX, post #7

Hej,

mozesz jeszcze rozwazyc przygotowanie srodowiska do cross compilacji na PC z Linuxem (dla jezyka c/c++). Ja z tego korzystam i sobie chwale.
[#9] Re: Port szeregowy - wysyłanie tekstu

@MarX, post #7

MOS to mos, kompiluj w SAS C na mosie po prostu.
[#10] Re: Port szeregowy - wysyłanie tekstu

@MarX, post #7

Z tego co wyczytałem VBCC wymaga minimum procesora 020, więc odpada.


Hmm, jest możliwe że sam kompilator wymaga 68020, natomiast potrafi generować kod dla 68000 (nawet pod AmigaOS 1.3). Wiem bo napisałem kilka programów, które kompiluje vbcc, a które działają na 68000.

Z tym kompilowaniem dla AOS3 pod MOSem to fajna sprawa, będę musiał to obadać, chociaż w tej chwili zależy mi najbardziej na tym aby programy uruchamiały się pod "AmigaOS 1.3" (ciekawe co na to Jubi )


Można to bez problemu osiągnąć, sam mam pod AmigaOS 3.1, pod MorphOSem i pod Linuxem zrobiony taki setup z VBCC (generujący binarki pod 68000 OS 1.3). Niewątpliwą zaletą VBCC jest to, że można mieć takie samo środowisko pod różnymi systemami (pod Windowsem - patrz asmanowy kurs w papierowym PPA, pod Unixami - patrz artykuł o kross-kompilacji w dziale programy).

@michal_zukowski
MOS to mos, kompiluj w SAS C na mosie po prostu.


I jaka miałaby być zaleta użycia starego SAS C nad nowym vbcc pod MOSem?


Swoją drogą niezły offtop się tu zrobił, może by nam jakiś moderator wydzielił go do osobnego wątku.



Ostatnia aktualizacja: 13.04.2014 18:52:38 przez strim_
[#11] Re: Port szeregowy - wysyłanie tekstu

@strim_, post #2

Jeszcze wracając do tematu. Napisałem sobie prosty odbiornik (uruchamiany na MOSie) i nadajnik (uruchamiany na Amidze). Nadajnik wysyła po RSie string "Amiga" do odbiornika. Odbiornik (MOS) niczego nie odbiera... cisza. Wchodzę na obu kompach do Terma i sprawdzam czy kompy się widzą. Okazuje się, że tak (mogą do siebie "pisać"). Wychodzę z Terma na obu kompach i próbuję jeszcze raz uruchomić moje dwa mini programy. I tym razem (o dziwo) odbiornik poprawnie reaguje na string nadany przez nadajnik.

To dziwne, że dopiero po zestawieniu połączenia i zwolnieniu go przez Terma (na obu kompach) moje programy do komunikacji zaczynają działać. Najpierw wydawało mi się, że może struktury IOExtSer różnią się między sobą na MOSie i Ami. Jednak po wyświetleniu wartości każdego z pól tej struktury, okazało się że są identyczne

I tu zaczynają się schody. Jak mam zainicjalizować połączenie, aby moje programy z marszu się widziały (a nie po skomunikowaniu się wcześniej przez Terma) ?
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