1. 程式人生 > >一個基站接受30-40個手環接受的資料

一個基站接受30-40個手環接受的資料

package cn.com.project;

import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test {
public static void main(String[] args) throws IOException {
	ServerSocket server1=new ServerSocket(6080);
      Port(server1);
}


public static void Port(ServerSocket server1) throws IOException{
	Socket  socket=null;
	StringBuilder  stringBuilder=null;
	socket  = server1.accept();
	while(true){
		
		stringBuilder=new StringBuilder();
		InputStream is=socket.getInputStream();
			byte[] buf = new byte[1024];
			int len = -1;
			len = is.read(buf);
				for (int i = 0; i < len; i++) {
					int v = buf[i] & 0xFF; 
					String hv = Integer.toHexString(v);
					if (hv.length() < 2) {
					stringBuilder.append(0);
					}
					stringBuilder.append(hv);
				}
				String str=stringBuilder.toString();
				if(str.length()>16){
					str=str.substring(0, 16);	
				             }	
				System.out.println("資料是:"+str);
				try {
					othernum(str);
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			//只要資料不為才會進行儲存
				//儲存到資料庫中

	}
	
//我想開啟多執行緒接受資料
	
   
}
public static void othernum(String a) throws SQLException {
	int len = a.length();
	StringBuilder sb = null;
	StringBuilder sb1 = null;
	sb = new StringBuilder("");
	sb1 = new StringBuilder("");
	//
	int sz[] = new int[8];
	String szs[] = new String[9];
	for (int n = 0; n < len / 2; n++) {// n<8
		// n=0 0,2 n=1 2,2
		String str = null;
		str = a.substring(2 * n, 2 * n + 2);
		sz[n] = Integer.parseInt(str, 16);
	                                  }
	for (int i = 0; i < 9; i++) {
		if (i == 0) {
			sb.append(sz[0]);
		            }
		if (i == 1) {
			sb.append(sz[1]);
			szs[0] = sb.toString();
		            }
		if (i == 6) {
			sb1.append(sz[i]);
		            }
		if (i == 7) {
			sb1.append(sz[i]);
			szs[1] = sb1.toString();
		            }
		if (i == 3 || i == 4 || i == 5 || i == 2) {
			szs[i] = String.valueOf(sz[i]);
		                                           }
		
	                            }
	SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	szs[6] = a;
	szs[7] = df.format(new Date());
	szs[8] = "1";
	SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd");
	Date d = new Date();
	String dd = sim.format(d);
	int j=0;
	for (int i = 0; i < szs.length; i++) {
		if(szs[i]==null||"".equals(szs[i])){
			j++;
			System.out.println("''''");
		}
	}
	if(j==0){
		insert_num(a, szs);		
	}
	   
}
public static void insert_num(String a, String szs[]) {
	
	int j=0;
	for (int i = 0; i < szs.length; i++) {
		if(szs[i]==null||"".equals(szs[i])){
			j++;
			System.out.println("''''");
		}
	}
	if(j==0){
		System.out.println("要插入資料庫的資料串"+a);	
		String sql = "insert into yh(number,bs,xl,lpower,upower,alarm,data,time,state) values(?,?,?,?,?,?,?,?,?)";
		JdbcUtils.update(sql, szs);
	}
			
						
			}

}

 資料庫接受的資料:

2秒之內接受所有的16個手卡的資料;