G代码解析研究

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

进行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);


登录后方可回帖

登 录
信息栏
 私人小站

本站域名

ChengXu.XYZ

投诉联系:  popdes@126.com



快速上位机开发学习,本站主要记录了学习过程中遇到的问题和解决办法及上位机代码分享

这里主要专注于学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.
如果侵权,联系 Popdes@126.com

友情链接
Aardio官方
Aardio资源网


才仁机械


网站地图SiteMap

Loading...