2013-04-09 2 views
0

현재 Java로 물리적 센서 값을받는 학생 프로젝트를 실행 중입니다.JAVA로 런타임 처리를위한 데이터베이스의 수학 방정식을 결합하십시오.

각 센서는 특정 입력 데이터 유형 (8 비트, 16 비트, 더블 등)과 데이터 변환을위한 수학 방정식을 가지고 있습니다. 이 구성은 데이터베이스에 직접 저장해야합니다 (직접 또는 스크립트에 대한 링크)

이러한 기능을 구현하는 데 어떻게 권장 하시겠습니까?

변환 예 : Sensor0이 값을 전송하면 응용 프로그램은 Sensor0의 센서 값을 변환하는 방법을 데이터베이스에서 확인해야합니다. 변환 방정식을 반입하고 값을 변환합니다. . output_val = (input_val^2) * pi/(2*inputval)) 이전 수학 식들은 다양한 센서들에 대한 데이터베이스 엔트리 또는 스크립트 정의로 든 저장되어야하며, 런타임시에 처리되어야

내 테스트 시스템 데비안 86이다 (예 출력값으로 계산 자바 런타임 및 MySQL 서버 컴퓨터.

답변

0

calculate 방법과 Calculation 추상 클래스를 만든 다음 센서 당 하나 개의 상속 클래스, 예를 들어 Input_1 extends Calculation. 그런 다음, Jackson를 사용 Input_1, 예를 직렬화를 만들고 직렬화 된 인스턴스를 저장 귀하의 데이터베이스에. 계산을 수행해야하는 경우 직렬화 된 인스턴스를 읽고 역 직렬화 한 다음 calculate 메소드를 실행하십시오.

대신 필요한 모든 입력 계산을 수행하는 하나의 클래스를 만든 다음 필요에 따라 직렬화 및 비 직렬화를 수행하십시오. 어느 것이 든 당신의 데이터베이스에 가장 적합합니다.

클래스를 직렬화 및 비 직렬화하는 가장 간단한 방법은 기본 Java 직렬 변환기를 사용하는 것입니다.

public abstract class Calculation { 
    public double conversion(double d); 
} 

public class Sensor_34 extends Calculation implements Serializable { 
    public double conversion(double d) { 
     // conversion code 
    } 
} 

ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); 
ObjectOutputStream objectOut = new ObjectOutputStream(byteOut); 
Sensor_34 sensor34 = new Sensor_34(); 
objectOut.writeObject(sensor34); 
objectOut.close(); 
byte[] saveThisValue = byteOut.toByteArray(); // save the byte[] to the database 

// *** 

byte[] input = Database.read(); // read the byte[] back from the database 
ByteArrayInputStream byteIn = new ByteArrayInputStream(input); 
ObjectInputStream objectIn = new ObjectInputSteam(byteIn); 
Calculation calculation = (Calculation)objectIn.readObject(); 
// Now use the calculation object's "conversion" method to perform the conversion 

그래서 요약, 바이트 배열에 Sensor_34 객체를 직렬화 한 다음 다시 바이트 배열을 읽고 Sensor_34 개체로 다시 변환, 데이터베이스에 저장합니다.

+0

도움을 주셔서 감사합니다 ...하지만 각 센서에 대한 상속을 만들고 싶지는 않습니다. – see0jay

+0

그 경우 모든 센서 계산을 포함하는 하나의 클래스를 사용하거나 추상 클래스에서 상속하지 않고 센서 당 하나의 클래스를 생성하십시오 –

+0

도움을 주셔서 감사합니다 ...하지만 모든 단일 클래스에 대한 상속을 만들고 싶지는 않습니다 센서 ... 모든 다른 센서는 데이터베이스에 저장해야하며 모든 단일 센서는 저장된 변환 함수입니다. 예 : 100 개의 서로 다른 변환 기능이있는 데이터베이스에는 100 개의 다른 센서 (sensor_id는 0에서 99까지)가 있습니다. ID 34가있는 센서가 샘플 값을 어플리케이션에 전송한다고 상상해보십시오. 이 시점에서 응용 프로그램은 데이터베이스에서 특정 센서에 대해 사용해야하는 계산 방법을 찾고 변환을 수행해야합니다. – see0jay

관련 문제