package com.dev.ica_600kw;
|
import gnu.io.SerialPort;
|
import gnu.io.UnsupportedCommOperationException;
|
|
import java.io.File;
|
import java.io.FileInputStream;
|
import java.io.IOException;
|
import java.nio.ByteBuffer;
|
import java.nio.ByteOrder;
|
import java.util.Date;
|
|
import javax.swing.JOptionPane;
|
import javax.swing.JTextArea;
|
|
import org.apache.logging.log4j.Logger;
|
|
import sp_comm.CommSerialPort;
|
import sp_comm.Comm_Socket;
|
import main.page_debug_inf;
|
|
import com.Com;
|
import com.ComFn;
|
import com.Crc16;
|
import com.PlaySound;
|
import com.dev.bts.data.FBS9100_ComBase;
|
import com.dev.bts.data.FBS9100_DFU;
|
import com.dev.fbs9600_mon.SPCommMon;
|
import com.dev.modbus.MyModBusRtu;
|
import com.dev.simpower.dev.Power_ACData;
|
import com.dev.simpower.dev.Power_AlmParam;
|
import com.dev.simpower.dev.Power_AlmState;
|
import com.dev.simpower.dev.Power_ComBase;
|
import com.dev.simpower.dev.Power_LIBMSData;
|
import com.dev.simpower.dev.Power_ModelData;
|
import com.dev.simpower.dev.Power_Param;
|
import com.dev.simpower.dev.Power_RoadState;
|
import com.dev.simpower.dev.Power_TimeControl;
|
|
public class SPCommIAC_600KW implements Runnable/*, SerialPortEventListener*/ {
|
|
|
private ByteBuffer dt_databuffer = ByteBuffer.allocate(0); //Ò£¿ØÒ£µ÷Êý¾Ý
|
private short dt_user_cmd = Power_ComBase.CMD_NULL;
|
private int dt_user_cmd_regaddr = 0; //Óû§¿ØÖÆÊ±µÄ¼Ä´æÆ÷µØÖ·
|
|
|
public boolean is_ClosePage = false; //ÊÇ·ñÍ˳ö½çÃæ
|
/*********************************************************************/
|
|
private boolean CommThreadRunning = false;
|
public boolean AutoStartResTestEn = false;
|
public Date AutoStartResTestTime = new Date();
|
public Date AutoSaveResDataTime = new Date();
|
public boolean AutoSaveResDataEn = false;
|
public int AutoSaveResDataCount = 0;
|
public String AutoSaveDataFileName = "";
|
|
private ByteBuffer CommRxBuffer = ByteBuffer.allocate(1500);
|
private ByteBuffer CommTxBuffer = ByteBuffer.allocate(1048);
|
|
public int comm_tx_cnt = 0;
|
public int comm_rx_cnt = 0;
|
|
private int comm_bautrate = 115200;
|
public int dt_target_addr = 0;
|
public int m_ZDHJ_REG_CNT = 1;
|
public int ZDHJ_BattCount = -1;
|
//--------------------------------------------------------//
|
public int dev_param_data_state = 0;
|
public int dev_param_addr = 0;
|
public int dev_param_curr_range = 0;
|
public double dev_param_FloatCurrLev = 0;
|
public double dev_param_float_curr_lev = 0;
|
public double dev_param_wenbo_curr_lev = 0;
|
public int dev_param_auto_restest_interval = 0;
|
public int dev_param_res_test_type = 0;
|
public int dev_param_ResDisTestMethod = 0;
|
public int dev_param_Batt_StdCap = 0;
|
public double dev_param_res_dis_slope = 0;
|
public double dev_param_res_wenbo_slope = 0;
|
public int dev_param_monnum_setmode = 0;
|
public int dev_param_devid = 0;
|
public double[] dev_param_resparam_d = new double[4];
|
public double[] dev_param_resparam_s = new double[4];
|
//--------------------------------------------------------//
|
public int dev_stat_version = 0;
|
public int dev_stat_state = 0;
|
public double GroupVol = 0;
|
public double BattCurr = 0;
|
public int BattState = 0;
|
public int BattCurrDir = 0;
|
public double AvgWenBoCurr = 0;
|
public double PeakWenBoCurr = 0;
|
public int SpiCommErrCount = 0; //SPIͨÐÅ´íÎó¼ÆÊý
|
public int ResTestCount = 0; //ÄÚ×è²âÊÔ´ÎÊý
|
public int CurentResTestMode = 0; //µ±Ç°ÄÚ×è²âÊÔ·½·¨
|
public int BianhaoErrNum = 0; //±àºÅ´íÎóµ¥ÌåºÅ
|
public double ExTemp = 0; //ÍⲿζÈ
|
//--------------------------------------------------------//
|
public short mAddrSettedNow = 0;
|
|
private short dt_cmd = ModBus_ComBase.CMD_Null;
|
public int dt_cmd_ack = IAC_ComBase.CMD_Null;
|
public MyModBusRtu rtu_rt;
|
|
public MyModBusRtu rtu_rx;
|
|
public Date dt_cmd_ack_time = new Date();
|
private short dt_cmd_regaddr = 0;
|
private short dt_cmd_regcnt = 0;
|
private short[] dt_cmd_regdata = null;
|
|
private int dt_cmd_cnt = 0;
|
|
private page_debug_inf dt_debug_inf;
|
private int m_COMM_PORT_TYPE = 0;
|
private CommSerialPort m_SP_Comm = null;
|
private Comm_Socket m_SocketComm = null;
|
private Logger m_Log = null;
|
|
private int read_libms_index = 0; //¶ÁÈ¡ï®µç³Ø°üË÷Òý
|
private int read_model_index = 0; //¶ÁÈ¡µçÔ´Ä£¿éË÷Òý
|
|
public Power_ACData m_AcData;
|
public Power_LIBMSData[] m_LibmsDatas;
|
public Power_ModelData[] m_ModelDatas;
|
public Power_AlmState m_AlmState;
|
|
public Power_Param m_ParamFromDev; //É豸¶ÁÈ¡µÄ²ÎÊý
|
public Power_TimeControl m_TimeControlFromDev; //É豸¶ÁÈ¡µÄ²ÎÊý
|
|
public IAC_RealData m_RealData; //É豸ʵʱÊý¾Ý
|
public IAC_TestParam m_TestParam; //ÉèÖõIJÎÊý
|
public IAC_TestParam m_TestParamFromDev; //É豸É϶ÁÈ¡µÄ²ÎÊý
|
|
|
public String op_result = ""; //²Ù×÷·µ»Ø½á¹û
|
public String op_result_setparam = ""; //ÉèÖòÎÊý·µ»Ø½á¹û
|
|
|
public short dt_user_cmd_ack = Power_ComBase.CMD_NULL; //²Ù×÷·µ»Ø½á¹û,ÓÃÓÚ½çÃæÅжϸüÐÂ
|
|
private boolean dt_dfu_en = false; //Ô¶³ÌÉý¼¶±êʶ
|
|
private JTextArea dt_show_msg; //Éý¼¶Îı¾ÐÅÏ¢Óò
|
|
private String dt_dfuFileName; //Éý¼¶ÎļþÃû³Æ
|
|
public SPCommIAC_600KW(int addr_t, int bitrate, page_debug_inf debug, Logger log) {
|
dt_target_addr = addr_t & 0x00FF;
|
comm_bautrate = bitrate;
|
dt_debug_inf = debug;
|
m_Log = log;
|
rtu_rx = new MyModBusRtu();
|
|
m_TimeControlFromDev = new Power_TimeControl();
|
m_ParamFromDev = new Power_Param();
|
m_AcData = new Power_ACData();
|
m_AlmState = new Power_AlmState();
|
|
m_RealData = new IAC_RealData(); //É豸ʵʱÊý¾Ý
|
m_TestParam = new IAC_TestParam(); //ÉèÖõIJÎÊý
|
m_TestParamFromDev = new IAC_TestParam(); //É豸É϶ÁÈ¡µÄ²ÎÊý
|
|
m_LibmsDatas = new Power_LIBMSData[Power_ComBase.LIBMSDATA_MAX_COUNT];
|
for(int i =0;i<m_LibmsDatas.length;i++) {
|
m_LibmsDatas[i] = new Power_LIBMSData();
|
}
|
|
m_ModelDatas = new Power_ModelData[Power_ComBase.LIMODEL_MAX_COUNT];
|
for(int i =0;i<m_LibmsDatas.length;i++) {
|
m_ModelDatas[i] = new Power_ModelData();
|
}
|
}
|
|
public void setCommBautrate(int bt_rate) {
|
if(SPCommMon.COMM_PORT_TYPE_Serial != m_COMM_PORT_TYPE) {
|
return;
|
}
|
|
try {
|
comm_bautrate = bt_rate;
|
m_SP_Comm.serialPort.setSerialPortParams(comm_bautrate, SerialPort.DATABITS_8, SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);
|
} catch (UnsupportedCommOperationException e) {
|
e.printStackTrace();
|
}
|
}
|
|
//³õʼ»¯´®¿Ú
|
public boolean OpenCommPort(int comm_port_type, String comm_name_or_ip, int bitrate_or_comm_port) {
|
boolean res = false;
|
m_COMM_PORT_TYPE = comm_port_type;
|
if(SPCommMon.COMM_PORT_TYPE_Serial == m_COMM_PORT_TYPE) {
|
m_SP_Comm = new CommSerialPort(bitrate_or_comm_port, m_Log);
|
res = m_SP_Comm.OpenCommPort(comm_name_or_ip);
|
} else {
|
m_SocketComm = new Comm_Socket(comm_name_or_ip, bitrate_or_comm_port);
|
res = true;
|
}
|
|
if(true == res) {
|
CommTxBuffer.order(ByteOrder.BIG_ENDIAN);
|
CommRxBuffer.order(ByteOrder.BIG_ENDIAN);
|
comm_tx_cnt = 0;
|
comm_rx_cnt = 0;
|
CommThreadRunning = true;
|
}
|
is_ClosePage = false;
|
m_TestParamFromDev.setIs_ReadParam(false);
|
return res;
|
}
|
|
private void makeCommTxData() {
|
CommTxBuffer.clear();
|
|
rtu_rt = new MyModBusRtu();
|
ByteBuffer dt_data = ByteBuffer.allocate(0);
|
|
rtu_rt.addr = dt_target_addr;
|
if(dt_user_cmd == Power_ComBase.CMD_NULL) {
|
//Ëæ»ú¶ÁȡʵʱÊý¾Ý
|
|
if(++dt_cmd_cnt > 1000) {
|
dt_cmd_cnt = 0;
|
}
|
rtu_rt.Cmd = MyModBusRtu.CMD_TYPE_READ;
|
|
rtu_rt.reg_addr = IAC_ComBase.CMD_RealData_Addr;
|
rtu_rt.reg_count = IAC_RealData.REG_Count;
|
|
// if((dt_cmd_cnt % 3 == 0) && !is_ClosePage) {
|
// //Í˳ö½çÃæ[ÖØÁ¬Ê±²»ÔÚ·¢ËÍÍ˳ö½çÃæÃüÁî]
|
// rtu_rt.Cmd = MyModBusRtu.CMD_TYPE_WRITE_STD;
|
//
|
// rtu_rt.reg_addr = IAC_ComBase.CMD_ClosePage_Addr;
|
//
|
// dt_data = IAC_Cmd.createControlByteBuffer(0x0001&0xFFFF);
|
// rtu_rt.reg_count = dt_data.capacity()/2;
|
// }
|
|
} else {
|
//Êý¾Ý
|
dt_data = dt_databuffer;
|
//Ò£µ÷Ò£¿ØÊý¾Ý
|
rtu_rt.Cmd = dt_user_cmd;
|
dt_user_cmd = Power_ComBase.CMD_NULL;
|
|
rtu_rt.reg_addr = dt_user_cmd_regaddr&0xFFFF;
|
if(dt_data.capacity() > 0) {
|
rtu_rt.reg_count = dt_data.capacity()/2;
|
}else if(IAC_ComBase.CMD_TestParam_Addr == rtu_rt.reg_addr) {
|
rtu_rt.reg_count = IAC_TestParam.REG_Count;
|
}else if(IAC_ComBase.CMD_SetTestParam_Addr == rtu_rt.reg_addr) {
|
//ÉèÖòÎÊýʱµÄ¼Ä´æÆ÷ÊýÁ¿
|
rtu_rt.reg_count = IAC_TestParam.REG_Count_Set;
|
}
|
//System.out.println(rtu_rt.reg_count + "===" + rtu_rt.reg_addr);
|
}
|
|
makeRTData(rtu_rt,dt_data);
|
}
|
|
public void makeRTData(MyModBusRtu rtu,ByteBuffer bf) {
|
CommTxBuffer.position(0);
|
|
CommTxBuffer.put((byte)rtu.addr);
|
CommTxBuffer.put((byte)rtu.Cmd);
|
CommTxBuffer.putShort((short)rtu.reg_addr);
|
|
if(rtu.Cmd == MyModBusRtu.CMD_TYPE_READ) {
|
//¶ÁÈ¡
|
CommTxBuffer.putShort((short)rtu.reg_count);
|
|
} else if(
|
rtu.Cmd == MyModBusRtu.CMD_TYPE_WRITE_STD
|
|| rtu.Cmd == MyModBusRtu.CMD_TYPE_WRITE_SysUpdate
|
|| rtu.Cmd == MyModBusRtu.CMD_TYPE_Read_UpdateFile
|
) {
|
//µ¥µãдÈë
|
CommTxBuffer.put(bf);
|
|
bf.position(0);
|
rtu.write_value = FBS9100_ComBase.changeShortToInt(bf.getShort());
|
} else if(rtu.Cmd == MyModBusRtu.CMD_TYPE_WRITE_MULTY) {
|
//¶àµãдÈë
|
CommTxBuffer.putShort((short)rtu.reg_count);
|
CommTxBuffer.put((byte)bf.capacity());
|
CommTxBuffer.put(bf);
|
}
|
|
int crc = Crc16.CalCRC16(CommTxBuffer, CommTxBuffer.position()) & 0xFFFF;
|
CommTxBuffer.putShort((short) crc);
|
CommTxBuffer.flip();
|
|
//System.out.println("·¢ËÍÊý¾Ý³¤¶È£º" + CommTxBuffer.remaining());
|
|
}
|
|
public void tr_Msg(ByteBuffer bbf_tx, ByteBuffer bbf_rx, boolean showdat) {
|
if(++comm_tx_cnt > 32500) {
|
comm_tx_cnt = 0;
|
}
|
if(SPCommMon.COMM_PORT_TYPE_Serial == m_COMM_PORT_TYPE) {
|
m_SP_Comm.SP_Comm(bbf_tx, bbf_rx, CommSerialPort.mutycomm_Type_Samd09, dt_debug_inf, showdat);
|
} else {
|
m_SocketComm.SocketComm(bbf_tx, bbf_rx, dt_debug_inf, showdat);
|
}
|
}
|
|
public void CloseCommPort() {
|
CommThreadRunning = false;
|
}
|
|
public void setCommCmd(short cmd, int cmd_reg_addr, short[] reg_data, int reg_len) {
|
if(dt_cmd_regaddr > 0) {
|
return;
|
}
|
|
dt_cmd = cmd;
|
dt_cmd_regaddr = (short) cmd_reg_addr;
|
dt_cmd_regdata = reg_data;
|
dt_cmd_regcnt = (short) reg_len;
|
}
|
|
public void setCommCmd(short cmd, int cmd_user_reg_addr, ByteBuffer bf) {
|
if(dt_cmd_regaddr > 0) {
|
return;
|
}
|
|
dt_user_cmd = cmd; //ÃüÁî
|
dt_user_cmd_regaddr = (short) cmd_user_reg_addr; //¼Ä´æÆ÷µØÖ·
|
|
dt_databuffer = bf; //Ò£¿Ø»òÒ£µ÷Êý¾Ý
|
}
|
|
|
public void setCommCmdAck(int ack_t) {
|
dt_cmd_ack = ack_t;
|
dt_cmd_ack_time = new Date();
|
//System.out.println(Com.get_DTF(dt_cmd_ack_time, Com.DTF_YMDhms) + ", " + dev_param_data_state);
|
String wav_f = "6133.wav";
|
if(ack_t%2 == 0) {
|
wav_f = "4577.wav";
|
}
|
if(ack_t > 0) {
|
new PlaySound(wav_f);
|
}
|
}
|
|
private boolean processRxData(ByteBuffer bbf_rx) {
|
rtu_rx.clear();
|
boolean isSuccess = false;
|
if(rtu_rx.putByteBuffer(bbf_rx)) {
|
|
if(MyModBusRtu.CMD_TYPE_READ == rtu_rx.Cmd) {
|
if(IAC_ComBase.CMD_RealData_Addr == rtu_rt.reg_addr) {
|
//¶ÁȡʵʱÊý¾Ý
|
if(m_RealData.putByteBuffer(bbf_rx)) {
|
isSuccess = true;
|
}
|
}else if(IAC_ComBase.CMD_TestParam_Addr == rtu_rt.reg_addr) {
|
//¶ÁÈ¡²ÎÊý
|
if(m_TestParamFromDev.putByteBuffer(bbf_rx)) {
|
isSuccess = true;
|
dt_cmd_ack = IAC_ComBase.CMD_GetParam_Ack;
|
op_result = "¶ÁÈ¡²ÎÊý³É¹¦-" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
|
}
|
}
|
}else if(MyModBusRtu.CMD_TYPE_WRITE_STD == rtu_rx.Cmd) {
|
if(IAC_ComBase.CMD_WTTest_Addr == rtu_rx.reg_addr) {
|
if(IAC_ComBase.CMD_Success == rtu_rx.result) {
|
isSuccess = true;
|
op_result = "¿ØÖÆÎÈ̬²âÊԳɹ¦-" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
|
dt_cmd_ack = IAC_ComBase.CMD_WTTest_Success_Ack;
|
}else {
|
op_result = "¿ØÖÆÎÈ̬²âÊÔʧ°Ü-" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
|
dt_cmd_ack = IAC_ComBase.CMD_WTTest_Fail_Ack;
|
}
|
}else if(IAC_ComBase.CMD_ZDTest_Addr == rtu_rx.reg_addr) {
|
if(IAC_ComBase.CMD_Success == rtu_rx.result) {
|
isSuccess = true;
|
dt_cmd_ack = IAC_ComBase.CMD_ZDTest_Success_Ack;
|
op_result = "¿ØÖÆÕû¶¨²âÊԳɹ¦-" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
|
}else {
|
dt_cmd_ack = IAC_ComBase.CMD_ZDTest_Fail_Ack;
|
op_result = "¿ØÖÆÕû¶¨²âÊÔʧ°Ü-" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
|
}
|
}else if(IAC_ComBase.CMD_BDTest_Addr == rtu_rx.reg_addr) {
|
if(IAC_ComBase.CMD_Success == rtu_rx.result) {
|
isSuccess = true;
|
dt_cmd_ack = IAC_ComBase.CMD_BDTest_Success_Ack;
|
op_result = "¿ØÖƲ¨¶¯²âÊԳɹ¦-" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
|
}else {
|
dt_cmd_ack = IAC_ComBase.CMD_BDTest_Fail_Ack;
|
op_result = "¿ØÖƲ¨¶¯²âÊÔʧ°Ü-" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
|
}
|
}else if(IAC_ComBase.CMD_STTest_Addr == rtu_rx.reg_addr) {
|
if(IAC_ComBase.CMD_Success == rtu_rx.result) {
|
isSuccess = true;
|
dt_cmd_ack = IAC_ComBase.CMD_STTest_Success_Ack;
|
op_result = "¿ØÖÆË²Ì¬²âÊԳɹ¦-" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
|
}else {
|
dt_cmd_ack = IAC_ComBase.CMD_STTest_Fail_Ack;
|
op_result = "¿ØÖÆË²Ì¬²âÊÔʧ°Ü-" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
|
}
|
}else if(IAC_ComBase.CMD_XBTest_Addr == rtu_rx.reg_addr) {
|
if(IAC_ComBase.CMD_Success == rtu_rx.result) {
|
isSuccess = true;
|
dt_cmd_ack = IAC_ComBase.CMD_XBTest_Success_Ack;
|
op_result = "¿ØÖÆÐ³²¨²âÊԳɹ¦-" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
|
}else {
|
dt_cmd_ack = IAC_ComBase.CMD_XBTest_Fail_Ack;
|
op_result = "¿ØÖÆÐ³²¨²âÊÔʧ°Ü-" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
|
}
|
}else if(IAC_ComBase.CMD_ClosePage_Addr == rtu_rx.reg_addr) {
|
if(IAC_ComBase.CMD_Success == rtu_rx.result) {
|
isSuccess = true;
|
is_ClosePage = true;
|
//op_result = "Í˳ö½çÃæ³É¹¦-" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
|
}else {
|
//op_result = "Í˳ö½çÃæÊ§°Ü-" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
|
}
|
}
|
// if((rtu_rt.write_value == IAC_ComBase.CMD_Control_Stop)
|
// && ((dt_cmd_ack == IAC_ComBase.CMD_WTTest_Success_Ack)
|
// || (dt_cmd_ack == IAC_ComBase.CMD_ZDTest_Success_Ack)
|
// || (dt_cmd_ack == IAC_ComBase.CMD_BDTest_Success_Ack)
|
// || (dt_cmd_ack == IAC_ComBase.CMD_STTest_Success_Ack)
|
// || (dt_cmd_ack == IAC_ComBase.CMD_XBTest_Success_Ack)
|
// ) ) {
|
// //Í£Ö¹²âÊԳɹ¦ºóÐèÒª·¢ËÍÍ˳ö½çÃæ
|
// is_ClosePage = false;
|
// }
|
|
}else if(MyModBusRtu.CMD_TYPE_WRITE_MULTY == rtu_rx.Cmd) {
|
if(IAC_ComBase.CMD_SetTestParam_Addr == rtu_rx.reg_addr) {
|
//ÉèÖõçÔ´²ÎÊý
|
if(rtu_rx.result == IAC_ComBase.CMD_Success) {
|
op_result = "ÉèÖòÎÊý³É¹¦-" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
|
isSuccess = true;
|
}else {
|
op_result = "ÉèÖòÎÊýʧ°Ü-" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
|
}
|
}
|
} else if(MyModBusRtu.CMD_TYPE_WRITE_SysUpdate == rtu_rx.Cmd) {
|
if(Power_ComBase.PWD_SysReStart_RegAddr_Start == rtu_rx.reg_addr) {
|
//Ô¶³ÌÖØÆôÉ豸
|
if(rtu_rx.result == 0xBBBB) {
|
//É豸Զ³ÌÖØÆô³É¹¦
|
dt_user_cmd_ack = Power_ComBase.PWD_SysRestart_Success_ACK;
|
isSuccess = true;
|
}else {
|
//É豸Զ³ÌÖØÆôʧ°Ü
|
dt_user_cmd_ack = Power_ComBase.PWD_SysRestart_Fail_ACK;
|
}
|
}else if(Power_ComBase.PWD_TransUpdateFile_RegAddr_Start == rtu_rx.reg_addr) {
|
if(rtu_rx.result != 0) {
|
isSuccess = true;
|
}
|
}else if(Power_ComBase.PWD_StartUpdate_RegAddr_Start == rtu_rx.reg_addr) {
|
if(rtu_rx.result != 0) {
|
isSuccess = true;
|
appendUppdateInfo("System Update Success ... " + Com.get_DTF(new Date(), Com.DTF_YMDhms) + "\n");
|
}else {
|
appendUppdateInfo("System Update Fail ... " + Com.get_DTF(new Date(), Com.DTF_YMDhms) + "\n");
|
}
|
}
|
} else if(MyModBusRtu.CMD_TYPE_Read_UpdateFile == rtu_rx.Cmd) {
|
if(Power_ComBase.PWD_TransUpdateFile_RegAddr_Start == rtu_rt.reg_addr) {
|
if(bbf_rx.remaining() > 2) {
|
isSuccess = true;
|
}else {
|
System.err.println("·µ»ØÊý¾Ý³¤¶È²»×ã");
|
}
|
}
|
}
|
}
|
if(bbf_rx.limit() > 0 && isSuccess) {
|
if(++comm_rx_cnt > 32500) {
|
comm_rx_cnt = 0;
|
}
|
}
|
return isSuccess;
|
}
|
|
public void setAutoStartRestTest(String filename, int type, boolean en) {
|
AutoSaveDataFileName = filename;
|
AutoStartResTestEn = en;
|
AutoSaveResDataCount = 0;
|
}
|
|
private void closeSPCommPort() {
|
if(SPCommMon.COMM_PORT_TYPE_Serial == m_COMM_PORT_TYPE) {
|
m_SP_Comm.serialPort.close();
|
} else {
|
m_SocketComm.socketClose();
|
}
|
}
|
|
public void run() {
|
while(true == CommThreadRunning) {
|
try {
|
Thread.sleep(200);
|
if(dt_dfu_en == false) {
|
makeCommTxData();
|
tr_Msg(CommTxBuffer, CommRxBuffer, true);
|
processRxData(CommRxBuffer);
|
|
|
}
|
} catch (InterruptedException e) {
|
e.printStackTrace();
|
CloseCommPort();
|
JOptionPane.showMessageDialog(null, "ZDHJ CommPort ´®¿ÚÒì³£: " + e.getMessage());
|
}
|
}
|
/******************************************/
|
closeSPCommPort();
|
/******************************************/
|
dt_debug_inf.addDebugInf(Com.get_DTF(new Date(), Com.DTF_YMDhms_S)
|
+ " ZDHJ CommPort is quit,"
|
+ " COMM_PORT_TYPE: " + m_COMM_PORT_TYPE + "\n");
|
/******************************************/
|
}
|
|
|
public void makeSendFileData(byte[] data,int block_num) {
|
dt_databuffer = ByteBuffer.allocate(data.length + 2);
|
dt_databuffer.order(ByteOrder.BIG_ENDIAN);
|
dt_databuffer.putShort(FBS9100_ComBase.changeIntToShort(block_num));
|
dt_databuffer.put(data);
|
dt_databuffer.flip();
|
}
|
|
public void setCommCmd_DFU(boolean dfu_en, String dfu_file, JTextArea show_area) {
|
dt_dfu_en = dfu_en;
|
dt_show_msg = show_area;
|
|
dt_dfuFileName = dfu_file;
|
}
|
|
|
public boolean checkDfuReadAckBuf(ByteBuffer bf,byte[] data) {
|
boolean check_ok = false;
|
if(data.length <= bf.remaining()) {
|
check_ok = true;
|
for(int k = 0 ;k< data.length;k++) {
|
if(data[k] != bf.get()) {
|
System.err.println("УÑé×Ö½Ú£º" + k + "ʧ°Ü");
|
check_ok = false;
|
break;
|
}
|
}
|
}else {
|
//System.err.println("bf£º"+ComFn.bytesToHexString(bf.array(), bf.array().length));
|
//System.err.println("data£º"+ComFn.bytesToHexString(data, data.length));
|
//System.err.println("data.length£º" + data.length + "\tbf.remaining():"+bf.remaining());
|
}
|
return check_ok;
|
}
|
|
public void appendUppdateInfo(String msg) {
|
StringBuffer buffer = new StringBuffer(dt_show_msg.getText());
|
dt_show_msg.setText(msg);
|
dt_show_msg.append(buffer.toString());
|
}
|
}
|