15 changed files with 1080 additions and 2 deletions
-
BINObsidian.jar
-
BINSublime Text3 Monokai.jar
-
329src/main/java/a8k/a8k_can_protocol/CmdId.java
-
18src/main/java/a8k/a8k_can_protocol/CmdIdInfo.java
-
235src/main/java/a8k/a8k_can_protocol/Errorcode.java
-
5src/main/java/a8k/a8k_can_protocol/ModuleId.java
-
116src/main/java/a8k/a8k_can_protocol/Packet.java
-
149src/main/java/a8k/base_hardware/A8kCanBusService.java
-
82src/main/java/a8k/base_hardware/ReconnectingWebSocketClient.java
-
16src/main/java/a8k/controler/ZhaoheTestControler.java
-
25src/main/java/a8k/service/ConsumableLoadingService.java
-
74src/main/java/a8k/utils/ByteArray.java
-
2src/main/java/com/iflytop/a800/BoditechA800Application.java
-
2src/main/resources/application-dev.yml
-
29vjtools-code-conventions-idea.xml
@ -0,0 +1,329 @@ |
|||
package a8k.a8k_can_protocol; |
|||
|
|||
import java.util.Collections; |
|||
import java.util.Set; |
|||
|
|||
public class CmdId { |
|||
|
|||
public static int CMDID(int mainid, int subid) { |
|||
return (mainid << 8) + subid; |
|||
} |
|||
|
|||
public static final int kboard_reset = CMDID(0, 0); // para:{}, ack:{} |
|||
|
|||
public static final int kevent_bus_reg_change_report = CMDID(0, 100); // val{regindex, oldval, toval} |
|||
|
|||
public static final int kmodule_ping = CMDID(1, 0); |
|||
public static final int kmodule_get_status = CMDID(1, 4); |
|||
public static final int kmodule_stop = CMDID(1, 1); |
|||
public static final int kmodule_set_reg = CMDID(1, 5); |
|||
public static final int kmodule_get_reg = CMDID(1, 6); |
|||
public static final int kmodule_get_error = CMDID(1, 10); |
|||
public static final int kmodule_clear_error = CMDID(1, 11); |
|||
public static final int kmodule_active_cfg = CMDID(1, 16); |
|||
|
|||
public static final int kxymotor_enable = CMDID(3, 1); |
|||
public static final int kxymotor_move_by = CMDID(3, 2); |
|||
public static final int kxymotor_move_to = CMDID(3, 3); |
|||
public static final int kxymotor_move_to_zero = CMDID(3, 4); |
|||
public static final int kxymotor_read_pos = CMDID(3, 6); |
|||
public static final int kxymotor_read_inio_index_in_stm32 = CMDID(3, 7); |
|||
public static final int kxymotor_read_inio = CMDID(3, 8); |
|||
public static final int kxymotor_set_pos = CMDID(3, 9); |
|||
public static final int kxymotor_motor_move_by_direct = CMDID(3, 10); // int32_t motor1_dpos, int32_t motor2_dpos |
|||
public static final int kxymotor_read_enc_direct = CMDID(3, 11); // int32_t *enc1, int32_t *enc2 |
|||
|
|||
/*********************************************************************************************************************** |
|||
* 光学模组 * |
|||
***********************************************************************************************************************/ |
|||
public static final int ka8000_optical_module_power_ctrl = CMDID(6, 0); // para:{4}, ack:{} |
|||
public static final int ka8000_optical_open_laser = CMDID(6, 1); // para:{4}, ack:{} |
|||
public static final int ka8000_optical_close_laser = CMDID(6, 2); // para:{4}, ack:{} |
|||
public static final int ka8000_optical_set_laster_gain = CMDID(6, 3); // para:{4,4}, ack:{} |
|||
public static final int ka8000_optical_set_scan_amp_gain = CMDID(6, 4); // para:{4,4}, ack:{} |
|||
public static final int ka8000_optical_read_scanner_adc_val = CMDID(6, 5); // para:{4}, ack:{4} |
|||
public static final int ka8000_optical_read_laster_adc_val = CMDID(6, 6); // para:{4}, ack:{4} |
|||
public static final int ka8000_optical_scan_current_point_amp_adc_val = CMDID(6, 7); // para:{4,4,4,4}, ack:{4,4} |
|||
public static final int ka8000_optical_start_capture = CMDID(6, 8); // para:{n/a} |
|||
public static final int ka8000_optical_read_raw = CMDID(6, 9); // para:{index,size} |
|||
|
|||
public static final int ka8k_opt_v2_t_start_scan = CMDID(7, 0); // (int32_t scanDirection, int32_t lasterGain,int32_t scanGain) |
|||
public static final int ka8k_opt_v2_f_start_scan = CMDID(7, 1); // (int32_t scanDirection, int32_t lasterGain,int32_t scanGain) |
|||
public static final int ka8k_opt_v2_t_open_laster = CMDID(7, 10); // (int32_t lasterGain,int32_t scanGain) for_debug |
|||
public static final int ka8k_opt_v2_t_close_laster = CMDID(7, 11); // () for_debug |
|||
public static final int ka8k_opt_v2_t_readVal = CMDID(7, 12); // (int32_t *val0,int32_t *val1) for_debug |
|||
public static final int ka8k_opt_v2_f_open_laster = CMDID(7, 13); // (int32_t lasterGain,int32_t scanGain) for_debug |
|||
public static final int ka8k_opt_v2_f_close_laster = CMDID(7, 14); // () for_debug |
|||
public static final int ka8k_opt_v2_f_readVal = CMDID(7, 15); // (int32_t *val0,int32_t *val1) for_debug |
|||
|
|||
/*********************************************************************************************************************** |
|||
* STEP_MOTOR * |
|||
***********************************************************************************************************************/ |
|||
|
|||
public static final int kstep_motor_enable = CMDID(2, 1); // para:{1}, ack:{} |
|||
public static final int kstep_motor_read_pos = CMDID(2, 11); // para:{}, ack:{4} |
|||
public static final int kstep_motor_easy_rotate = CMDID(2, 17); // para:{4}, ack:{} |
|||
public static final int kstep_motor_easy_move_by = CMDID(2, 18); // para:{4}, ack:{} |
|||
public static final int kstep_motor_easy_move_to = CMDID(2, 19); // para:{4}, ack:{} |
|||
public static final int kstep_motor_easy_move_to_zero = CMDID(2, 20); // para:{1}, ack:{} |
|||
public static final int kstep_motor_easy_set_current_pos = CMDID(2, 21); // para:{4}, ack:{} |
|||
public static final int kstep_motor_easy_move_to_io = CMDID(2, 22); // para:{4,4}, ack:{} |
|||
public static final int kstep_motor_stop = CMDID(2, 40); // para:{4}, ack:{} |
|||
public static final int kstep_motor_active_cfg = CMDID(2, 41); // para:{4}, ack:{} |
|||
public static final int kstep_motor_read_io_state = CMDID(2, 42); // para:{4}, ack:{} |
|||
public static final int kstep_motor_easy_move_to_end_point = CMDID(2, 44); // |
|||
public static final int kstep_motor_easy_reciprocating_motion = CMDID(2, 45); // (int32_t startpos, int32_t endpos, int32_t times) = 0; |
|||
|
|||
public static final int kstep_motor_read_tmc5130_status = CMDID(2, 50); // |
|||
public static final int kstep_motor_read_tmc5130_state = CMDID(2, 51); // 调试使用 |
|||
public static final int kstep_motor_read_io_index_in_stm32 = CMDID(2, 56); // 调试使用 |
|||
public static final int kstep_motor_set_subdevice_reg = CMDID(2, 57); // 调试使用 |
|||
public static final int kstep_motor_get_subdevice_reg = CMDID(2, 58); // 调试使用 |
|||
|
|||
/*********************************************************************************************************************** |
|||
* MINI_SERVO * |
|||
***********************************************************************************************************************/ |
|||
public static final int kmini_servo_enable = CMDID(102, 1); |
|||
public static final int kmini_servo_read_pos = CMDID(102, 2); |
|||
public static final int kmini_servo_active_cfg = CMDID(102, 3); |
|||
public static final int kmini_servo_stop = CMDID(102, 4); |
|||
public static final int kmini_servo_set_mid_point = CMDID(102, 7); |
|||
public static final int kmini_servo_read_io_state = CMDID(102, 8); |
|||
|
|||
public static final int kmini_servo_move_to = CMDID(102, 9); |
|||
public static final int kmini_servo_rotate = CMDID(102, 10); |
|||
public static final int kmini_servo_rotate_with_torque = CMDID(102, 11); |
|||
|
|||
/*********************************************************************************************************************** |
|||
* BOARD * |
|||
***********************************************************************************************************************/ |
|||
public static final int kextboard_read_inio = CMDID(103, 1); // para:{index}, ack:{state} |
|||
public static final int kextboard_write_outio = CMDID(103, 2); // para:{index,state}, ack:{} |
|||
public static final int kextboard_read_muti_inio = CMDID(103, 3); // para:{}, ack:{states} |
|||
public static final int kextboard_read_inio_index_in_stm32 = CMDID(103, 4); // para:{index}, ack:{index_in_stm32} |
|||
public static final int kextboard_read_outio_index_in_stm32 = CMDID(103, 5); // para:{index}, ack:{index_in_stm32} |
|||
public static final int kextboard_read_outio = CMDID(103, 6); // para:{index}, ack:{state} |
|||
|
|||
/*********************************************************************************************************************** |
|||
* CODE_SCANER * |
|||
***********************************************************************************************************************/ |
|||
public static final int kcode_scaner_start_scan = CMDID(104, 1); // para:{}, ack:{} |
|||
public static final int kcode_scaner_stop_scan = CMDID(104, 2); // para:{}, ack:{} |
|||
public static final int kcode_scaner_result_is_ready = CMDID(104, 3); // para:{}, ack:{} |
|||
public static final int kcode_scaner_read_scaner_result = CMDID(104, 4); // para:{}, ack:{X} |
|||
public static final int kcode_scaner_get_result_length = CMDID(104, 5); // para:{}, ack:{X} |
|||
|
|||
/*********************************************************************************************************************** |
|||
* FAN_CTRL * |
|||
***********************************************************************************************************************/ |
|||
public static final int kfan_controler_set_speed = CMDID(0x69, 0); |
|||
|
|||
/*********************************************************************************************************************** |
|||
* WATER_COOLING_TEMPERATURE * |
|||
***********************************************************************************************************************/ |
|||
public static final int ktemp_controler_start_hearting = CMDID(0x70, 0); |
|||
public static final int ktemp_controler_stop_hearting = CMDID(0x70, 1); |
|||
public static final int ktemp_controler_set_peltier_power_level = CMDID(0x70, 2); // 测试使用 para:{+-level100} |
|||
public static final int ktemp_controler_set_pump_level = CMDID(0x70, 3); // 测试使用 para:{+ level100} |
|||
public static final int ktemp_controler_set_fan_level = CMDID(0x70, 4); // 测试使用 para:{+ level100} |
|||
public static final int ktemp_controler_enable_log = CMDID(0x70, 5); // 测试使用 para:{enable log} |
|||
|
|||
/*********************************************************************************************************************** |
|||
* IDCARD_READER * |
|||
***********************************************************************************************************************/ |
|||
public static final int ka8000_idcard_reader_read_raw = CMDID(0x71, 0); // para:{index}, ack:{} |
|||
public static final int ka8000_idcard_write_raw = CMDID(0x71, 1); // (int32_t add, uint8_t* data, int32_t len) |
|||
public static final int ka8000_idcard_erase = CMDID(0x71, 2); // |
|||
public static final int ka8000_idcard_earse_unlock = CMDID(0x71, 3); // |
|||
public static final int kevent_a8000_idcard_online = CMDID(0x71, 200); // |
|||
public static final int kevent_a8000_idcard_offline = CMDID(0x71, 201); // |
|||
|
|||
/*********************************************************************************************************************** |
|||
* 移液枪 * |
|||
***********************************************************************************************************************/ |
|||
|
|||
public static final int kpipette_ctrl_init_device = CMDID(0x72, 1); // param:(void) |
|||
public static final int kpipette_ctrl_put_tip = CMDID(0x72, 2); // param:(void) |
|||
public static final int kpipette_ctrl_move_to_ul = CMDID(0x72, 3); // param:(int32_t ul) |
|||
public static final int kpipette_lld_prepare = CMDID(0x72, 4); // param:(void) |
|||
public static final int kpipette_plld = CMDID(0x72, 5); // param:(int32_t zdpos, int32_t p_threshold) |
|||
public static final int kpipette_clld = CMDID(0x72, 6); // param:(int32_t zdpos, int32_t c_threshold) |
|||
public static final int kpipette_mlld = CMDID(0x72, 7); // param:(int32_t zdpos, int32_t c_threshold, int32_t |
|||
// p_threshold) |
|||
public static final int kpipette_lld_is_detect_liquid = CMDID(0x72, 8); // param:(void) ack(int32_t isdetect) |
|||
public static final int kpipette_aspirate = CMDID(0x72, 9); // param:(int32_t ul) |
|||
public static final int kpipette_distribut = CMDID(0x72, 10); // param:(int32_t ul) |
|||
public static final int kpipette_shake_up = CMDID(0x72, 11); // param:(int32_t ul, int32_t times) |
|||
public static final int kpipette_aspirate_llf = CMDID(0x72, 12); // param:(int32_t ul, int32_t zmotor_v) |
|||
public static final int kpipette_distribut_llf = CMDID(0x72, 13); // param:(int32_t ul, int32_t zmotor_v) |
|||
public static final int kpipette_shake_up_llf = CMDID(0x72, 14); // param:(int32_t ul, int32_t zmotor_v, int32_t |
|||
// times) |
|||
|
|||
public static final int kpipette_enable_zmotor = CMDID(0x72, 20); // para:{enable}, ack:{} |
|||
public static final int kpipette_write_cmd_direct = CMDID(0x72, 21); // para:{strbuf}, ack:{strbuf} |
|||
public static final int kpipette_get_sensor_sample_data = CMDID(0x72, 22); // para:{index} , |
|||
// ack:{motor_pos,cval,pval} |
|||
public static final int kpipette_get_sensor_sample_data_num = CMDID(0x72, 23); // para:{} , ack:{num} |
|||
public static final int kpipette_sensor_sample_data_report = CMDID(0x72, 50); // val{regindex, oldval, toval} |
|||
|
|||
/*********************************************************************************************************************** |
|||
* 板夹仓板夹扫码 * |
|||
***********************************************************************************************************************/ |
|||
|
|||
public static final int kplate_code_scaner_push_card_and_scan = CMDID(0x73, 1); // int32_t startpos |
|||
public static final int kplate_code_scaner_stop_scan = CMDID(0x73, 2); // |
|||
public static final int kplate_code_scaner_read_result = CMDID(0x73, 3); // int32_t packetIndex, uint8_t* data, |
|||
// int32_t* len |
|||
public static final int kplate_code_scaner_read_result_point_num = CMDID(0x73, 4); // int32_t* pointNum |
|||
public static final int kplate_code_scaner_read_code = CMDID(0x73, 5); // int32_t* rawcode, int32_t* legal, int32_t* |
|||
// item, int32_t* lot |
|||
|
|||
public static final int kplate_code_scaner_adc_readraw = CMDID(0x73, 6); // 硬件测试使用 int32_t* val |
|||
public static final int kplate_code_scaner_open_laser = CMDID(0x73, 7); // 硬件测试使用 |
|||
public static final int kplate_code_scaner_close_laser = CMDID(0x73, 8); // 硬件测试使用 |
|||
|
|||
public static final Set<CmdIdInfo> cmdInfoMap; |
|||
|
|||
static public String idtoString(Integer cmdid){ |
|||
for(CmdIdInfo ci : cmdInfoMap){ |
|||
if(ci.id == cmdid){ |
|||
return ci.name; |
|||
} |
|||
} |
|||
return String.format("unknown(%d)", cmdid); |
|||
} |
|||
static public CmdIdInfo getCmdIdInfo(Integer cmdid){ |
|||
for(CmdIdInfo ci : cmdInfoMap){ |
|||
if(ci.id == cmdid){ |
|||
return ci; |
|||
} |
|||
} |
|||
|
|||
return new CmdIdInfo(cmdid,"unkown",CmdIdInfo.ATTACH_IS_BYTES,CmdIdInfo.ATTACH_IS_BYTES); |
|||
} |
|||
|
|||
|
|||
static { |
|||
cmdInfoMap = Collections.unmodifiableSet(Set.of(// |
|||
new CmdIdInfo(kboard_reset, "kboard_reset",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32), // |
|||
new CmdIdInfo(kevent_bus_reg_change_report, "kevent_bus_reg_change_report",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kmodule_ping, "kmodule_ping",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kmodule_get_status, "kmodule_get_status",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32), // |
|||
new CmdIdInfo(kmodule_stop, "kmodule_stop",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kmodule_set_reg, "kmodule_set_reg",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kmodule_get_reg, "kmodule_get_reg",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kmodule_get_error, "kmodule_get_error",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kmodule_clear_error, "kmodule_clear_error",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kmodule_active_cfg, "kmodule_active_cfg",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kxymotor_enable, "kxymotor_enable",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kxymotor_move_by, "kxymotor_move_by",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kxymotor_move_to, "kxymotor_move_to",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kxymotor_move_to_zero, "kxymotor_move_to_zero",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kxymotor_read_pos, "kxymotor_read_pos",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kxymotor_read_inio_index_in_stm32, "kxymotor_read_inio_index_in_stm32",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kxymotor_read_inio, "kxymotor_read_inio",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kxymotor_set_pos, "kxymotor_set_pos",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kxymotor_motor_move_by_direct, "kxymotor_motor_move_by_direct",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kxymotor_read_enc_direct, "kxymotor_read_enc_direct",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(ka8000_optical_module_power_ctrl, "ka8000_optical_module_power_ctrl",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(ka8000_optical_open_laser, "ka8000_optical_open_laser",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(ka8000_optical_close_laser, "ka8000_optical_close_laser",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(ka8000_optical_set_laster_gain, "ka8000_optical_set_laster_gain",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32), // |
|||
new CmdIdInfo(ka8000_optical_set_scan_amp_gain, "ka8000_optical_set_scan_amp_gain",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(ka8000_optical_read_scanner_adc_val, "ka8000_optical_read_scanner_adc_val",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(ka8000_optical_read_laster_adc_val, "ka8000_optical_read_laster_adc_val",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(ka8000_optical_scan_current_point_amp_adc_val, "ka8000_optical_scan_current_point_amp_adc_val",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(ka8000_optical_start_capture, "ka8000_optical_start_capture",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(ka8000_optical_read_raw, "ka8000_optical_read_raw",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_BYTES),// |
|||
new CmdIdInfo(ka8k_opt_v2_t_start_scan, "ka8k_opt_v2_t_start_scan",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(ka8k_opt_v2_f_start_scan, "ka8k_opt_v2_f_start_scan",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(ka8k_opt_v2_t_open_laster, "ka8k_opt_v2_t_open_laster",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(ka8k_opt_v2_t_close_laster, "ka8k_opt_v2_t_close_laster",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(ka8k_opt_v2_t_readVal, "ka8k_opt_v2_t_readVal",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(ka8k_opt_v2_f_open_laster, "ka8k_opt_v2_f_open_laster",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(ka8k_opt_v2_f_close_laster, "ka8k_opt_v2_f_close_laster",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(ka8k_opt_v2_f_readVal, "ka8k_opt_v2_f_readVal",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kstep_motor_enable, "kstep_motor_enable",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kstep_motor_read_pos, "kstep_motor_read_pos",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kstep_motor_easy_rotate, "kstep_motor_easy_rotate",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kstep_motor_easy_move_by, "kstep_motor_easy_move_by",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kstep_motor_easy_move_to, "kstep_motor_easy_move_to",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kstep_motor_easy_move_to_zero, "kstep_motor_easy_move_to_zero",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kstep_motor_easy_set_current_pos, "kstep_motor_easy_set_current_pos",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kstep_motor_easy_move_to_io, "kstep_motor_easy_move_to_io",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kstep_motor_stop, "kstep_motor_stop",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kstep_motor_active_cfg, "kstep_motor_active_cfg",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kstep_motor_read_io_state, "kstep_motor_read_io_state",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kstep_motor_easy_move_to_end_point, "kstep_motor_easy_move_to_end_point",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kstep_motor_easy_reciprocating_motion, "kstep_motor_easy_reciprocating_motion",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kstep_motor_read_tmc5130_status, "kstep_motor_read_tmc5130_status",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kstep_motor_read_tmc5130_state, "kstep_motor_read_tmc5130_state",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kstep_motor_read_io_index_in_stm32, "kstep_motor_read_io_index_in_//stm32",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kstep_motor_set_subdevice_reg, "kstep_motor_set_subdevice_reg",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kstep_motor_get_subdevice_reg, "kstep_motor_//get_subdevice_reg",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kmini_servo_enable, "kmini_servo_enable",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kmini_servo_read_pos, "kmini_servo_read_pos",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kmini_servo_active_cfg, "kmini_servo_active_cfg",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kmini_servo_stop, "kmini_servo_stop",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kmini_servo_set_mid_point, "kmini_servo_set_mid_point",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kmini_servo_read_io_state, "kmini_servo_read_i//o_state",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kmini_servo_move_to, "kmini_servo_move_to",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kmini_servo_rotate, "kmini_servo_rotate",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kmini_servo_rotate_with_torque, "kmini_servo_rotate_with_torque",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kextboard_read_inio, "kextboard_read_inio",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kextboard_write_outio, "kextboard_write_outio",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kextboard_read_muti_inio, "kextboard_read_muti_inio",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kextboard_read_inio_index_in_stm32, "kextboard_read_inio_index_in_stm32",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kextboard_read_outio_index_in_stm32, "kextboard_//read_outio_index_in_stm32",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kextboard_read_outio, "kextboard_read_outio",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kcode_scaner_start_scan, "kcode_scaner_start_scan",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kcode_scaner_stop_scan, "kcode_scaner_stop_scan",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kcode_scaner_result_is_ready, "kcode_scaner_result_is_ready",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kcode_scaner_read_scaner_result, "kcode_scaner_read_scaner_result",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kcode_scaner_get_result_length, "kcode_scaner_get_result//_length",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32), // |
|||
new CmdIdInfo(kfan_controler_set_speed, "kfan_controler_set_speed",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(ktemp_controler_start_hearting, "ktemp_controler_start_hearting",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(ktemp_controler_stop_hearting, "ktemp_controler_stop_hearting",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(ktemp_controler_set_peltier_power_level, "ktemp_controler_set_peltier_power_level",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(ktemp_controler_set_pump_level, "ktemp_controler_set_pump_level",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(ktemp_controler_set_fan_level, "ktemp_controler_set_fan_level",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(ktemp_controler_enable_log, "ktemp_controler_enable_log",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(ka8000_idcard_reader_read_raw, "ka8000_idcard_reader_read_raw",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_BYTES),// |
|||
new CmdIdInfo(ka8000_idcard_write_raw, "ka8000_idcard_write_//raw",CmdIdInfo.ATTACH_IS_BYTES,CmdIdInfo.ATTACH_IS_BYTES),// |
|||
new CmdIdInfo(ka8000_idcard_erase, "ka8000_idcard_erase",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(ka8000_idcard_earse_unlock, "ka8000_idcard_earse_unlock",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kevent_a8000_idcard_online, "kevent_a8000_idcard_online",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kevent_a8000_idcard_offline, "kevent_a8000_idcard_offline",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kpipette_ctrl_init_device, "kpipette_ctrl_init_device",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kpipette_ctrl_put_tip, "kpipette_ctrl_put_tip",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kpipette_ctrl_move_to_ul, "kpipette_ctrl_move_to_ul",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kpipette_lld_prepare, "kpipette_lld_prepare",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kpipette_plld, "kpipette_plld",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kpipette_clld, "kpipette_clld",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kpipette_mlld, "kpipette_mlld",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kpipette_lld_is_detect_liquid, "kpipette_lld_is_detect_liquid",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kpipette_aspirate, "kpipette_aspirate",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kpipette_distribut, "kpipette_distribut",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kpipette_shake_up, "kpipette_shake_up",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kpipette_aspirate_llf, "kpipette_aspirate_llf",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kpipette_distribut_llf, "kpipette_distribut_llf",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kpipette_shake_up_llf, "kpipette_shake_up_llf",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kpipette_enable_zmotor, "kpipette_enable_zmotor",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kpipette_write_cmd_direct, "kpipette_write_cmd_direct",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kpipette_get_sensor_sample_data, "kpipette_get_sensor_sample_data",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kpipette_get_sensor_sample_data_num, "kpipette_get_sensor_sample_data_num",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kpipette_sensor_sample_data_report, "kpipette_sensor_sample_data_report",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32), |
|||
new CmdIdInfo(kplate_code_scaner_push_card_and_scan, "kplate_code_scaner_push_//card_and_scan",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kplate_code_scaner_stop_scan, "kplate_code_scaner_stop_scan",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kplate_code_scaner_read_result, "kplate_code_scaner_read_result",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kplate_code_scaner_read_result_point_num, "kplate_code_scaner_read_result_point_num",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kplate_code_scaner_read_code, "kplate_code_scaner_read_code",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kplate_code_scaner_adc_readraw, "kplate_code_scaner_adc_readraw",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kplate_code_scaner_open_laser, "kplate_code_scaner_open_laser",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32),// |
|||
new CmdIdInfo(kplate_code_scaner_close_laser, "kplate_code_scaner_close_laser",CmdIdInfo.ATTACH_IS_INT32,CmdIdInfo.ATTACH_IS_INT32)// |
|||
)); |
|||
} |
|||
|
|||
|
|||
|
|||
} |
@ -0,0 +1,18 @@ |
|||
package a8k.a8k_can_protocol; |
|||
|
|||
public class CmdIdInfo { |
|||
public String name; |
|||
public int id; |
|||
public int cmdAttachType = ATTACH_IS_INT32; |
|||
public int receiptAttachType = ATTACH_IS_BYTES; |
|||
|
|||
public final static int ATTACH_IS_BYTES = 1; |
|||
public final static int ATTACH_IS_INT32 = 2; |
|||
|
|||
public CmdIdInfo(Integer id, String name, int cmdAttachType, int receiptAttachType) { |
|||
this.id = id; |
|||
this.name = name; |
|||
this.cmdAttachType = cmdAttachType; |
|||
this.receiptAttachType = receiptAttachType; |
|||
} |
|||
} |
@ -0,0 +1,235 @@ |
|||
package a8k.a8k_can_protocol; |
|||
|
|||
public class Errorcode { |
|||
|
|||
public static final int ksucc = (0 + 0); |
|||
public static final int kfail = (0 + 1); |
|||
/*********************************************************************************************************************** |
|||
* 协议错误码 * |
|||
***********************************************************************************************************************/ |
|||
public static final int kparam_out_of_range = (100 + 2); // 参数超出范围 |
|||
public static final int kcmd_not_support = (100 + 3); // 操作不支持 |
|||
public static final int kdevice_is_busy = (100 + 4); // 设备忙 |
|||
public static final int kdevice_is_offline = (100 + 5); // 设备离线 |
|||
public static final int kovertime = (100 + 6); |
|||
public static final int knoack = (100 + 7); |
|||
public static final int kerrorack = (100 + 8); |
|||
public static final int kdevice_offline = (100 + 9); |
|||
public static final int ksubdevice_overtime = (100 + 11); |
|||
public static final int kbuffer_not_enough = (100 + 12); |
|||
public static final int kcmd_param_num_error = (100 + 14); |
|||
public static final int kcheckcode_is_error = (100 + 15); |
|||
public static final int killegal_operation = (100 + 16); |
|||
|
|||
/*********************************************************************************************************************** |
|||
* 模块错误码 * |
|||
***********************************************************************************************************************/ |
|||
public static final int kmodule_opeation_break_by_user = (200 + 2); // 用户中断 |
|||
public static final int kmodule_not_find_reg = (200 + 7); // et 未找到配置索引 |
|||
|
|||
/*********************************************************************************************************************** |
|||
* XY电机驱动错误码 * |
|||
***********************************************************************************************************************/ |
|||
public static final int kxymotor_x_find_zero_edge_fail = (300 + 6); // 离开零点失败 |
|||
public static final int kxymotor_y_find_zero_edge_fail = (300 + 7); // 离开零点失败 |
|||
public static final int kxymotor_not_enable = (300 + 8); |
|||
public static final int kxymotor_target_pos_outof_range = (300 + 9); |
|||
/*********************************************************************************************************************** |
|||
* 移液枪错误码 * |
|||
***********************************************************************************************************************/ |
|||
public static final int kpipette_error_NoError = (400 + 0); // 无错误 |
|||
public static final int kpipette_error_InitFail = (400 + 1); // 初始化失败 |
|||
public static final int kpipette_error_InvalidCmd = (400 + 2); // 无效命令 |
|||
public static final int kpipette_error_InvalidArg = (400 + 3); // 无效参数 |
|||
public static final int kpipette_error_PressureSensorError = (400 + 4); // 压力传感器故障 |
|||
public static final int kpipette_error_OverPressure = (400 + 5); // 超过压力 |
|||
public static final int kpipette_error_LLDError = (400 + 6); // LLD 错误 |
|||
public static final int kpipette_error_DeviceNotInit = (400 + 7); // 设备未初始化 |
|||
public static final int kpipette_error_TipPopError = (400 + 8); // Tip 弹出错误 |
|||
public static final int kpipette_error_PumpOverload = (400 + 9); // 泵过载 |
|||
public static final int kpipette_error_TipDrop = (400 + 10); // Tip 脱落 |
|||
public static final int kpipette_error_CanBusError = (400 + 11); // CAN 总线故障 |
|||
public static final int kpipette_error_InvalidChecksum = (400 + 12); // 无效校验和 |
|||
public static final int kpipette_error_EEPROMError = (400 + 13); // EEPROM 故障 |
|||
public static final int kpipette_error_CmdBufferEmpty = (400 + 14); // 命令缓冲区为空 |
|||
public static final int kpipette_error_CmdBufferOverflow = (400 + 15); // 命令溢出 |
|||
public static final int kpipette_error_TipBlock = (400 + 16); // Tip 堵塞 |
|||
public static final int kpipette_error_AirSuction = (400 + 17); // 吸入空气 |
|||
public static final int kpipette_error_Bubble = (400 + 18); // 液体中有气泡/泡沫 |
|||
public static final int kpipette_error_VolumeError = (400 + 19); // 吸取/分配量不准确 |
|||
public static final int kpipette_error_TipAlreadyLoad = (400 + 20); // Tip已经装载 |
|||
public static final int kpipette_error_TipLoadFail = (400 + 21); |
|||
public static final int kpipette_error_tipisload_when_lld_prepare = (500 + 0); // 未卸载Tip就进行LLD准备 |
|||
public static final int kpipette_error_uninited = (500 + 1); // 泵机未初始化 |
|||
public static final int kpipette_error_not_lld_prepare = (500 + 2); // 为执行lld_prepare |
|||
public static final int kpipette_error_pump_load_val_is_not_empty = (500 + 3); // 为执行lld_prepare |
|||
|
|||
/*********************************************************************************************************************** |
|||
* 步进电机错误码 * |
|||
***********************************************************************************************************************/ |
|||
public static final int kstep_motor_not_found_zero_point = (600 + 0); // 未找到零点 |
|||
public static final int kstep_motor_not_go_zero = (600 + 1); // 设备未归零 |
|||
public static final int kstep_motor_over_temperature = (600 + 2); // 过温 |
|||
public static final int kstep_motor_over_voltage = (600 + 3); // 过压 |
|||
public static final int kstep_motor_run_overtime = (600 + 4); // 运行超时 |
|||
public static final int kstep_motor_not_enable = (600 + 5); // 电机未使能 |
|||
public static final int kstep_motor_ioindex_out_of_range = (600 + 6); // IO超出范围 |
|||
public static final int kstep_motor_subic_reset = (600 + 7); // 子IC复位 |
|||
public static final int kstep_motor_drv_err = (600 + 8); // 驱动器异常 |
|||
public static final int kstep_motor_uv_cp = (600 + 9); // 驱动器异常 |
|||
public static final int kstep_motor_not_found_point_edge = (600 + 10); // 未找到零点 |
|||
|
|||
/*********************************************************************************************************************** |
|||
* 舵机错误码 * |
|||
***********************************************************************************************************************/ |
|||
public static final int kmini_servo_not_enable = (700 + 0); // |
|||
public static final int kmini_servo_mode_not_support = (700 + 1); // |
|||
/*********************************************************************************************************************** |
|||
* 风扇错误码 * |
|||
***********************************************************************************************************************/ |
|||
public static final int kfan_hardware_fault = (800 + 0); // |
|||
|
|||
/*********************************************************************************************************************** |
|||
* 水冷错误码 * |
|||
***********************************************************************************************************************/ |
|||
public static final int kwater_cooling_fan_error = (900 + 0); // |
|||
public static final int kwater_cooling_temperature_sensor_error = (900 + 2); // |
|||
public static final int kwater_cooling_pump_is_error = (900 + 3); // |
|||
public static final int kwater_cooling_pelter_is_error = (900 + 4); // |
|||
|
|||
static public String toString(Integer ecode) { |
|||
switch (ecode) { |
|||
case ksucc: |
|||
return "ksucc"; |
|||
case kfail: |
|||
return "kfail"; |
|||
case kparam_out_of_range: |
|||
return "kparam_out_of_range"; |
|||
case kcmd_not_support: |
|||
return "kcmd_not_support"; |
|||
case kdevice_is_busy: |
|||
return "kdevice_is_busy"; |
|||
case kdevice_is_offline: |
|||
return "kdevice_is_offline"; |
|||
case kovertime: |
|||
return "kovertime"; |
|||
case knoack: |
|||
return "knoack"; |
|||
case kerrorack: |
|||
return "kerrorack"; |
|||
case kdevice_offline: |
|||
return "kdevice_offline"; |
|||
case ksubdevice_overtime: |
|||
return "ksubdevice_overtime"; |
|||
case kbuffer_not_enough: |
|||
return "kbuffer_not_enough"; |
|||
case kcmd_param_num_error: |
|||
return "kcmd_param_num_error"; |
|||
case kcheckcode_is_error: |
|||
return "kcheckcode_is_error"; |
|||
case killegal_operation: |
|||
return "killegal_operation"; |
|||
case kmodule_opeation_break_by_user: |
|||
return "kmodule_opeation_break_by_user"; |
|||
case kmodule_not_find_reg: |
|||
return "kmodule_not_find_reg"; |
|||
case kxymotor_x_find_zero_edge_fail: |
|||
return "kxymotor_x_find_zero_edge_fail"; |
|||
case kxymotor_y_find_zero_edge_fail: |
|||
return "kxymotor_y_find_zero_edge_fail"; |
|||
case kxymotor_not_enable: |
|||
return "kxymotor_not_enable"; |
|||
case kxymotor_target_pos_outof_range: |
|||
return "kxymotor_target_pos_outof_range"; |
|||
case kpipette_error_NoError: |
|||
return "kpipette_error_NoError"; |
|||
case kpipette_error_InitFail: |
|||
return "kpipette_error_InitFail"; |
|||
case kpipette_error_InvalidCmd: |
|||
return "kpipette_error_InvalidCmd"; |
|||
case kpipette_error_InvalidArg: |
|||
return "kpipette_error_InvalidArg"; |
|||
case kpipette_error_PressureSensorError: |
|||
return "kpipette_error_PressureSensorError"; |
|||
case kpipette_error_OverPressure: |
|||
return "kpipette_error_OverPressure"; |
|||
case kpipette_error_LLDError: |
|||
return "kpipette_error_LLDError"; |
|||
case kpipette_error_DeviceNotInit: |
|||
return "kpipette_error_DeviceNotInit"; |
|||
case kpipette_error_TipPopError: |
|||
return "kpipette_error_TipPopError"; |
|||
case kpipette_error_PumpOverload: |
|||
return "kpipette_error_PumpOverload"; |
|||
case kpipette_error_TipDrop: |
|||
return "kpipette_error_TipDrop"; |
|||
case kpipette_error_CanBusError: |
|||
return "kpipette_error_CanBusError"; |
|||
case kpipette_error_InvalidChecksum: |
|||
return "kpipette_error_InvalidChecksum"; |
|||
case kpipette_error_EEPROMError: |
|||
return "kpipette_error_EEPROMError"; |
|||
case kpipette_error_CmdBufferEmpty: |
|||
return "kpipette_error_CmdBufferEmpty"; |
|||
case kpipette_error_CmdBufferOverflow: |
|||
return "kpipette_error_CmdBufferOverflow"; |
|||
case kpipette_error_TipBlock: |
|||
return "kpipette_error_TipBlock"; |
|||
case kpipette_error_AirSuction: |
|||
return "kpipette_error_AirSuction"; |
|||
case kpipette_error_Bubble: |
|||
return "kpipette_error_Bubble"; |
|||
case kpipette_error_VolumeError: |
|||
return "kpipette_error_VolumeError"; |
|||
case kpipette_error_TipAlreadyLoad: |
|||
return "kpipette_error_TipAlreadyLoad"; |
|||
case kpipette_error_TipLoadFail: |
|||
return "kpipette_error_TipLoadFail"; |
|||
case kpipette_error_tipisload_when_lld_prepare: |
|||
return "kpipette_error_tipisload_when_lld_prepare"; |
|||
case kpipette_error_uninited: |
|||
return "kpipette_error_uninited"; |
|||
case kpipette_error_not_lld_prepare: |
|||
return "kpipette_error_not_lld_prepare"; |
|||
case kpipette_error_pump_load_val_is_not_empty: |
|||
return "kpipette_error_pump_load_val_is_not_empty"; |
|||
case kstep_motor_not_found_zero_point: |
|||
return "kstep_motor_not_found_zero_point"; |
|||
case kstep_motor_not_go_zero: |
|||
return "kstep_motor_not_go_zero"; |
|||
case kstep_motor_over_temperature: |
|||
return "kstep_motor_over_temperature"; |
|||
case kstep_motor_over_voltage: |
|||
return "kstep_motor_over_voltage"; |
|||
case kstep_motor_run_overtime: |
|||
return "kstep_motor_run_overtime"; |
|||
case kstep_motor_not_enable: |
|||
return "kstep_motor_not_enable"; |
|||
case kstep_motor_ioindex_out_of_range: |
|||
return "kstep_motor_ioindex_out_of_range"; |
|||
case kstep_motor_subic_reset: |
|||
return "kstep_motor_subic_reset"; |
|||
case kstep_motor_drv_err: |
|||
return "kstep_motor_drv_err"; |
|||
case kstep_motor_uv_cp: |
|||
return "kstep_motor_uv_cp"; |
|||
case kstep_motor_not_found_point_edge: |
|||
return "kstep_motor_not_found_point_edge"; |
|||
case kmini_servo_not_enable: |
|||
return "kmini_servo_not_enable"; |
|||
case kmini_servo_mode_not_support: |
|||
return "kmini_servo_mode_not_support"; |
|||
case kfan_hardware_fault: |
|||
return "kfan_hardware_fault"; |
|||
case kwater_cooling_fan_error: |
|||
return "kwater_cooling_fan_error"; |
|||
case kwater_cooling_temperature_sensor_error: |
|||
return "kwater_cooling_temperature_sensor_error"; |
|||
case kwater_cooling_pump_is_error: |
|||
return "kwater_cooling_pump_is_error"; |
|||
case kwater_cooling_pelter_is_error: |
|||
return "kwater_cooling_pelter_is_error"; |
|||
} |
|||
return "unkown" + "(" + ecode + ")"; |
|||
} |
|||
} |
@ -0,0 +1,5 @@ |
|||
package a8k.a8k_can_protocol; |
|||
|
|||
public class ModuleId { |
|||
|
|||
} |
@ -0,0 +1,116 @@ |
|||
package a8k.a8k_can_protocol; |
|||
|
|||
import a8k.utils.ByteArray; |
|||
|
|||
public class Packet { |
|||
/** |
|||
* typedef struct { |
|||
* uint16_t packetindex; // 0: |
|||
* uint16_t cmdMainId; // 2: |
|||
* uint8_t cmdSubId; // 4: |
|||
* uint8_t packetType; // 5: |
|||
* uint16_t moduleid; // 6: |
|||
* uint8_t data[]; // 8: |
|||
* } zcr_cmd_header_t; |
|||
* <p> |
|||
* kptv2_cmd = 0, |
|||
* kptv2_ack = 1, |
|||
* kptv2_error_ack = 2, |
|||
* kptv2_event = 3, |
|||
*/ |
|||
|
|||
byte[] raw; |
|||
|
|||
public static final int PACKET_MIN_LEN = 8; |
|||
|
|||
public static final int PACKET_INDEX_OFF = 0; |
|||
public static final int CMD_ID_OFF = 2; |
|||
public static final int PACKET_TYPE_OFF = 5; |
|||
public static final int MODULE_ID_OFF = 6; |
|||
public static final int DATA_BEGIN_OFF = 8; |
|||
|
|||
|
|||
public static final int PACKET_TYPE_CMD = 0; |
|||
public static final int PACKET_TYPE_ACK = 1; |
|||
public static final int PACKET_TYPE_ERROR_ACK = 2; |
|||
public static final int PACKET_TYPE_EVENT = 3; |
|||
|
|||
public Packet(byte[] cmd) { |
|||
raw = new byte[cmd.length]; |
|||
System.arraycopy(cmd, 0, raw, 0, cmd.length); |
|||
} |
|||
|
|||
public Integer getPacketIndex() { |
|||
return ByteArray.readU16bit(raw, 0); |
|||
} |
|||
|
|||
public Integer getCmdId() { |
|||
return ByteArray.readU16bit((raw), 2) * 256 + ByteArray.readU8bit(raw, 4); |
|||
} |
|||
|
|||
public Integer getPacketType() { |
|||
return ByteArray.readU8bit(raw, 5); |
|||
} |
|||
|
|||
public Integer getModuleId() { |
|||
return ByteArray.readU16bit(raw, 6); |
|||
} |
|||
|
|||
public byte[] getCmdContent() { |
|||
byte[] cmdcontent = new byte[raw.length - 8]; |
|||
System.arraycopy(raw, 8, cmdcontent, 0, raw.length - 8); |
|||
return cmdcontent; |
|||
} |
|||
|
|||
public Integer getContentI32(int index) { |
|||
return ByteArray.readU16bit(raw, 8 + index * 4); |
|||
} |
|||
|
|||
public String toByteString() { |
|||
return ByteArray.toByteString(raw); |
|||
} |
|||
|
|||
|
|||
public String toString() { |
|||
int packetType = getPacketType(); |
|||
String ret = ""; |
|||
|
|||
CmdIdInfo cmdIdInfo = CmdId.getCmdIdInfo(getCmdId()); |
|||
|
|||
if (packetType == PACKET_TYPE_CMD) { |
|||
if (cmdIdInfo.cmdAttachType == CmdIdInfo.ATTACH_IS_INT32) { |
|||
ret = String.format("[CMD ] [%x] (%s %d :[%s])", getPacketIndex(), cmdIdInfo.name, getModuleId(), formatInt32ATTACH(getCmdContent())); |
|||
} else { |
|||
ret = String.format("[CMD ] [%x] (%s %d :[%s])", getPacketIndex(), cmdIdInfo.name, getModuleId(), ByteArray.toByteString(getCmdContent())); |
|||
} |
|||
} else if (packetType == PACKET_TYPE_ACK) { |
|||
if (cmdIdInfo.receiptAttachType == CmdIdInfo.ATTACH_IS_INT32) { |
|||
ret = String.format("[ACK ] [%x] (%s %d :[%s])", getPacketIndex(), cmdIdInfo.name, getModuleId(), formatInt32ATTACH(getCmdContent())); |
|||
} else { |
|||
ret = String.format("[ACK ] [%x] (%s %d :[%s])", getPacketIndex(), cmdIdInfo.name, getModuleId(), ByteArray.toByteString(getCmdContent())); |
|||
} |
|||
} else if (packetType == PACKET_TYPE_ERROR_ACK) { |
|||
ret = String.format("[EACK ] [%x] (%s %d :[%s])", getPacketIndex(), cmdIdInfo.name, getModuleId(), Errorcode.toString(getContentI32(0))); |
|||
} else if (packetType == PACKET_TYPE_EVENT) { |
|||
if (cmdIdInfo.cmdAttachType == CmdIdInfo.ATTACH_IS_INT32) { |
|||
ret = String.format("[EVENT] [%x] (%s %d :[%s])", getPacketIndex(), cmdIdInfo.name, getModuleId(), formatInt32ATTACH(getCmdContent())); |
|||
} else { |
|||
ret = String.format("[EVENT] [%x] (%s %d :[%s])", getPacketIndex(), cmdIdInfo.name, getModuleId(), ByteArray.toByteString(getCmdContent())); |
|||
} |
|||
} else { |
|||
ret = String.format("Unknown packet type: %d", packetType); |
|||
} |
|||
return ret; |
|||
} |
|||
|
|||
private String formatInt32ATTACH(byte[] attach) { |
|||
StringBuilder ret = new StringBuilder(); |
|||
for (int i = 0; i < attach.length; i += 4) { |
|||
if (i + 4 >= attach.length) |
|||
break; |
|||
ret.append(String.format("%d ", ByteArray.read32bit(attach, i))); |
|||
} |
|||
return ret.toString(); |
|||
} |
|||
|
|||
} |
@ -0,0 +1,149 @@ |
|||
package a8k.base_hardware; |
|||
|
|||
import a8k.a8k_can_protocol.Packet; |
|||
import a8k.utils.ByteArray; |
|||
import jakarta.annotation.PostConstruct; |
|||
import org.java_websocket.client.WebSocketClient; |
|||
import org.java_websocket.enums.ReadyState; |
|||
import org.java_websocket.handshake.ServerHandshake; |
|||
import org.slf4j.Logger; |
|||
import org.slf4j.LoggerFactory; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.net.URI; |
|||
import java.net.URISyntaxException; |
|||
import java.util.Timer; |
|||
import java.util.TimerTask; |
|||
|
|||
@Component |
|||
public class A8kCanBusService { |
|||
public static final Logger logger = LoggerFactory.getLogger(A8kCanBusService.class); |
|||
|
|||
/** |
|||
* receiptQueue |
|||
* waittingReceiptIndex |
|||
* |
|||
* onPacket |
|||
* if(receipt) |
|||
* send_receipt_queue |
|||
* |
|||
* |
|||
* sendcmd |
|||
* send cmd |
|||
* waiting for receipt |
|||
* for(){ |
|||
* if(receipt.packetIndex == receiptIndex){ |
|||
* return; |
|||
* } |
|||
* wait |
|||
* } |
|||
* |
|||
*/ |
|||
public String uri; //assign by application.yml |
|||
private WebSocketClient client; |
|||
Timer timer = new Timer(); |
|||
boolean need_reconnect = false; |
|||
|
|||
|
|||
@PostConstruct |
|||
public void init() throws URISyntaxException { |
|||
logger.info("BaseHardwareService initilized"); |
|||
if (this.uri == null) { |
|||
//this.uri = "ws://127.0.0.1:19005"; |
|||
this.uri = "ws://192.168.8.10:19005"; |
|||
} |
|||
|
|||
|
|||
URI uri = new URI(this.uri); |
|||
client = new WebSocketClient(uri) { |
|||
@Override |
|||
public void onOpen(ServerHandshake serverHandshake) { |
|||
logger.info("onOpen"); |
|||
} |
|||
|
|||
@Override |
|||
public void onMessage(String s) { |
|||
processMessage(s); |
|||
} |
|||
|
|||
@Override |
|||
public void onClose(int i, String s, boolean b) { |
|||
logger.info("onClose"); |
|||
} |
|||
|
|||
@Override |
|||
public void onError(Exception e) { |
|||
logger.info("onError"); |
|||
} |
|||
}; |
|||
client.connect(); |
|||
|
|||
|
|||
timer.schedule(new TimerTask() { |
|||
@Override |
|||
public void run() { |
|||
if (!client.isOpen()) { |
|||
if (client.getReadyState().equals(ReadyState.NOT_YET_CONNECTED)) { |
|||
try { |
|||
client.connect(); |
|||
} catch (IllegalStateException e) { |
|||
} |
|||
} else if (client.getReadyState().equals(ReadyState.CLOSING) || client.getReadyState().equals(ReadyState.CLOSED)) { |
|||
client.reconnect(); |
|||
} |
|||
} |
|||
} |
|||
}, 0, 1000); |
|||
} |
|||
|
|||
|
|||
|
|||
|
|||
// cmdId, |
|||
public void callcmd(Integer moduleId, Integer cmdId, Integer param0) { |
|||
|
|||
} |
|||
|
|||
public void callcmd(Integer moduleId, Integer cmdId, Integer param0, Integer param1) { |
|||
|
|||
} |
|||
|
|||
public void callcmd(Integer moduleId, Integer cmdId, Integer param0, Integer param1, Integer param2) { |
|||
|
|||
} |
|||
|
|||
public void callcmd(Integer moduleId, Integer cmdId, Integer param0, Integer param1, Integer param2, Integer param3) { |
|||
|
|||
} |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private void processMessage(String s) { |
|||
byte[] rx = ByteArray.hexStringToBytes(s); |
|||
if (rx == null || rx.length == 0) { |
|||
logger.warn("rx is empty"); |
|||
return; |
|||
} |
|||
|
|||
if (rx.length < Packet.PACKET_MIN_LEN) { |
|||
logger.warn("rx is too short"); |
|||
return; |
|||
} |
|||
|
|||
Packet packet = new Packet(rx); |
|||
logger.info("RX {}", packet); |
|||
|
|||
|
|||
} |
|||
|
|||
public static void main(String[] args) { |
|||
A8kCanBusService service = new A8kCanBusService(); |
|||
try { |
|||
service.init(); |
|||
} catch (URISyntaxException e) { |
|||
logger.error(e.getMessage()); |
|||
} |
|||
} |
|||
|
|||
} |
@ -0,0 +1,82 @@ |
|||
package a8k.base_hardware; |
|||
|
|||
import org.java_websocket.client.WebSocketClient; |
|||
import org.java_websocket.handshake.ServerHandshake; |
|||
import org.slf4j.Logger; |
|||
import org.slf4j.LoggerFactory; |
|||
|
|||
import java.net.URI; |
|||
import java.net.URISyntaxException; |
|||
import java.util.Timer; |
|||
import java.util.TimerTask; |
|||
|
|||
|
|||
public class ReconnectingWebSocketClient extends WebSocketClient { |
|||
public static final Logger logger = LoggerFactory.getLogger(A8kCanBusService.class); |
|||
|
|||
private URI serverUri; |
|||
private Timer reconnectTimer; |
|||
private boolean reconnecting; |
|||
|
|||
public ReconnectingWebSocketClient(URI serverUri) { |
|||
super(serverUri); |
|||
this.serverUri = serverUri; |
|||
this.reconnectTimer = new Timer("ReconnectTimer"); |
|||
this.reconnecting = false; |
|||
} |
|||
|
|||
@Override |
|||
public void onOpen(ServerHandshake handshakedata) { |
|||
System.out.println("WebSocket opened to: " + serverUri); |
|||
cancelReconnect(); |
|||
} |
|||
|
|||
@Override |
|||
public void onMessage(String message) { |
|||
System.out.println("Received message: " + message); |
|||
} |
|||
|
|||
@Override |
|||
public void onClose(int code, String reason, boolean remote) { |
|||
System.out.println("WebSocket closed. Code: " + code + ", Reason: " + reason); |
|||
scheduleReconnect(); |
|||
} |
|||
|
|||
@Override |
|||
public void onError(Exception ex) { |
|||
System.err.println("WebSocket error: " + ex.getMessage()); |
|||
scheduleReconnect(); |
|||
} |
|||
|
|||
private void scheduleReconnect() { |
|||
if (!reconnecting) { |
|||
reconnecting = true; |
|||
reconnectTimer.schedule(new TimerTask() { |
|||
@Override |
|||
public void run() { |
|||
if (!isOpen()) { |
|||
System.out.println("Attempting to reconnect to: " + serverUri); |
|||
reconnect(); |
|||
} |
|||
} |
|||
}, 5000); // 5 seconds delay before attempting to reconnect |
|||
} |
|||
} |
|||
|
|||
private void cancelReconnect() { |
|||
if (reconnecting) { |
|||
reconnecting = false; |
|||
reconnectTimer.cancel(); |
|||
reconnectTimer.purge(); |
|||
} |
|||
} |
|||
|
|||
|
|||
public static void main(String[] args) throws URISyntaxException, InterruptedException { |
|||
URI serverUri = new URI("ws://localhost:8080"); // Replace with your WebSocket server URI |
|||
ReconnectingWebSocketClient client = new ReconnectingWebSocketClient(serverUri); |
|||
client.connect(); |
|||
Thread.sleep(60000); // Example: Keep the program running for 1 minute |
|||
client.close(); |
|||
} |
|||
} |
@ -0,0 +1,16 @@ |
|||
package a8k.controler; |
|||
import org.springframework.stereotype.Controller; |
|||
import org.springframework.web.bind.annotation.GetMapping; |
|||
import org.springframework.web.bind.annotation.PostMapping; |
|||
import org.springframework.web.bind.annotation.ResponseBody; |
|||
import org.springframework.web.bind.annotation.RestController; |
|||
|
|||
@Controller |
|||
public class ZhaoheTestControler { |
|||
|
|||
@PostMapping("/test") |
|||
@ResponseBody |
|||
public String hello() { |
|||
return "Hello, welcome to the ultimate Spring Boot service!"; |
|||
} |
|||
} |
@ -0,0 +1,25 @@ |
|||
package a8k.service; |
|||
|
|||
import com.iflytop.a800.device.Pipette; |
|||
import jakarta.annotation.PostConstruct; |
|||
import org.slf4j.Logger; |
|||
import org.slf4j.LoggerFactory; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
@Component |
|||
public class ConsumableLoadingService implements Runnable { |
|||
public static final Logger LOG = LoggerFactory.getLogger(ConsumableLoadingService.class); |
|||
|
|||
@Override |
|||
public void run() { |
|||
|
|||
} |
|||
|
|||
|
|||
@PostConstruct |
|||
public void init(){ |
|||
//启动线程实例 |
|||
LOG.error("Hello................................................................................................"); |
|||
} |
|||
|
|||
} |
@ -0,0 +1,74 @@ |
|||
// Source code is decompiled from a .class file using FernFlower decompiler. |
|||
package a8k.utils; |
|||
|
|||
import org.springframework.lang.NonNull; |
|||
|
|||
public class ByteArray { |
|||
public ByteArray() { |
|||
} |
|||
|
|||
public static int readU8bit(byte[] code, int index) { |
|||
if (index >= code.length) |
|||
return 0; |
|||
return code[index] & 255; |
|||
} |
|||
|
|||
public static int readS8bit(byte[] code, int index) { |
|||
if (index >= code.length) |
|||
return 0; |
|||
|
|||
return code[index]; |
|||
} |
|||
|
|||
public static int readU16bit(byte[] code, int index) { |
|||
if (index + 2 >= code.length) |
|||
return 0; |
|||
return (code[index + 1] & 255) << 8 | code[index] & 255; |
|||
} |
|||
|
|||
public static int readS16bit(byte[] code, int index) { |
|||
if (index + 2 >= code.length) |
|||
return 0; |
|||
|
|||
return code[index + 1] << 8 | code[index] & 255; |
|||
} |
|||
|
|||
public static int read32bit(byte[] code, int index) { |
|||
if (index + 4 >= code.length) |
|||
return 0; |
|||
return code[index + 3] << 24 | (code[index + 2] & 255) << 16 | (code[index + 1] & 255) << 8 | code[index] & 255; |
|||
} |
|||
|
|||
|
|||
|
|||
|
|||
public static String toByteString(byte[] arrary) { |
|||
StringBuilder sb = new StringBuilder(); |
|||
for (byte b : arrary) { |
|||
sb.append(String.format("%02X", b)); |
|||
} |
|||
return sb.toString(); |
|||
} |
|||
|
|||
public static byte[] hexStringToBytes(@NonNull String str) { |
|||
if (str.isEmpty()) { |
|||
return new byte[0]; |
|||
} else { |
|||
byte[] byteArray = new byte[str.length() / 2]; |
|||
for (int i = 0; i < byteArray.length; i++) { |
|||
int high = Character.digit(str.charAt(i * 2), 16); |
|||
int low = Character.digit(str.charAt(i * 2 + 1), 16); |
|||
if (high == -1 || low == -1) { |
|||
return null; |
|||
} |
|||
byteArray[i] = (byte) (high * 16 + low); |
|||
} |
|||
return byteArray; |
|||
} |
|||
} |
|||
|
|||
// public static void main(String[] args) { |
|||
// byte[] bytes = new byte[]{0x01, 0x02, 0x03, 0x04}; |
|||
// System.out.println(toByteString(bytes)); |
|||
// } |
|||
} |
@ -0,0 +1,29 @@ |
|||
<code_scheme name="vjtools"> |
|||
<option name="AUTODETECT_INDENTS" value="false" /> |
|||
<option name="LINE_SEPARATOR" value="
" /> |
|||
<option name="ENABLE_JAVADOC_FORMATTING" value="false" /> |
|||
<option name="FORMATTER_TAGS_ENABLED" value="true" /> |
|||
<codeStyleSettings language="JAVA"> |
|||
<option name="KEEP_LINE_BREAKS" value="false" /> |
|||
<option name="KEEP_FIRST_COLUMN_COMMENT" value="false" /> |
|||
<option name="KEEP_CONTROL_STATEMENT_IN_ONE_LINE" value="false" /> |
|||
<option name="ALIGN_MULTILINE_PARAMETERS" value="false" /> |
|||
<option name="ALIGN_MULTILINE_RESOURCES" value="false" /> |
|||
<option name="CALL_PARAMETERS_WRAP" value="1" /> |
|||
<option name="METHOD_PARAMETERS_WRAP" value="1" /> |
|||
<option name="RESOURCE_LIST_WRAP" value="5" /> |
|||
<option name="EXTENDS_LIST_WRAP" value="1" /> |
|||
<option name="THROWS_LIST_WRAP" value="1" /> |
|||
<option name="EXTENDS_KEYWORD_WRAP" value="1" /> |
|||
<option name="THROWS_KEYWORD_WRAP" value="1" /> |
|||
<option name="METHOD_CALL_CHAIN_WRAP" value="1" /> |
|||
<option name="BINARY_OPERATION_WRAP" value="1" /> |
|||
<option name="BINARY_OPERATION_SIGN_ON_NEXT_LINE" value="true" /> |
|||
<option name="TERNARY_OPERATION_WRAP" value="5" /> |
|||
<option name="KEEP_SIMPLE_BLOCKS_IN_ONE_LINE" value="true" /> |
|||
<option name="ARRAY_INITIALIZER_WRAP" value="1" /> |
|||
<indentOptions> |
|||
<option name="USE_TAB_CHARACTER" value="true" /> |
|||
</indentOptions> |
|||
</codeStyleSettings> |
|||
</code_scheme> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue