0

序章

皆さん、私は現在、安価な dlp プリンター (SparkMaker) 用の便利な印刷ファイルを生成できる JavaScript ベースの 3D スライシング ツール (SLAcer.js - すばらしい仕事です) に取り組んでいます。印刷ファイルは、いくつかの G コードと単純なバイナリ レイヤー/画像で構成されます (こちらを参照)。

G コードと、バイナリ レイヤーの関連情報を含む Uint8Array を生成できます。現在、すべての G コードおよびバイナリ レイヤーは文字列として連結され (最初の問題がある可能性があります)、最終的には zip ファイルの一部として印刷ファイル (.wow) としてダウンロードできます。(プロジェクトのデフォルト JSZip フレームワーク) (こちらを参照)

私が苦労しているポイントは次のとおりです。

元のバイナリ レイヤーと一致するバイナリ レイヤーの正しい TextEncoding を取得できません。

var array = new Uint8Array(width*height/8);
var binary_layer;

以下を含むいくつかのことをすでに試しました。

binary_layer=(new TextDecoder("utf-8")).decode(array) /*with different text encodes*/

また試しました:

binary_layer=bin2string(array)
function bin2string(array){
var result = "";
for(var i = 0; i < array.length; ++i){
result+= (String.fromCharCode(array[i]));
}
console.log(result);
return result;
}

私を驚かせたのは、各 Uint8Array を個別のバイナリ txt ファイルとしてエクスポートすると、それらが必要な/元のパターンとほぼ完全に一致することです

連結:

file_contents = "[some gecode]";
file_contents += binary_layer;

概要

var staring = "hello";
var array = new Uint8Array(2);
array[0]=255;
array[1]=0;

必要なファイルの内容(テキストと生のバイナリの両方 - utf8):

hello(xFF)(NUL)

これは簡単に聞こえるかもしれませんが、正しいエンコーディングに関してはそうではありません。

4

1 に答える 1