G代码解析研究

By admin at 2017-12-10 • 0人收藏 • 468人看过

进行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
2017-12-10   #1

功能增加:打开文件操作 利用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这是一个文件类型,打开窗口的显示名和后缀用|分隔

更多的文件后缀也用|分隔。。。。


2017-12-10   #2

消息回调,拖放文件处理,字符串处理后根据回车和换行符将每列数据写入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);


登录后方可回帖

登 录
信息栏
本站永久域名:HtmLayout.Cn
纯私人站,当笔记本用的,学到哪写到哪,目前在学aardio+halcon机器视觉.
Htmlayout界面在线学习文档
Sciter中文在线文档Sciter在线学习文档
本 站 主 站:Stm32cube中文网
Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
aardio在线手册Aardio在线手册
C大Aardio论坛:Aar爱好者论坛
简码教程网:简码编程
AARDIO语言QQ群:70517368
赞助商:才仁机械
下载站:非凡软件站
Loading...