如何使用 CD 驱动器“绘制” CD 的数据层?

如何使用 CD 驱动器“绘制” CD 的数据层?

我正在寻找一种方法,使用标准驱动器在可写 CD(或 DVD)的数据层上“绘制”几何形状、点或线。这些不必肉眼可见;我会尝试利用 CD 上的小点尺寸进行一些科学测量。

当然,大多数可用的软件仅限于编写音乐或数据,不提供低级“在此半径、此角度放置一个点”功能。有适合我的软件吗?

答案1

您不必将“适当的”数据写入光盘...您只需创建适当大小的文件即可写入任意数据。

首先,假设我们使用 CD 来写入(希望是可重写的,因为我们要制作一些杯垫!),所以我们想要的数据图像大小约为 700 MB。

创建一个包含 10 MB 交替 0x00 和 0xff 块的文件..这将以简单的形式显示数据的“开/关”模式。

调节图像文件中的数据...光盘是从中心向外写入的...因此外部(更快!)直径包含的数据比内部更多,并且您应该能够使用一些创造性的模式来计算出近似点以更改图像文件中的数据模式。

一旦弄清楚了“区域”,您就应该能够创建更复杂的数据模式来补偿外部“轨道”上的旋转速度和数据密度(CD/DVD 实际上只是一个紧密的螺旋)。有趣有趣有趣!!

好吧...如果我想要了解有关在 CD/DVD 数据表面上书写图案的信息,我就会从这里开始。

(该死... 我从未使用过的旧 CD 主轴在哪里...)

哦是的...涉及的命令:

 CD: wodim dev=/dev/sr0 -eject -v -data=MYIMAGE.img
DVD: growisofs -Z /dev/sr0=MYIMAGE.img

答案2

这看起来就像你想要的那样,它包含 2 个 MATLAB 文件,我不太明白它的魔力。我很想看到更新的版本!

http://www.instructables.com/id/Burning-visible-images-onto-CD-Rs-with-data-beta/step2/Convert-a-picture-to-data/

答案3

使用 Img2CD 程序,我成功地使用 171 个十进制字节(8 位字符)表示暗区,48 个十进制字节(8 位字符)表示暗区。我无法获得完美的校准,但对于线条艺术,您可以在 CD-RW 中看到图像。无需破解,它只是一个带有这种非音乐信号的 WAV 音乐文件——它就像可重写光盘允许的一样真实,就像音乐 CD 一样(旧 CD 播放器甚至无法播放带有人听音乐的 CD-RW!)。完成后,您可以在播放可重写光盘的较新的音频 CD 播放器上播放 CD-RW 并收听图片。如果您厌倦了图像,只需清空光盘并重新写入新内容即可。在阳光直射下观看光盘效果最佳。

答案4

要直接将 .ISO 或类似的数据光盘映像刻录到 CD,请记住驱动器使用 CIRC(交叉交错里德-所罗门编码)对物理像素进行编码和解码,以便进行读取纠错。您需要弄清楚哪些数据字节与编码的写入像素数据流相对应。

http://www.eccpage.com/reed_solomon_codes.html

http://programmersheaven.com/discussion/427831/circ-cross-interleaved-reed-solomon-code-verification?S=B10000

http://www.idea2ic.com/File_Formats/ReedSolomon.pdf

https://pypi.python.org/pypi/reedsolo

http://rscode.sourceforge.net

最后一个,rscode,在这里有一个解释: http://rscode.sourceforge.net/rs.html

其中提到了 CD 的使用情况,根据 rscode 的 example.txt,我相信实现 CD 类型编码的代码(CD-R 上的纠错编码像素将读取的内容)可能是:

unsigned char codeword1[28];
unsigned char codeword2[32];
unsigned char msg[24];

encode_data(msg, sizeof(msg), codeword1);
encode_data(codeword1, sizeof(codeword1), codeword2);

我给 rscode 的作者发了电子邮件,如果他回复,我会更新这个答案。

相关内容