Как «нарисовать» слой данных CD с помощью CD-привода?

1583
Jens

Я ищу способ «рисовать» геометрические фигуры, точки или линии на слое данных записываемого CD (или DVD) с использованием стандартного привода. Они не должны быть видны невооруженным глазом; Я бы попытался использовать небольшой размер точки на компакт-диске для некоторых научных измерений.

Большая часть доступного программного обеспечения, конечно, ограничена функциональностью для записи музыки или данных, и не предлагает низкоуровневую функцию «поставить точку на этом радиусе, этот угол». Есть ли что-нибудь для меня?

6
Почему не LightScribe? Он может, по крайней мере, содержать API-интерфейс драйвера, который можно использовать для выполнения ваших задач. pjc50 12 лет назад 4
Я посмотрю поближе, спасибо. Возможно я отклонил это слишком быстро. Я удалил это из своего вопроса, я предпочел бы существующее решение, чтобы получить API LightScribe и, тем не менее, самому себе испачкать руку. знак равно Jens 12 лет назад 0

4 ответа на вопрос

3
lornix

Вам не нужно записывать «правильные» данные на диск ... вы можете записать произвольные данные, просто создав файл соответствующего размера.

Для начала предположим, что мы используем компакт-диск для записи (мы надеемся, что его можно перезаписать, потому что мы сделаем несколько подставок !!), поэтому желаемый размер изображения данных составляет около 700 мегабайт.

Создайте файл с 10 мегабайтами чередующихся 0x00 и 0xff. Это покажет вам шаблон «вкл / выкл» данных в простой форме.

Модулируйте данные в файле изображения ... Диски записаны из центра ... так что во внешнем (более быстром!) Диаметре содержится больше данных, чем во внутреннем, и вы сможете рассчитать приблизительную точку для изменения вашего Шаблоны данных в файле изображения с использованием некоторых шаблонов.

Как только вы выясните «зоны», вы сможете создавать еще более сложные шаблоны данных, чтобы компенсировать скорость вращения и плотность данных на внешней «дорожке» (CD / DVD на самом деле просто жесткая спираль). Веселье, веселье, веселье!!

Ну ... вот с чего бы начать, если бы я искал что-то о записи паттернов на поверхностях данных CD / DVD.

(черт возьми ... где тот старый шпиндель компакт-дисков, который я никогда не использовал ...)

О да ... команды задействованы:

 CD: wodim dev=/dev/sr0 -eject -v -data=MYIMAGE.img DVD: growisofs -Z /dev/sr0=MYIMAGE.img 
and technically... all it involves in the long is some minor computations involving rectangular to polar coordinate transformation systems, rotational translations varying based on distance from beginning of data and distance vs. data byte position. Voila! Right? lornix 12 лет назад 0
https://www.ecma-international.org/publications/files/ECMA-ST/Ecma-130.pdf даст вам отправную точку для понимания того, как данные размещаются на физическом носителе. Вы не можете просто написать чередующиеся фрагменты 0x00s и 0xFFs. Alok 6 лет назад 0
2
nmz787

This looks like it does what you want, it includes 2 MATLAB files which I don't quite understand the magic of. I'd love to see an updated version!

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

Это выглядит круто. Я попробую это! Теперь как достать MATLAB =) Jens 11 лет назад 0
Существует вероятность того, что код будет работать Octave (https://www.gnu.org/software/octave/). Alok 6 лет назад 0
1
Brent Fisher

I had some success with Red Book CD Audio using bytes (8-bit characters) of 171 decimal for dark areas and 48 decimal using the Img2CD program. I couldn't get the calibration perfect, but for line-art you can see images in the CD-RW. No hacking is needed, all it is is a WAV music file with this non-musical signal--it's as real as a music CD as the rewritables will allow for (older CD players can't even play CD-RWs with human listenal music on them!). When you're done you can then play the CD-RW on a newer audio CD player that plays rewritable discs and listen to the picture. And if you get tired of the image, just blank the disc and re-write something new. The disc is best viewed under direct sunlight.

1
nmz787

To directly burn an .ISO or similar data disc image to CD, remember that the drive encodes and decodes the physical pixels using CIRC (Cross-Interleaved Reed–Solomon Coding) to allow for read error correction. You would need to figure out what data bytes correspond with encoded written-pixel-data streams.

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

The last one, rscode, has an explanation here: http://rscode.sourceforge.net/rs.html

which mentions CD usage, based on rscode's example.txt I believe the code to implement CD-type encoding (what the error-correction encoded pixels on a CD-R would read) might be:

unsigned char codeword1[28]; unsigned char codeword2[32]; unsigned char msg[24]; encode_data(msg, sizeof(msg), codeword1); encode_data(codeword1, sizeof(codeword1), codeword2); 

I e-mailed the author of rscode, and will update this answer if he responds.