Linux, DosBox i /dev/ttyS0
kwiecień 28, 2008 — morituriusJak wiadomo - programista nie pracoholik - grać musi. Co należy jednak zrobić gdy jego sprzęt nie daje mu do końca takiej możliwości?
Wbrew pozorom, nie chodzi wcale o granie w super-wypasionego MMORPG’a - chodzi o grę starą i niemalże zapomnianą: The Settlers 2. Jaki więc mam problem skoro bóg zesłał programistów, którzy napisali DosBOX’a nawet na Linuksa?
Problemem jest gra na dwóch graczy. Każdy kto grał w The Settlers 2 wie o co chodzi - trzeba podłączyć 2 myszki, z czego co najmniej jedna musi być na porcie szeregowym (COM). Niby nic, ale co jeśli nie ma takiego portu? ^^ Np. ja w moim laptopie go nie mam i tutaj zaczynają się schody.
Poszperałem trochę w internecie i znalazłem informację, że porty szeregowe w linuksie reprezentowane są przez pliki /dev/ttyS* ( * - numer portu 0-3 [odpowiednio COM1-4] ). Istotne też, aby pamiętać, że ‘S’ ma być duże
Znalazłem taki port u siebie w katalogu /dev jednak nie mam pojęcia co mogę z tym zrobić dalej skoro nie mam takiego portu fizycznie? ^^
Napisałem nawet program który czyta dane z portu myszy ( /dev/input/mouse* ) i wysyła je na /dev/ttyS0 ale niestety sam DosBOX nie chce czytać tego portu zwracając przy starcie komunikat o błędzie:
Serial1: Opening /dev/ttyS0 tcgetattr failed with error 5.
Nie mam zielonego pojęcia co oznacza kod 5 bo nie mogłem znaleźć tego w internecie, ale pewnie ma to związek z brakiem fizycznego portu rs232 w moim laptopie.
Nasuwa mi się na myśl tylko jedna rzecz - jakiś wirtualny port szeregowy. Pytanie tylko czy to podziała… Może ktoś ma jakiś pomysł co do tego? Jestem otwarty na pomysły ![]()
kwiecień 28, 2008 at 9:39 przed południem
Kod 5 to Input/output error. Żeby to sprawdzić wystarczy napisać programik w stylu:
errno = 5;
perror (”");
Najwyraźniej więc masz rację i chodzi o brak portu. Nie mam przy sobie Linuksa akurat, ale zastanawiam się, czy nie możnaby wywalić oryginalnego /dev/ttyS0 i stworzyć nowego jako hardlinka do /dev/input/mouse
kwiecień 28, 2008 at 3:11 pm
@Xion: to nie przejdzie. W configu DosBOXa mogę sobie podać jaki port ma czytać i na linuksie jest tak fajnie, że mogę podać mu bezpośrednio ścieżkę do /dev/input/mouse*
Bo tam jest kilka plików, mi zależy głównie na jednym - który otrzymuje dane od jednej konkretnej myszy. Jest też /dev/input/mice który otrzymuje dane od wszystkich myszy
kwiecień 28, 2008 at 3:50 pm
@Xion: tak jak myslalem, wywala error 25: Inappropriate ioctl for device. Wiec tak sie nie da