Terminál programozása C-ben

Fórumok

Sziasztok!

Felvetődött egy olyan problémám, hogy szükségem lenne egy saját terminál programra, ami USB alól kezelget majdan különböző port-port-protokolokat. A segítséget a "megjelenítés"-hez szeretném kérni. Szeretnék úgy kiírni a terminálra, hogy be tudjam mindig állítani hogy hányadik sor és hányadik oszlopra tudjam kiírni az adott karakteremet.Ha jól tudom, ezt egy egyszerű printf() fgv-nyel nem lehetséges.

Előre is köszi
SYN + ACK

Hozzászólások

Lehet curses nélkül is sima printf-t használva escape szekvenciákkal, ha elég az, ha a saját gépen a kedvenc terminálban jól fut.

Es meg hordozhato is.

De ha totalisan nem vagy hajlando megtanulni a curses programozasat (noha tenyleg nagyon egyszeru), akkor kezdd a kodot egy


system("tput clear") 

paranccsal, majd amikor pozicionalni akarsz, akkor


system( "tput cm OSZLOP SOR") 

formaban rakod a kurzort ahova akarod :-)

Megjegyzes 1: nem tomi66-nak szol
Megjegyzes 2: baromi ronda megoldas, en kivagnam a kodot, ha en lennek a megrendelo :-)
Megjegyzes 3: man terminfo termcap

> Es meg hordozhato is.

Khm. Amikor nekem kellett pár éve egy becsületesen crossplatform cuccot írnom, végül arra jutottam, hogy írtam egy kicsi és egyszerű curses-replacementet.

Igaz, hogy akkoriban még AIX4, SunOS 5.2, és FreeBSD 2.2.8 voltak a játékosok, azóta lehet, hogy javult a helyzet...

moravas
hello!

játszottam kicsit az ncurses.h álltal kinált fgv-kkel, de faladtam amikor a példaprogram az X nélküli terminálban futott(ctrl+alt+F2) de a hagyományos X álltal kezelt terminálban nem.
A példaprogi:
#include

int main () {
initscr (); /* a curses mod inditasa */
printw ("Hello Vilag !!!"); /* kiirjuk a megfelelo szoveget */
refresh (); /* megjelenitjuk a szoveget a "valodi" kepernyon */
endwin (); /* Kilepes a curses modbol*/

return 0;
}
Ha esetleg valakinek van valami ötlete hogy miért nem megy, akkor azt megköszönném.
Üdv

slang libraryt használtam ilyesmire régebben.

SLsmg_gotorc és társai valók erre, de még sokkal látványosabb dolgokat is könnyű vele összehozni. Például Midnight Commander felülete is slang.

Csak most kapcsolódtam be, sok mindent leírtatok, de még pár dolog:

  • Megjelenítéshez én ezt nézegettem annak idején:
    man console_codes
  • Különböztessük meg a parancssoros és az interaktív programokat; utóbbi esetben érdemes a terminál kanonikus módját kikapcsolni, hogy ne buffereljen enterig. termios.h, tcsetattr(), ICANON. Kilépéskor vissza. Ezt elvégzi az ncurses is, ha használod.
  • Funkcióbillentyűk, kurzornyilak, stb. nagyon máshogy jönnek xterm-ről, rxvt-ről, Linux konzolról - ezt vagy kezelni kell, vagy ncurses-t használni inkább. xterm miatt még az smkx/rmkx módot is kapcsolgatnom kellett, valami billentyű nem működött enélkül...

A conio.h (a bin86 csomag része) mennyire használható?
Egyáltalán van értelme használni?

Linux alatt semmiképpen nem érdemes coniot használni, ez igaz.
De wines gépen karakteres felületen MinGW mellett, ott igenis van értelme. Persze inkább a conio2:

http://conio.sourceforge.net

Ezt persze alapból nem tartalmazza a MinGW, de itt egy kis segítség, ha valaki MinGW-re vetemedik és conio2-öt szeretne:

http://szit.hu/wiki/doku.php?id=c:mingw_conio#coniosfnet