private static final int MSG_GET_DATA = 11;
//开始
isReaderStart=false;
serialReaderthread=null;
UartUtil.nmea_ubx_switch(true);
isTest =true;
byteindex=0;
mFd=SerialController.serialportOpen(SERIAL_1);
ldm = (MmiDeviceManager)mContext.getSystemService(Context.MMI_SERVICE);
serialReaderthread=new SerialReaderthread();
serialReaderthread.start();
asdhandler.postDelayed(r2,2000);
private Handler asdhandler = new Handler();
private Runnable r2 = new Runnable() {
@Override
public void run() {
android.util.Log.d("szy","run to ttyhs1");
ldm.writeToFile("dev/ttyHS1",commandtoRTK);
}
};
//结束
UartUtil.nmea_ubx_switch(false);
isTest =false;
isReaderStart=false;
byteindex=0;
serialReaderthread=null;
if(mFd>0){
mHandler.removeMessages(MSG_GET_DATA);
SerialController.serialportClose(mFd);
}
private class SerialReaderthread extends Thread{
@Override
public void run() {
while (isTest) {
int ret = 0;
byte[] buffer = new byte[1];
if (mFd > 0) {
ret=serialController.serialportRead(mFd,buffer,buffer.length);
}
mHandler.sendMessage(mHandler.obtainMessage(MSG_GET_DATA,
buffer));
try {
if (isReaderStart){
sleep(1);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
};
private final Handler mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MSG_GET_DATA:
byte[] values = (byte[]) msg.obj;
readystart(values);
if(isReaderStart) {
byteindex=byteindex+1;
String eve_data = bytesToHexString(values);
eve_data = replaceAllBlank(eve_data);
if(byteindex==17){
//dosomething
}
}
break;
}
}
};
int restoretime=0;
boolean isG=false;
private void readystart(byte[] values){
if (values[0] == 71){
isG=true;
}
isReaderStart=true;
}
public static final String bytesToHexString(byte[] bArray) {
StringBuffer sb = new StringBuffer(bArray.length);
String sTemp;
for (int i = 0; i < bArray.length; i++) {
sTemp = Integer.toHexString(0xFF & bArray[i]);
if (sTemp.length() < 2)
sb.append(0);
sb.append(sTemp.toUpperCase());
}
return sb.toString();
}
public String convertHexToString(String hex){
StringBuilder sb = new StringBuilder();
StringBuilder temp = new StringBuilder();
//49204c6f7665204a617661 split into two characters 49, 20, 4c...
for( int i=0; i<hex.length()-1; i+=2 ){
//grab the hex in pairs
String output = hex.substring(i, (i + 2));
//convert hex to decimal
int decimal = Integer.parseInt(output, 16);
//convert the decimal to character
sb.append((char)decimal);
temp.append(decimal);
}
return sb.toString();
}
private boolean findFinish(byte[] values) {
return values[0] == DATA_FINISH;
}
public static String replaceAllBlank(String str) {
String s = "";
if (str != null) {
Pattern p = Pattern.compile("\\s*|\t|\r|\n");
Matcher m = p.matcher(str);
s = m.replaceAll("");
}
return s;
}
public static String strTo16(String s) {
String str = "";
for (int i = 0; i < s.length(); i++) {
int ch = (int) s.charAt(i);
String s4 = Integer.toHexString(ch);
str = str + s4;
}
return str;
}
解析串口 数据
最新推荐文章于 2024-03-30 15:36:08 发布