Fájl hangjelekké kódolását-dekódolását milyen bonyolult leprogramozni? (bővebben lent)
Volt például régen a Commodore64, hangkazettára ki lehetett menteni programokat, melyeket vissza lehetett játszani bele, magnóról.
Ilyen hang kódolást/dekódolást mennyire volt bonyolult megvalósítani?
Az algoritmusa mennyire egyszerű ennek?
Itt-ott lehet találni neten megvalósításokat, csak azok kissé túl terjengősek.
Elvileg itt egy egyszerű megvalósítás (Python-ban), nekem nem akar működni Python 3 alatt:
Itt pedik egy Pascal-megvalósítás, melyről azt gyanítom, hogy régebbi Pascal-hoz íródott és Free Pascal alatt történő lefordítást nem tudom megoldani:
Ezeknél mi lehet a hiba (ha egyszerű hiba van)?
Ha valaki tud linkelni egyszerűbb, jól működő kódot akár C++, akár bármilyen nyelven, érdekelne.
Köszönöm a választ.
A technológiát napi használatra én is eleve alkalmatlannak tartottam, csak ez a módszer, maga az algoritmikus megvalósítás volt, ami foglalkoztatott.
Azon a szinten érdemes is vele foglalkozni.
Itt van egy hasonló, artisztikus célzatú projekt:
Meg itt egy másik:
Ez utóbbin elég jól megfigyelhető a header képen /felül fehér háttér/, hogy a beolvasott analóg jelből hogy válik szép, tisztán átbillenő négyszögjel, ami már egy számítógép számára is feldolgozható.
Erre a jeltisztításra egy rafinált kis áramkör, az un. smitt trigger kiválóan megfelel:
Itt is egy kép:
Az első linken még el is lehet olvasni három byte-ot az enkódolt szövegből.
Azt tudni kell, hogy, bár ez a tárolási forma hallatlanul egyszerű, hardveresen és szoftveresen is nagyon könnyű a megvalósítása, de mindenképpen igényli valamilyen hibajavító algoritmus beépítését, mert anélkül egy hosszabb adatmennyiség, pl. 10-20 kB az életben nem olvasható be a tárolóeszközről, vagy csak hihetetlenül lassan. De akkor persze úgy is kell megtervezni mind a hardvert, mind a szoftvert, hogy az írási, olvasási sebesség állítható legyen.
Plusz ehhez még ki kell találni valamilyen tárolási formátumot, valami fájlrendszert is.
Ha van egynél több géped, akkor két jack dugó és egy darab kábel segítségével összetolhatodd őket a hangkártyájukon keresztül és írhasz szoftvert az adatátvitelre.
A gép hangkártyájának a kimenetét kell a B gép HK-jának bemenetével összekötni. Full duplex, vagy fél duplex átvitelhez mindkettőt mindkettővel. :D
Így egyéb hardver nélkül is megvalósíthatod a dolgot fizikailag, pusztán szoftver írásával.
Na itt egy remek kép, ezen nagyon jól látszik, hogy a tisztított jelen hogy különülnek el az egyesk és a nullák:
Nagyon szépen köszönöm mindkét választ!
Azt én is gondoltam, hogy szükséges valamiféle hibajavítás, elég csak egy kis szalag-megnyúlás stb, valamint a modemes kommunikációban is volt anno beépített hibajavítás.
Megvisel, hogy én kapásból nem tudok ilyet leprogramozni, bár ez csak nosztalgiázni meg érdekességként jó, de akkor is remek gyakorlás.
Nagyon jó, hogy ennyire érted a témát.
Csináltam egy kezdeményt, freepascalban, itt megtalálod:
Ez meg a progi kimenete:
Az "instring" nevű változóban lévő string karaktereit átalakítja byte-tá, azután felbontja a byte-ot bitekre, ezeket letárolja egy másik változóban, a "bitString"-ben.
Ez egyébként fölösleges lépés, csak azért tettem bele, hogy könnyebbewn megértsd a dolgokat.
Majd végül ezt az egyesekből és nullákból álló bitstringet végigolvassa és a tartalma szerint kirajzolja egy bitmap formátumú képfájlba.
Ez az fsk_dem01.bmp
A bitstringet is ki lehet nyerni a programból.
Ahhoz így kell meghívni: fsk_demo.exe >bitstr.txt
Ez csak egy demonstrációs valami, de ahhoz talán megfelel, hogy megértsd a dolog működését.
Köszönöm a példakódot.
Vak vagyok, beszélőprogrammal használom a számítógépet, de próbálom értelmezni a dolgot, mindig érdekelnek vizualitással kapcsolatos dolgok.
Pixelenként ilyen módon hány karaktert képes letárolni?
Ez a kép, amit a program generál, csak az analóg hangjel vizuális megjelenítése.
Adott egy magnókazettán tárolni kivánt fájl. Ez legyen egy kis rövid text fájl. Az ebben a fájlban lévő kartakterek mindegyike egy-egy byte, amit fel kell bontani bitekre. Ezeket a biteket értelmezni, hogy nulla vagy egy a tartalmuk és aszerint generálni egy-egy hangjelet. Ezeket a hangjeleket sorban, egymás után a magnóval fel kell venni, rögzíteni. Ezután lehet visszafordítani a folyamatot, és az analóg, rögzített hangjelekből, a magnón való lejátszással és a jelek hangkártyába való bevezetésével, majd dekódolásával visszaállítani a karaktereket és így megkapjuk azt a fájltartalmat, amit a kazettán rögzítettünk.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!