Segitseget szeretnek kerni C++ BUILDER 6 -ban. A kerdesem az lenne hogyan tudok soros portra (rs232/rs484) karaktert kikuldeni, pl.: akkor ha egy adott gombot a grafikus kepernyon lenyomok.
printf: stdout alapbol bufferelt, csak akkor irja ki a dolgot, ha 4096 vagy akarhany byte osszegyult, vagy ujsor jon. megoldas: idonkent fflush(stdout); . ld meg setbuf.
Tökéletesen egyetértek veled! Nálam ez az INB, OUTB egyfajta kényszermegoldás volt.
Nagyon érdekelne, hogyan kell ezt "szabályosan" megcsinálni. Valami konkrét netcímet tud valaki?
Vagy akár ide is beidézhetne valamit, hogyan kell piszkálni pl. a printerportot (I/O).
Van még egy olyan problémám, hogy a programban vanak printf()-ek. Ez néha(?) úgy viselkedik, hogy előbb lefut a program, majd mikor kilép akkor írja ki a szöveget ami a printf()-ekben van.
A TCL-t meg ezeket már nézegettem, hülyültem is velük, de C -vel lenne az igazi. QT-s, GTK-s megoldás is elfogadható lenne számomra! Fogékony vagyok (bár nem akarom elkiabálni), úgyhogy mindenféle segítséget örömmel fogadok!
Jesszusom, most olvastam meg egy par hozzaszolast, es csak a nyomatekositas kedveert, LINUX PROGRAMBAN NEM HASZNALUNK OUTB & INB RUTINOKAT !!!!!! Azert talaltak ki a kerneldrivereket, hogy az outb es inb szintet lekezeljek es kivulre szabvany feluleteket adjanak, igy lesznek karakteres, blokkos, halozati... ezkozok. Ez Linux es nem dos.
Miert akarjatok ilyen csunya dosos modszereket hasznalni ( outb & inb ) ? Szerintem biztos van egy atlagos linux kernelben LPT driver, ami csinal egy /dev/lp1 - vagy valami hasonlo - eszkozt, amit open;read;write;close es ioctl fuggvenyekkel lehet babralni. (szerintem) Ez egy paranoid multitaszkos rendszer, amiben nem iocimek vannak, hanem driverek, modulok es eszkozok.
Egyebkent en ilyen esetekben ugy szoktam eljarni, hogy megnezem hogy egy gyari program mit csinal. pl. regen soros portnal megkerestem a minicom forrasaban hogy hogyan hasznalja, es utana mar nekem is ment.
Ha meg nincs olyan driver milyen kell, akkor az a legtisztabb megoldas, ha az ember ir egy kernel modult, nem pedig programmal iocimekre kiirkalni, mert az olyan snassz.
Nem vagyok egy C guru, ezért csak óvatosan tippelek: szerintem a mem[] változód signed-ra lehet definiálva, ezért tiltakozik a legfelsö bit ellen. Próbáld meg unsigned-nek megadni, hátha...
Ez kiírja hexában a mem[pc] tartalmát a képernyőre két számjegyen ábrázolva. Az a baj, hogy ez 7F felett már nem működik. 7F felett valami ilyesmi jelenik meg: FFFFFF00. Nem pont ez, de valami ilyesmi. Ha a mem[pc] -n végrehajtok egy AND műveletet: (0x000000ff & mem[pc]), akkor csak
00-FE -ig működik. Az FF már FFFFFF00 -ként (ha jól emléxem) jelenik meg.
Légyszi segítsetek!
Előre is köszi!
Kéne egy kis segítség. Egyik DOS-os progimat akarom átírni linuxra, mely progi ír és olvas a párhuzamos portra/ról. Ezt linux alatt hogyan lehet megjátszani freepascal-ban vagy c-ben (előbbi jobb lenne).
gcc-nek (legalabbis nalam) nem olyan fontos az include.... pl. stdio.h nelkul megy a printf... meg hasonlok. de ha valami a .h-ban van definialva (struct, allando) az mar nem megy #include nelkul...