User Tools

Site Tools


laser_hacking

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

laser_hacking [2013/08/13 12:13] (current)
Line 1: Line 1:
 +====  Calculate ​ ====
 +<big>
 +<​code>​
 + ​Generate a temp BMP in the $PROGDIR$ folder
 + ​Generates a G00 file ( Binary format, not same as MOT/​TXT)</​code>​
 + 
 +Download
 + 
 +<​code>​
 + ​Converts the G00 to a TXT/MOT which is then uploaded to the laser. Needs laser to be on.</​code>​
 +
 +Printer Driver
 +
 +<​code>​
 + Have a Windows 7 raster print driver to start with, need some more CMD's from the TXT file.
 + ​Checked in basic windows xpsras ddk sample into SVN (probably needs to be in DDK src/print/ folder)</​code>​
 +
 +====  SDK/​API ​ ====
 +
 +
 +<​code>​
 + ​typedef int (WINAPI *t_M05_access_flash)(DWORD type,PDWORD data);
 + ​typedef int (WINAPI *t_M05_arc_center)(int ch1,int ch2,long cenx,long ceny,double angle);
 + ​typedef int (WINAPI *t_M05_arc_final)(int ch1,int ch2,int dir,long fx,long fy,long r);
 + ​typedef int (WINAPI *t_M05_call_sub)(int subid, double* param, int paramnum);
 + ​typedef int (WINAPI *t_M05_change_voltage)(int v);
 + ​typedef int (WINAPI *t_M05_check_alarm)(int ch);
 + ​typedef int (WINAPI *t_M05_check_batch_done)();​
 + ​typedef int (WINAPI *t_M05_check_buffer)(int BufferType);​
 + ​typedef int (WINAPI *t_M05_check_done)(int ch);
 + ​typedef int (WINAPI *t_M05_check_ecp_num)();​
 + ​typedef int (WINAPI *t_M05_check_EncA)(int ch);
 + ​typedef int (WINAPI *t_M05_check_EncB)(int ch);
 + ​typedef int (WINAPI *t_M05_check_EncZ)(int ch);
 + ​typedef int (WINAPI *t_M05_check_home)(int ch);
 + ​typedef int (WINAPI *t_M05_check_limit)(int ch);
 + ​typedef int (WINAPI *t_M05_check_SD)(int ch);
 + ​typedef int (WINAPI *t_M05_check_status)(int ch);
 + ​typedef unsigned int (WINAPI *t_M05_check_status32)(int ch);
 + ​typedef int (WINAPI *t_M05_checkin_bit)(int cardno,int bitno);
 + ​typedef int (WINAPI *t_M05_checkin_byte)(int cardno);
 + ​typedef int (WINAPI *t_M05_close_file)();​
 + ​typedef int (WINAPI *t_M05_close_link)(int ch);
 + ​typedef int (WINAPI *t_M05_compile_work_file)(char* filename);
 + ​typedef int (WINAPI *t_M05_comm_read_data)(DWORD dwDataLenBytes,​ PBYTE pchDataIn, PBYTE pchDataOut);​
 + ​typedef int (WINAPI *t_M05_control_func)(int FuncID);
 + ​typedef int (WINAPI *t_M05_con_hmove)(int ch , int dir);
 + ​typedef int (WINAPI *t_M05_con_hmove2)(int chx , int dirx , int chy , int diry);
 + ​typedef int (WINAPI *t_M05_con_hmove3)(int chx , int dirx , int chy , int diry , int chz , int dirz);
 + ​typedef int (WINAPI *t_M05_con_line2)(int chx , long disx ,int chy , long disy);
 + ​typedef int (WINAPI *t_M05_con_line3)(int chx , long disx ,int chy , long disy ,int chz , long disz);
 + ​typedef int (WINAPI *t_M05_con_pmove)(int ch,long step);
 + ​typedef int (WINAPI *t_M05_con_pmove2)(int chx , long disx ,int chy , long disy);
 + ​typedef int (WINAPI *t_M05_con_pmove3)(int chx , long disx ,int chy , long disy ,int chz , long disz);
 + ​typedef int (WINAPI *t_M05_con_vmove)(int ch , int dir);
 + ​typedef int (WINAPI *t_M05_con_vmove2)(int chx , int dirx , int chy , int diry);
 + ​typedef int (WINAPI *t_M05_con_vmove3)(int chx , int dirx , int chy , int diry , int chz , int dirz);
 + ​typedef int (WINAPI *t_M05_create_file)(PBYTE filename, DWORD filelenbytes);​
 + ​typedef int (WINAPI *t_M05_c_change_voltage)(int v);
 + ​typedef int (WINAPI *t_M05_c_curve_begin)();​
 + ​typedef int (WINAPI *t_M05_c_curve_end)();​
 + ​typedef int (WINAPI *t_M05_c_curve_vertex)(int IsMove);
 + ​typedef int (WINAPI *t_M05_c_delay_time)(int ms);
 + ​typedef int (WINAPI *t_M05_c_fast_line2)(int chx,long disx,int chy,long disy);
 + ​typedef int (WINAPI *t_M05_c_move_start)();​
 + ​typedef int (WINAPI *t_M05_c_move_pause)();​
 + ​typedef int (WINAPI *t_M05_c_move_resume)();​
 + ​typedef int (WINAPI *t_M05_c_move_stop)();​
 + ​typedef int (WINAPI *t_M05_c_set_laser_mode)(int mode);
 + ​typedef int (WINAPI *t_M05_c_set_blow_mode)(int mode);
 + ​typedef int (WINAPI *t_M05_c_set_commonIO_3)(int mode);
 + ​typedef int (WINAPI *t_M05_c_set_common_IO)(int PortID,int mode);
 + ​typedef int (WINAPI *t_M05_c_set_max_accel)(double ac);
 + ​typedef int (WINAPI *t_M05_c_set_move_profile)(double ls, double hs, double ac);
 + ​typedef int (WINAPI *t_M05_c_set_power)(int LowPower,​int HighPower, double LowSpeed, double HighSpeed, int Mode);
 + ​typedef int (WINAPI *t_M05_c_set_vector_profile)(double ls,double hs,double ac);
 + ​typedef int (WINAPI *t_M05_decel_stop)(int ch);
 + ​typedef int (WINAPI *t_M05_decel_stop2)(int ch1,int ch2);
 + ​typedef int (WINAPI *t_M05_decel_stop3)(int ch1,int ch2,int ch3);
 + ​typedef int (WINAPI *t_M05_delay_time)(int ms);
 + ​typedef int (WINAPI *t_M05_del_file)(int FileID);
 + ​typedef int (WINAPI *t_M05_del_all_file)(void);​
 + ​typedef int (WINAPI *t_M05_download_work_file)(char* filename);
 + ​typedef int (WINAPI *t_M05_fast_arc_center)(int ch1,int ch2,long cenx,long ceny,double angle);
 + ​typedef int (WINAPI *t_M05_fast_hmove)(int ch , int dir);
 + ​typedef int (WINAPI *t_M05_fast_hmove2)(int chx , int dirx , int chy , int diry);
 + ​typedef int (WINAPI *t_M05_fast_hmove3)(int chx , int dirx , int chy , int diry , int chz , int dirz);
 + ​typedef int (WINAPI *t_M05_fast_line2)(int chx , long disx ,int chy , long disy);
 + ​typedef int (WINAPI *t_M05_fast_line2_to)(int chx , long disx ,int chy , long disy);
 + ​typedef int (WINAPI *t_M05_fast_pmove)(int ch,long step);
 + ​typedef int (WINAPI *t_M05_fast_pmove2)(int chx , long disx ,int chy , long disy);
 + ​typedef int (WINAPI *t_M05_fast_pmove3)(int chx , long disx ,int chy , long disy ,int chz , long disz);
 + ​typedef int (WINAPI *t_M05_fast_vmove)(int ch , int dir);
 + ​typedef int (WINAPI *t_M05_fast_vmove2)(int chx , int dirx , int chy , int diry);
 + ​typedef int (WINAPI *t_M05_fast_vmove3)(int chx , int dirx , int chy , int diry , int chz , int dirz);
 + ​typedef int (WINAPI *t_M05_get_abs_pos)(int ch,long *pos);
 + ​typedef int (WINAPI *t_M05_get_board_info)(int* info);
 + ​typedef DWORD  (WINAPI *t_M05_get_board_ver)();​ // returns as packed DWORD 10.10.10.10 etc
 + ​typedef int (WINAPI *t_M05_get_cmd_counter)();​
 + ​typedef int  (WINAPI *t_M05_get_debug_info)(LPCTSTR info);
 + ​typedef int (WINAPI *t_M05_get_dll_info)(double* info);
 + ​typedef int (WINAPI *t_M05_get_encoder)(int ch,long *enc);
 + ​typedef DWORD (WINAPI *t_M05_get_err)(int index);
 + ​typedef int (WINAPI *t_M05_get_file_num)(int* CurFileID, int* FileNum);
 + ​typedef DWORD  (WINAPI *t_M05_get_hdw_ver)();//​ returns as packed DWORD 10.10.10.10 etc
 + ​typedef DWORD (WINAPI *t_M05_get_last_err)();​
 + ​typedef DWORD  (WINAPI *t_M05_get_lib_ver)();//​ returns as packed DWORD 10.10.10.10 etc
 + ​typedef int (WINAPI *t_M05_get_rel_pos)(int ch,long *pos);
 + ​typedef double (WINAPI *t_M05_get_rate)(int ch);
 + ​typedef int  (WINAPI *t_M05_get_sn)(unsigned char* sn);
 + ​typedef unsigned int (WINAPI *t_M05_get_status)(int ch);
 + ​typedef int (WINAPI *t_M05_init_board)(void);​
 + ​typedef int (WINAPI *t_M05_main_begin)();​
 + ​typedef int (WINAPI *t_M05_main_end)();​
 + ​typedef int (WINAPI *t_M05_mi_checkin_bit)(int bitno);
 + ​typedef int (WINAPI *t_M05_mi_checkin_byte)();​
 + ​typedef int (WINAPI *t_M05_move_pause)();​
 + ​typedef int (WINAPI *t_M05_move_resume)();​
 + ​typedef int (WINAPI *t_M05_m_move_pause)();​
 + ​typedef int (WINAPI *t_M05_m_move_resume)();​
 + ​typedef int (WINAPI *t_M05_m_move_stop)();​
 + ​typedef int (WINAPI *t_M05_m_move_start)();​
 + ​typedef int (WINAPI *t_M05_m_fast_line2)(int chx,long disx,int chy,long disy);
 + ​typedef int (WINAPI *t_M05_m_set_vector_profile)(double ls,double hs,double ac);
 + ​typedef int (WINAPI *t_M05_m_set_vector_profile2)(double start_ls, double hs, double end_ls, double ac, double dc);
 + ​typedef int (WINAPI *t_M05_m_curve_vertex)();​
 + ​typedef int (WINAPI *t_M05_m_curve_begin)();​
 + ​typedef int (WINAPI *t_M05_m_curve_end)();​
 + ​typedef int (WINAPI *t_M05_m_set_period)(double period);
 + ​typedef int (WINAPI *t_M05_m_set_power)(int LowPower,​int HighPower);
 + ​typedef int (WINAPI *t_M05_m_set_laser_mode)(int mode);
 + ​typedef int (WINAPI *t_M05_m_set_blow_mode)(int mode);
 + ​typedef int (WINAPI *t_M05_m_set_commonIO_3)(int mode);
 + ​typedef int (WINAPI *t_M05_m_set_common_IO)(int PortID,int mode);
 + ​typedef int (WINAPI *t_M05_m_delay_time)(int ms);
 + ​typedef int (WINAPI *t_M05_m_change_voltage)(int v);
 + ​typedef int (WINAPI *t_M05_mc_set_vector_conspeed)(double conspeed);
 + ​typedef int (WINAPI *t_M05_mc_con_line2)(int chx , long disx ,int chy , long disy);
 + ​typedef int (WINAPI *t_M05_mc_delay_time)(int ms);
 + ​typedef int (WINAPI *t_M05_mc_change_voltage)(int v);
 + ​typedef int (WINAPI *t_M05_mc_set_laser_mode)(int mode);
 + ​typedef int (WINAPI *t_M05_mc_set_blow_mode)(int mode);
 + ​typedef int (WINAPI *t_M05_mc_set_commonIO_3)(int mode);
 + ​typedef int (WINAPI *t_M05_mc_set_common_IO)(int mode);
 + ​typedef int (WINAPI *t_M05_mc_set_vector_profile)(double vl , double vh , double ad);
 + ​typedef int (WINAPI *t_M05_mc_fast_line2)(int chx , long disx ,int chy , long disy);
 + ​typedef int (WINAPI *t_M05_mc_begin_cut)();​
 + ​typedef int (WINAPI *t_M05_mc_end_cut)();​
 + ​typedef int (WINAPI *t_M05_on_comm)(int ch);
 + ​typedef int (WINAPI *t_M05_outport_bit)(int cardno,int bitno,int status);
 + ​typedef int (WINAPI *t_M05_outport_byte)(int cardno,int byte);
 + ​typedef int (WINAPI *t_M05_outport_data)(DWORD Addr,DWORD Data);
 + ​typedef int (WINAPI *t_M05_open_file)(BYTE fileID, PDWORD filelen, PBYTE filename);
 + ​typedef int (WINAPI *t_M05_open_link)(int ch, int rate);
 + ​typedef DWORD (WINAPI *t_M05_read_data)(DWORD addr);
 + ​typedef int (WINAPI *t_M05_reset_cmd_counter)();​
 + ​typedef int (WINAPI *t_M05_reset_err)();​
 + ​typedef int (WINAPI *t_M05_reset_pos)(int ch);
 + ​typedef int (WINAPI *t_M05_end_backlash)(int ch);
 + ​typedef int (WINAPI *t_M05_send_cmd)(DWORD dwDataLenDword,​ PDWORD pdwData);
 + ​typedef int (WINAPI *t_M05_send_data)(DWORD dwDataLenBytes,​ PBYTE pchData);
 + ​typedef int (WINAPI *t_M05_set_abs_pos)(int ch,long pos);
 + ​typedef int (WINAPI *t_M05_set_backlash)(int ch,int blash);
 + ​typedef int (WINAPI *t_M05_set_batch_flag)(int flag);
 + ​typedef int (WINAPI *t_M05_set_cmd_counter)(int type,int counter);
 + ​typedef int (WINAPI *t_M05_set_comm)(LPVOID pcMSComm);
 + ​typedef int (WINAPI *t_M05_set_conspeed)(int ch , double conspeed);
 + ​typedef int (WINAPI *t_M05_set_ellipse_ratio)(float ratio);
 + ​typedef int (WINAPI *t_M05_set_encoder_mode)(int ch,int mode,int multip,int count_unit);​
 + ​typedef int (WINAPI *t_M05_set_getpos_mode)(int ch,int mode);
 + ​typedef int (WINAPI *t_M05_set_home_mode)(int ch,int origin_mode);​
 + ​typedef int (WINAPI *t_M05_set_laser_mode)(int mode);
 + ​typedef int (WINAPI *t_M05_set_blow_mode)(int mode);/*Add on 21.09.2005*/​
 + ​typedef int (WINAPI *t_M05_set_commonIO_3)(int mode);/*Add on 25.02.2006*/​
 + ​typedef int (WINAPI *t_M05_set_common_IO)(int PortID,int mode);/*Add on 02.03.2006*/​
 + ​typedef int (WINAPI *t_M05_set_pulse_per_milimter)(double pulseX,​double pulseY,​double pulseZ);
 + ​typedef int (WINAPI *t_M05_set_level_in)(int ch,int status);
 + ​typedef int (WINAPI *t_M05_set_level_sprt)(int ch,int status);
 + ​typedef int (WINAPI *t_M05_set_maxspeed)(int ch , double maxpeed);
 + ​typedef int (WINAPI *t_M05_set_outmode)(int ch,int mode,int logic);
 + ​typedef int (WINAPI *t_M05_set_power_mode)(int mode);
 + ​typedef int (WINAPI *t_M05_set_profile)(int ch , double vl , double vh , double ad);
 + ​typedef int (WINAPI *t_M05_set_pwm_frq)(double frq);
 + ​typedef int (WINAPI *t_M05_set_ramp_flag)(int flag);
 + ​typedef int (WINAPI *t_M05_set_scan_backlash)(int p);
 + ​typedef int (WINAPI *t_M05_set_scan_step)(int step);
 + ​typedef int (WINAPI *t_M05_set_scan_startpos)(int pos);
 + ​typedef int (WINAPI *t_M05_set_senddata_flag)(int flag);
 + ​typedef int (WINAPI *t_M05_set_s_curve)(int ch,int mode);
 + ​typedef int (WINAPI *t_M05_set_s_section)(int ch,double rate1,​double rate2);
 + ​typedef int (WINAPI *t_M05_set_signal_in)(int ch,int status);
 + ​typedef int (WINAPI *t_M05_set_vector_conspeed)(double conspeed);
 + ​typedef int (WINAPI *t_M05_set_vector_profile)(double vl , double vh , double ad);
 + ​typedef int (WINAPI *t_M05_set_work_mode)(int mode);
 + ​typedef int (WINAPI *t_M05_set_work_file)(char* file);
 + ​typedef int (WINAPI *t_M05_set_xy_ratio)(double r);
 + ​typedef void (WINAPI *t_M05_show_err)(int flag);
 + ​typedef int (WINAPI *t_M05_start_backlash)(int ch);
 + ​typedef int (WINAPI *t_M05_start_run)();​
 + ​typedef int (WINAPI *t_M05_stop_run)();​
 + ​typedef int (WINAPI *t_M05_sub_begin)(int subid);
 + ​typedef int (WINAPI *t_M05_sub_end)(int subid);
 + ​typedef int (WINAPI *t_M05_sudden_stop)(int ch);
 + ​typedef int (WINAPI *t_M05_sudden_stop2)(int ch1,int ch2);
 + ​typedef int (WINAPI *t_M05_sudden_stop3)(int ch1,int ch2,int ch3);
 + ​typedef int (WINAPI *t_M05_system_test)(int type,int* pdata);
 + ​typedef int (WINAPI *t_M05_sys_set)(int id, double* param, int paramnum);
 + ​typedef int (WINAPI *t_M05_sysset_end)();​
 + ​typedef int (WINAPI *t_M05_trig_position)(int ch,int destpos,int condition);
 + ​typedef int (WINAPI *t_M05_verify_ecp_num)(unsigned char* pnum,int len); 
 + ​typedef int (WINAPI *t_M05_work_begin)();​
 + ​typedef int (WINAPI *t_M05_work_end)();​
 + ​typedef int (WINAPI *t_M05_write_data)(DWORD Addr,DWORD Data);
 + ​typedef int (WINAPI *t_M05_write_data_block)(DWORD DataLen,​PDWORD Data);
 + ​typedef int (WINAPI *t_M05_write_ecp_num)(unsigned char* pnum,int len); 
 + ​typedef int (WINAPI *t_M05_write_file)(DWORD dwDataLenBytes,​ PBYTE pchFileData);​
 + ​typedef int (WINAPI *t_M05_write_power_data)(DWORD DataLen,​PUCHAR Data);
 + ​typedef int (WINAPI *t_M05_write_power_tab)(int TabType,​DWORD DataLen,​PDWORD Data);
 + ​typedef int (WINAPI *t_M05_GetCanUseTime)(void);</​code>​
 +
 +<​nowiki>//</​nowiki>​ working on (parameters not confirmed)
 +<​code>​
 + ​typedef int (WINAPI *t_M05_c_set_multi_power)( int a1,  int a2,  int a3,  int a4, double a5, double a6, int a7);
 + ​typedef int (WINAPI *t_M05_change_multi_voltage)( int a1,  int a2);
 + ​typedef int (WINAPI *t_M05_ReadDogNumber)(char *a1);
 + ​typedef int (WINAPI *t_M05_WriteDogNumber)(char *a1);
 + ​typedef int (WINAPI *t_M05_change_voltage2)(int a1);
 + ​typedef int (WINAPI *t_M05_SetHasUseTime)(int a1);
 + ​typedef int (WINAPI *t_M05_SetCanUseTime)(int a1);
 + ​typedef int (WINAPI *t_M05_GetCardNumber)(int a1);
 + ​typedef int (WINAPI *t_M05_GetHasUseTime)(void);​
 + ​typedef int (WINAPI *t_M05_set_power_compensate)(int a1, int a2, int a3);
 + ​typedef int (WINAPI *t_M05_set_pwm2_frq)(double a1);
 + ​typedef int (WINAPI *t_M05_mc_change_multi_voltage)(int a1, int a2); // @8</​code>​
 +
 +
 +
 +====  TXT File format ​ ====
 +
 +Header
 +
 +<​code>​
 + ​VER,​1,​0,​0,​0
 + ​FNM,​Test.ext
 + ​FLG,​0,​0,​0
 + ​TYP,​1</​code>​
 +
 +Body
 +
 +<​code>​
 + ​SUB001 ​
 + ​CMD101,​0 ​
 + ​SET002,​20000 ​
 + ​SET014,​1,​0,​2,​2 ​
 + ​CMD109,​1 ​
 + ​CMD102,​416,​20833,​97222 ​
 + ​CMD104,​6944 ​
 + ​CMD401,​416,​880,​41666,​900 ​
 + ​CMD402,​900 ​
 + ​CMD409,​416,​880,​3000,​41666,​900,​5000 //set  ramp speeds and power 
 + ​CMD408,​900,​5000 ​
 + ​CMD050,​2,​1 ​
 + ​CMD002,​63556,​42631 ​
 + ​CMD050,​1,​1 //laser on 
 + ​CMD103,​416,​41666,​69444 ​
 + ​CMD001,​63556,​42631 // move 
 + ​CMD050,​1,​0 //laser off 
 + i’m surprised it rasterises the vectors though, i was expecting to see a command ​
 + for a circle that defined a center,​radius etc. </​code>​
 +
 +speed change. 100 to 300 changes servo ramp up/down
 +<​code>​
 + ​CMD401,​416,​880,​13888,​900 ​
 + ​CMD409,​416,​880,​3000,​13888,​900,​5000 ​
 + ​CMD103,​416,​13888,​69444 ​
 + ​CMD401,​416,​880,<​span style="​color:#​FF0000">​41666<​span style="​color:#​000000">,​900 ​
 + ​CMD409,​416,​880,​3000,<​span style="​color:#​FF0000">​41666<​span style="​color:#​000000">,​900,​5000 ​
 + ​CMD103,​416,<​span style="​color:#​FF0000">​41666<​span style="​color:#​000000">,​69444 </​code>​
 +
 +power change 9 to 99 ( *100) 
 +<​code>​
 + ​CMD401,​416,​880,​13888,​900 ​
 + ​CMD402,​900 ​
 + ​CMD409,​416,​880,​3000,​13888,​900,​5000 ​
 + ​CMD408,​900,​5000 ​
 + ​CMD401,​416,​880,​13888,<​span style="​color:#​FF0000">​9900<​span style="​color:#​000000"> ​
 + ​CMD402,<​span style="​color:#​FF0000">​9900<​span style="​color:#​000000"> ​
 + ​CMD409,​416,​880,​3000,​13888,<​span style="​color:#​FF0000">​9900<​span style="​color:#​000000">,​5000 ​
 + ​CMD408,<​span style="​color:#​FF0000">​9900<​span style="​color:#​000000">',​5000 </​code>​
 +
 +horizontal line moved in y 
 +<​code>​
 + ​CMD002,​62466,​45271 ​
 + ​CMD001,​62466,​45271 ​
 + ​CMD001,​69328,​45271 ​
 + ​CMD002,​69328,​45271 ​
 + ​SUB603,​416,​20833,​97222,​69328,​45271 ​
 + ​CMD001,​69328,​45271 ​
 + ​CMD001,​69328,​45271 ​
 + ​CMD001,​62466,​45271 ​
 + ​CMD001,​62466,​45271 ​
 + ​CMD001,​69328,​45271 ​
 + ​CMD001,​69605,​44993 ​
 + ​CMD001,​69605,​45548 ​
 + ​CMD001,​62188,​45548 ​
 + ​CMD001,​62188,​44993 ​
 + ​CMD001,​69605,​44993 ​
 + ​CMD002,​62466,​45175 ​
 + ​CMD001,​62466,​45175 ​
 + ​CMD001,​69328,​45175 ​
 + ​CMD002,​69328,​45175 ​
 + ​SUB603,​416,​20833,​97222,​69328,​45175 ​
 + ​CMD001,​69328,​45175 ​
 + ​CMD001,​69328,​45175 ​
 + ​CMD001,​62466,​45175 ​
 + ​CMD001,​62466,​45175 ​
 + ​CMD001,​69328,​45175 ​
 + ​CMD001,​69605,​44898 ​
 + ​CMD001,​69605,​45453 ​
 + ​CMD001,​62188,​45453 ​
 + ​CMD001,​62188,​44898 ​
 + ​CMD001,​69605,​44898 </​code>​
 +
 +horizontal line moved in x 
 +<​code>​
 + ​CMD001,​69328,​45271 ​
 + ​CMD002,​69328,​45271 ​
 + ​SUB603,​416,​20833,​97222,​69328,​45271 ​
 + ​CMD001,​69328,​45271 ​
 + ​CMD001,​69328,​45271 ​
 + ​CMD001,​69328,​45271 ​
 + ​CMD001,​69605,​44993 ​
 + ​CMD001,​69605,​45548 ​
 + ​CMD001,​69605,​44993 ​
 + ​CMD001,​69492,​45271 ​
 + ​CMD002,​69492,​45271 ​
 + ​SUB603,​416,​20833,​97222,​69492,​45271 ​
 + ​CMD001,​69492,​45271 ​
 + ​CMD001,​69492,​45271 ​
 + ​CMD001,​69492,​45271 ​
 + ​CMD001,​69770,​44993 ​
 + ​CMD001,​69770,​45548 ​
 + ​CMD001,​69770,​44993</​code>​
 +
 +====  CMD'​s ​ ====
 +
 +<​code>​
 + ​CMD401,​416,​4000,​2777,​6000(Power)
 + ​CMD402,​6000(Power)
 + ​CMD409,​416,​4000,​3000,​2777,​6000(Power),​5000
 + ​CMD408,​6000(Power),​5000
 +   6000 is 60
 + ​CMD401,​416,​5000(Corner Speed),​2777,​7000
 + ​CMD402,​7000
 + ​CMD409,​416,​5000(Corner Speed),​3000,​2777,​7000,​5000
 +  5000 is 50
 + ​CMD401,​416,​4000,​2777(speed),​6000
 + ​CMD409,​416,​4000,​3000,​2777(speed),​6000,​5000
 + ​CMD103,​416,​2777(speed),​69444
 +  1388 is 10
 +  2777 is 20
 +  13888 is 100
 +  41666 is 300
 +   ​Multiply by 138.88888 ish</​code>​
 +
 +changed speed to 100000 didn't seem to affect it, probably limited in controller
 +
 +I think 416 means its addressing the config, or speed settings
 +
 +<​code>​
 + ​Engrave second number (1 or 2) is Axis, second number is probably amount -/+ to move , delta</​code>​
 +
 +====  SUBS  ====
 +
 +SUB609 is what the machine does when you press TEST
 +<​code>​
 + ​SUB609 // Start TEST routine
 + ​CMD102,​416,​20833,​97222 // setup speeds
 + ​CMD103,​416,​20833,​97222
 + ​CMD104,​13888
 + ​CMD001,​69444,​48615 // move position
 + ​CMD001,​62489,​48615 // move
 + ​CMD001,​62489,​41667 // move 
 + ​CMD001,​69444,​41667 // move
 + ​CMD001,​69444,​48615 // move
 + ​SUB609 // end</​code>​
 +
 +
 +SUB610 is what the machine does when you press CUT
 +<​code>​
 + ​SUB610 // start CUT routine
 + ​CMD104,​13888 // in both
 + ​CMD102,​416,​20833,​97222
 + ​CMD001,​69722,​48893
 + ​CMD103,​416,​3472,​69444 ​
 + ​CMD401,​416,​4000,​3472,​4000 // set power etc
 + ​CMD409,​416,​4000,​4000,​3472,​4000,​4000 // set speeds
 + ​CMD050,​1,​1 ​ // Laser on 
 + ​CMD001,​62211,​48893 // move to position
 + ​CMD001,​62211,​41389 // move
 + ​CMD001,​69722,​41389 // move
 + ​CMD001,​69722,​48893 // move
 + ​CMD050,​1,​0 // Laser off
 + ​SUB610 // end routine</​code>​
 +
 +====  M05_control_func ​ ====
 +
 +<​code>​
 +  8 Back
 +  9 Fwd
 + 10 X Left
 + 11 X Right
 + 12 Stop all ( except laser )
 + 13 Z Up
 + 14 Z Down
 + 0x10 toggle laser on/off (CMD050 1,​1)</​code>​
 +
 +====  M05 Initialise the machine/​dll ​ ====
 +
 +<​code>​
 + ​M05_on_comm(1);​
 + if( M05_open_link(1,​115200) ) \t\t { 
 + ​\tMessageBox(L"​Failed to open comm"​);​
 + ​\treturn ;
 + }
 + if ( M05_init_board() )  {
 + ​}</​code>​
 +
 +====  M05_download_work_file ===\t\t\t
 +
 +<​code>​
 + Send the MOL file to the laser control board.
 + ​M05_download_work_file("​C:​\\\\laser.mol"​);</​code>​
 +
 +====  M05_compile_work_file ​ ====
 +
 +<​code>​
 + ​Compile a TXT file to a MOL file, replaces .txt with .mol, saves in same place.
 + ​M05_compile_work_file("​c:​\\\\laser.txt"​);</​code>​
 +
 +====  M05_del_all_file ​ ====
 +
 +<​code>​
 + ​Delete all the files on the laser cutter
 + ​M05_del_all_file();</​code>​
 +
 +====  Upload SYSCFG ​ ====
 +
 +
 +<​code>​
 + ​VER,​1,​0,​0,​0
 + ​FNM,​Test.ext
 + ​FLG,​0,​0,​0
 + TYP,2
 + ​SYS001
 + ​SET001,​0
 + ​SET002,​20000
 + ​SET003,​4
 + ​SET004,​3
 + ​SET005,​2
 + ​SET006,​0
 + ​SET007,​201733
 + ​SET008,​126083
 + ​SET009,​0
 + ​SET010,​25216
 + ​SET011,​-25216
 + ​SET012,​0
 + ​SET013,​0
 + ​SET014,​1,​0,​2,​0
 + ​SET015,​1,​252.1670610,​2,​252.1670610,​3,​252.1670610
 + ​SET016,​1000
 + ​SET017,​50
 + ​SET018,​0
 + ​SET019,​1,​1,​0
 + ​SET020,​10000,​300.0000000,​10000,​300.0000000
 + ​SET021,​5.0000000,​0.0115000,​0.0028750,​5.0000000,​0.0115000,​0.0028750
 + ​SET022,​100,​100
 + ​SET023,​0,​0
 + ​SET024,​5.0000000,​5.0000000
 + ​SET025,​3276,​3276
 + ​SET026,​0
 + ​SET027,​0,​0
 + ​SET028,​0,​100
 + ​SUB601,​1,​2521,​75650,​50433,​378250,​3782505,​1260
 + ​SUB601,​2,​2521,​75650,​50433,​378250,​3782505,​1260
 + ​SUB601,​3,​1260,​75650,​25216,​126083,​2521670,​756
 + ​SUB602,​2521,​10086,​378250,​3782505,​2521,​10086,​378250,​3782505,​1,​1,​2521,​126083,​378250,​3782505,​1260,​1260,​201733,​126083
 + ​SUB611,​1260,​5043,​126083,​2521670,​1,​1260,​75650,​126083,​2521670,​504,​0
 + ​SYS001</​code>​
 +
 +
 +====  Scratchpad ​ ====
 +
 +The laser stores the cut type, power, speed in a second file, if you save as test.ecp there will be a test.ini too
 +
 +For engrave it'll look like
 +
 +(these are the diffs for a multilayer file)
 +
 +<​code>​
 + ​LayerColor_0=12615680
 + ​LayerColor_1=16636309
 + ​SPLITBLOCK_NUMBER=0
 + ​TechnicsMode=**TECHNICS_LASERENGRAVE**
 + ​LaserCutConnerPower=**55.00000**
 + ​LaserCutWorkPower=**60.00000**
 + ​LaserCutSpeed=**20.00000**
 + ​LaserEngravePower=50.00000
 + ​LaserEngraveSpeed=50.00000
 + ​TechnicsMode=TECHNICS_LASERENGRAVE
 + ​LaserCutConnerPower=55.00000
 + ​LaserCutWorkPower=60.00000
 + ​LaserEngravePower=50.00000
 + ​LaserEngraveSpeed=55.00000
 + ​TechnicsMode=TECHNICS_LASERENGRAVE
 + ​LaserCutConnerPower=55.00000
 + ​LaserCutWorkPower=60.00000
 + ​LaserCutSpeed=20.00000
 + ​LaserEngravePower=50.00000
 + ​LaserEngraveSpeed=60.00000</​code>​
 +
 +
 +for cut
 +
 +<​code>​
 + ​LayerColor_0=16636309 ​
 + ​LayerColor_1=12615680
 + ​OneWorkNeedTimes=2
 + ​TotalWorkTimes=0
 + ​SPLITBLOCK_NUMBER=2
 + ​SPLITBLOCK_NUMBER_0=0.00000
 + ​SPLITBLOCK_NUMBER_1=100000.00000
 + ​TechnicsMode=**TECHNICS_LASERCUT**
 + ​LaserCutConnerPower=5.00000
 + ​LaserCutWorkPower=10.00000
 + ​LaserCutSpeed=30.00000
 + ​LaserEngravePower=//​20.00000//​
 + ​LaserEngraveSpeed=//​100.00000//​
 + ​TechnicsMode=TECHNICS_LASERCUT
 + ​LaserCutConnerPower=5.00000
 + ​LaserCutWorkPower=10.00000
 + ​LaserEngravePower=20.00000
 + ​LaserEngraveSpeed=100.00000
 + ​TechnicsMode=TECHNICS_LASERCUT
 + ​LaserCutConnerPower=5.00000
 + ​LaserCutWorkPower=10.00000
 + ​LaserCutSpeed=40.00000
 + ​LaserEngravePower=20.00000
 + ​LaserEngraveSpeed=100.00000</​code>​
 +
 + 
 +
 +----
 +
 +
 +VER,1,0,0,0
 +FNM,​Test.ext
 +FLG,0,0,0
 +TYP,1
 +
 +
 +SUB001
 +SET002,​20000
 +CMD101,2
 +CMD405,​4861,​1
 +CMD102,​416,​20833,​97222
 +CMD107,​1,​4166,​41666,​1388888
 +CMD108,​2,​1388
 +CMD402,1000
 +CMD408,​1000,​6000
 +CMD001,​-4761,​19
 +CMD050,2,1
 +CMD406,​2752513,​11052f
 +CMD005,​1,​6288
 +CMD006,2,33
 +CMD406,​2818050,​0b0000,​aaaaaa
 +CMD005,​1,​-4789
 +CMD006,2,47
 +
 +CMD402,1000
 +CMD408,​1000,​6000
 +
 +CMD005,​1,​6288
 +CMD006,2,61
 +
 +CMD005,​1,​-4789
 +CMD006,2,75
 +
 +CMD005,​1,​6288
 +CMD006,2,89
 +
 +CMD402,1100
 +CMD408,​1100,​6000
 +
 +CMD005,​1,​-4789
 +CMD006,​2,​103
 +
 +CMD402,1200
 +CMD408,​1200,​6000
 +
 +CMD005,​1,​6288
 +CMD006,​2,​117
 +
 +CMD402,1300
 +CMD408,​1300,​6000
 +
 +CMD005,​1,​-4789
 +CMD006,​2,​130
 +
 +CMD402,1400
 +CMD408,​1400,​6000
 +
 +CMD005,​1,​6288
 +CMD006,​2,​144
 +
 +CMD402,1500
 +CMD408,​1500,​6000
 +
 +CMD005,​1,​-4789
 +CMD006,​2,​158
 +
 +CMD402,1600
 +CMD408,​1600,​6000
 +
 +CMD005,​1,​6288
 +CMD006,​2,​172
 +
 +
 +CMD005,​1,​-4789
 +CMD006,​2,​186
 +
 +CMD005,​1,​6288
 +CMD006,​2,​200
 +
 +CMD402,1700
 +CMD408,​1700,​6000
 +
 +CMD005,​1,​-4789
 +CMD006,​2,​214
 +
 +CMD005,​1,​6288
 +CMD006,​2,​228
 +
 +CMD005,​1,​-4789
 +CMD006,​2,​242
 +
 +CMD402,1800
 +CMD408,​1800,​6000
 +
 +CMD005,​1,​6288
 +CMD006,​2,​255
 +
 +CMD005,​1,​-4789
 +CMD006,​2,​269
 +
 +CMD005,​1,​6288
 +CMD006,​2,​283
 +
 +CMD005,​1,​-4789
 +CMD006,​2,​297
 +
 +CMD402,1900
 +CMD408,​1900,​6000
 +
 +CMD005,​1,​6288
 +CMD006,​2,​311
 +
 +CMD005,​1,​-4789
 +CMD006,​2,​325
 +
 +CMD005,​1,​6288
 +CMD006,​2,​339
 +
 +CMD005,​1,​-4789
 +CMD006,​2,​353
 +
 +CMD005,​1,​6288
 +CMD006,​2,​367
 +
 +CMD005,​1,​-4789
 +CMD006,​2,​380
 +
 +CMD005,​1,​6288
 +CMD006,​2,​394
 +
 +CMD402,2000
 +CMD408,​2100,​6000
 +
 +CMD005,​1,​-4789
 +CMD006,​2,​408
  
laser_hacking.txt · Last modified: 2013/08/13 12:13 (external edit)