介绍
大家好,我目前正在开发一个基于 JavaScript 的 3d 切片工具(SLAcer.js - btw.),它可以为我便宜的 dlp 打印机(SparkMaker)生成方便的打印文件。打印文件由一些 G 代码和简单的二进制层/图像组成(参见此处)。
我已经能够生成 G-Code 和包含二进制层相关信息的 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)
这听起来很容易,但就正确的编码而言,它不是:
- 由 SLAcer 切片的文件(二进制层不同)
- 单层文件(几乎匹配原始的第一层模式)
- 由原始软件切片的文件 希望有人可以帮助我:)