G代码解析研究
By
admin
at 2017-12-10 • 0人收藏 • 1485人看过
进行G代码分析,我已经将每一行的G代码都拆分为标准G指令和数据样式了,那么只需要写个数据表,把这些数据依次填写进去就可以了,
那么就可以利用table表的写入和读出属性来操作了.
于是,改造G_conv这个函数,我们将每一个输出到界面操作的下方添加table.push()就可以了
G_conv = function(str){
//定义一个表,全局的话表内容会一直增加不会自动销毁
var tab = {};
var tabI = 1;
var delspace = string.replace(str," ","");
var letter = string.split(delspace);
var num = "";
for(i=1;#letter;1){
//如果字符为空字符则不作处理继续循环
if(letter[i] == " "){
continue ;
}
//强制转换为数字格式,不是数字则返回null,是则返回数字
var k,v = tonumber(letter[i]);
//判断是数字,或者是负号,或者是小数点?
if( (k != null) || (letter[i] == "-")|| (letter[i] == ".")){
//连接这些数字
num = num ++ letter[i];
//如果字符串末尾是数字,则直接输出数字
if(i == #letter){
//console.log(num)
mainForm.Motion_file.add(num);
table.push(tab,num);
num ="";
}
}else { //不是数字,直接输出
if(num != ""){
mainForm.Motion_file.add(num);
table.push(tab,num);
num = "";
}
//console.log(num)
mainForm.Motion_file.add(letter[i]);
table.push(tab,letter[i]);
//console.log(letter[i])
}
}
console.dump(tab)
// console.log(tab[1],tab[2])
}
2 个回复 | 最后更新于 2017-12-10
消息回调,拖放文件处理,字符串处理后根据回车和换行符将每列数据写入items
mainForm.listbox.wndproc = function(hwnd,message,wParam,lParam){
select(message) {
case 0x233/*_WM_DROPFILES*/ {
mainForm.listbox.clear();
var path = win.getDropFile(wParam)[1];
var filecontent = string.load(path);
var linestr = string.split(filecontent,'<\r\n>')
for(i=1;#linestr;1){
mainForm.listbox.add(linestr[i]);
}
}
else {
}
}
}注意:
string.split(filecontent,'<\r\n>')
中的<>意思是得出的字符中不在包含改字符.

解决乱码问题,utf8,拖放asni编码的文件,显示乱码处理
mainForm.listbox.wndproc = function(hwnd,message,wParam,lParam){
select(message) {
case 0x233/*_WM_DROPFILES*/ {
mainForm.listbox.clear();
var path = win.getDropFile(wParam)[1];
var filecontent = string.load(path);
var linestr = string.split(filecontent,'<\r\n>')
for(i=1;#linestr;1){
//增加编码转换,这样就不会显示乱码了
mainForm.listbox.add(string.fromto(linestr[i],0,65001));
}
}
else {
}
}
}这里用到了 编码转换函数
string.fromto("UTF8编码的字符串",0,65001);
登录后方可回帖
功能增加:打开文件操作 利用fsys.dlg库
import fsys.dlg; mainForm.button4.oncommand = function(id,event){ //mainForm.msgbox( mainForm.button4.text ); var path = fsys.dlg.open("NC文件|*.nc|Gcode文件|*.gcode|所有文件|*.*|","选择所需文件进行打开",,mainForm.hwnd); if(path == null){ //未成功打开,则退出 return ; } var filecontent = string.load(path); var linestr = string.split(filecontent,'<\r\n>') for(i=1;#linestr;1){ //增加编码转换,这样就不会显示乱码了 mainForm.listbox.add(string.fromto(linestr[i],0,65001)); } }其中,文件类型和标题设置需要记住。
NC文件|*.nc|Gcode文件|*.gcode这个这样理解的:
NC文件|*.nc这是一个文件类型,打开窗口的显示名和后缀用|分隔
更多的文件后缀也用|分隔。。。。