import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.Graphics;
import java.io.*;
import java.net.*;
import java.util.*;
import java.text.DateFormat;
import javax.swing.*;
/*
低温センター・イベント表示アプレット(センサー4台版)
*/
public class heniitk_cr04ev extends Applet implements Runnable,ActionListener{
Thread timer;
volatile boolean running;
Image Im;
Graphics g,ImG;
String x,x2,y,z,u,v,s,f,st,sk,p,ln,cline,cback,cbase0,cbase,cfont1,cfont2,comment,scale;
String cname[] = new String[3];
int minch,blocks,ftype,skip,pp,length,linecn,backcn,base0cn,basecn,font1cn,font2cn;
float cpval;
int[] nsam = new int[96];
int ch,chh,wh,ww;
int[] max = new int[96];
int[] min = new int[96];
int[][] sam = new int[96][15000];
int[][] time = new int[2][6];
long[][] xtime = new long[96][10000];
private GregorianCalendar time0 = new GregorianCalendar();
protected GregorianCalendar time1 = new GregorianCalendar();
TimeZone tz=TimeZone.getTimeZone("JST");
protected Date date0 = new Date();
Date date1 = new Date();
protected long[] mtime = new long[3];
Button b1,b2,b3,b4,b5,b6,b7,b8,b9;
int loc[] = new int[128];
int[][] px = new int[32][16];
int[][] py = new int[32][16];
int[] px0 = new int[32];
int[] py0 = new int[32];
int[][] fx = new int[8][6];
int[][] fy = new int[8][6];
int[][] fx0 = new int[8][6];
int[][] fy0 = new int[8][6];
int[] lx0 = new int[7];
int[] ly0 = new int[7];
int refreshrate,sps,nstn,nsamx,rto50;
float rto;
public void init(){
Dimension FS = this.getSize();
wh=FS.height-18;
ww=FS.width;
x=this.getParameter("url");
x2=this.getParameter("file");
if(x==null&&x2==null){x=getCodeBase().toString()+"tmp/tmp.win";}
else if(x==null){x=getCodeBase().toString()+x2;}
y=this.getParameter("channel");
if(y==null){y="0";}
z=this.getParameter("refresh");
if(z==null){z="100";}
u=this.getParameter("unit");
if(u==null){u="count";}
v=this.getParameter("const");
if(v==null){v="1";}
s=this.getParameter("block");
if(s==null){s="1";}
f=this.getParameter("float");
if(f==null){f="0";}
p=this.getParameter("range");
if(p==null){p="0";}
cname[0]=this.getParameter("channel1");
if(cname[0]==null){cname[0]="UNKNOWN";}
cname[1]=this.getParameter("channel2");
if(cname[1]==null){cname[1]="UNKNOWN";}
cname[2]=this.getParameter("channel3");
if(cname[2]==null){cname[2]="UNKNOWN";}
st=this.getParameter("station");
if(st==null){st="";}
sk=this.getParameter("skip");
if(sk==null){sk="0";}
ln=this.getParameter("length");
if(ln==null){ln="0";}
cline=this.getParameter("linecolor");
if(cline==null){cline="ffff00";}
cback=this.getParameter("backcolor");
if(cback==null){cback="606060";}
cbase0=this.getParameter("base0color");
if(cbase0==null){cbase0="00ffff";}
cbase=this.getParameter("basecolor");
if(cbase==null){cbase="0000ff";}
cfont1=this.getParameter("font1color");
if(cfont1==null){cfont1="ffffff";}
cfont2=this.getParameter("font2color");
if(cfont2==null){cfont2="000000";}
comment=this.getParameter("comment");
if(comment==null){comment="the Study Group on the IT Kyoushin Seismometer";}
scale=this.getParameter("scale");
if(scale==null){scale="0";}
minch=Integer.parseInt(y,16);
refreshrate=Integer.parseInt(z);
cpval=Float.parseFloat(v);
blocks=Integer.parseInt(s);
ftype=Integer.parseInt(f);
skip=Integer.parseInt(sk);
pp=Integer.parseInt(p);
length=Integer.parseInt(ln)-1;
linecn=Integer.parseInt(cline,16);
backcn=Integer.parseInt(cback,16);
base0cn=Integer.parseInt(cbase0,16);
basecn=Integer.parseInt(cbase,16);
font1cn=Integer.parseInt(cfont1,16);
font2cn=Integer.parseInt(cfont2,16);
rto=Float.parseFloat(scale);
if(rto!=0)rto=(float)(1.0/rto);
sps=20;
setLayout(null);
// ボタン生成。
b1 = new Button("|<<");
b1.setBounds(0,wh,40,18);
b2 = new Button(">>");
b2.setBounds(120,wh,40,18);
b3 = new Button(">>+");
b3.setBounds(80,wh,40,18);
b4 = new Button(">>-");
b4.setBounds(40,wh,40,18);
b5 = new Button("start");
b5.setBounds(160,wh,40,18);
b6 = new Button("auto");
b6.setBounds(220,wh,40,18);
b7 = new Button("*1.4");
b7.setBounds(260,wh,40,18);
b8 = new Button("/1.4");
b8.setBounds(300,wh,40,18);
b9 = new Button("reload");
b9.setBounds(400,wh,60,18);
// ボタンをアプレットに追加。
this.add(b1);
this.add(b2);
this.add(b3);
this.add(b4);
this.add(b5);
this.add(b6);
this.add(b7);
this.add(b8);
// this.add(b9);
// ボタンがクリックされるとイベントをイベント処理メソッド(actionPerformed)に通知するように設定。
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b5.addActionListener(this);
b6.addActionListener(this);
b7.addActionListener(this);
b8.addActionListener(this);
// b9.addActionListener(this);
// センサー点(低温センター4点)
px0[0] = ww*17/28;
py0[0] = wh*17/28; // py0[0] = wh*17/28-2;
px0[1] = ww*19/28;
py0[1] = wh*9/28; // py0[1] = wh*9/28-2;
px0[2] = ww*12/28;
py0[2] = wh*14/28;
px0[3] = ww*15/28;
py0[3] = wh*9/28;
// 仮想点(1と3の間)
px0[4] = ww*17/28;
py0[4] = wh*9/28;
// フレーム(背面)軌跡の前にプロット 東側壁
fx0[0][0] = ww*16/28;
fy0[0][0] = wh*5/28;
fx0[0][1] = ww*22/28;
fy0[0][1] = wh*5/28;
fx0[0][2] = ww*22/28;
fy0[0][2] = wh*13/28;
fx0[0][3] = ww*16/28;
fy0[0][3] = wh*13/28;
fx0[0][4] = ww*16/28;
fy0[0][4] = wh*5/28;
// フレーム(背面)軌跡の前にプロット 北側壁
fx0[1][0] = ww*16/28;
fy0[1][0] = wh*5/28;
fx0[1][1] = ww*21/56;
fy0[1][1] = wh*21/56;
fx0[1][2] = ww*21/56;
fy0[1][2] = wh*23/56;
fx0[1][3] = ww*6/28;
fy0[1][3] = wh*16/28;
fx0[1][4] = ww*6/28;
fy0[1][4] = wh*23/28;
fx0[1][5] = ww*16/28;
fy0[1][5] = wh*13/28;
// フレーム(前面)軌跡のあとにプロット 南側壁
fx0[2][0] = ww*22/28;
fy0[2][0] = wh*5/28;
fx0[2][1] = ww*33/56;
fy0[2][1] = wh*21/56;
fx0[2][2] = ww*33/56;
fy0[2][2] = wh*23/56;
fx0[2][3] = ww*12/28;
fy0[2][3] = wh*16/28;
fx0[2][4] = ww*12/28;
fy0[2][4] = wh*23/28;
fx0[2][5] = ww*22/28;
fy0[2][5] = wh*13/28;
// フレーム(前面)軌跡のあとにプロット 南北の枠 真ん中上
fx0[3][0] = ww*21/56;
fy0[3][0] = wh*21/56;
fx0[3][1] = ww*33/56;
fy0[3][1] = wh*21/56;
// フレーム(前面)軌跡のあとにプロット 南北の枠 真ん中下
fx0[4][0] = ww*21/56;
fy0[4][0] = wh*23/56;
fx0[4][1] = ww*33/56;
fy0[4][1] = wh*23/56;
// フレーム(前面)軌跡のあとにプロット 南北の枠 西側上
fx0[5][0] = ww*6/28;
fy0[5][0] = wh*16/28;
fx0[5][1] = ww*12/28;
fy0[5][1] = wh*16/28;
// フレーム(前面)軌跡のあとにプロット 南北の枠 西側下
fx0[6][0] = ww*6/28;
fy0[6][0] = wh*23/28;
fx0[6][1] = ww*12/28;
fy0[6][1] = wh*23/28;
// 地面の点(未使用)
lx0[0] = ww*16/28;
ly0[0] = wh*13/28;
lx0[1] = ww*6/28;
ly0[1] = wh*23/28;
lx0[2] = ww*12/28;
ly0[2] = wh*23/28;
lx0[3] = ww*22/28;
ly0[3] = wh*13/28;
lx0[4] = ww*16/28;
ly0[4] = wh*13/28;
// センサー可動点の初期化
for(i=0;i<32;i++){
for(j=0;j<16;j++){
px[i][j]=px0[i];
py[i][j]=py0[i];
}
}
}
public void actionPerformed(ActionEvent e) {
// ボタンがクリックされたとき、実行される。
if( e.getSource() == b1 ) {
nsam[95]=0;
repaint();
}
if( e.getSource() == b2 ) {
nsam[95]=nsam[95]+50;
repaint();
}
if( e.getSource() == b3 ) {
refreshrate=(int)(refreshrate/2);
repaint();
}
if( e.getSource() == b4 ) {
refreshrate=(int)(refreshrate*2);
repaint();
}
if( e.getSource() == b5 ) {
nsam[95]=skip*sps;
if(running == false){
running = true;
if (timer == null){
timer = new Thread(this);
timer.start();
}
}
repaint();
}
if( e.getSource() == b6 ) {
int j;
// rto=(float)((max[16]+max[17]/2)/ww*4);
// if(rto<(max[18]+max[17]/2)/wh*4)rto=(float)((max[18]+max[17]/2)/wh*4);
rto=1;
for(j=0;j<95;j++){
if(rto50)time[0][0]=time[0][0]-100;
time0.set(Calendar.YEAR,time[0][0]+2000);
date0 = time0.getTime();
mtime[0] = date0.getTime();
time1.set(Calendar.SECOND,time[1][5]);
time1.set(Calendar.MINUTE,time[1][4]);
time1.set(Calendar.HOUR_OF_DAY,time[1][3]);
time1.set(Calendar.DAY_OF_MONTH,time[1][2]);
time1.set(Calendar.MONTH,time[1][1]-1);
if(time[1][0]>50)time[0][0]=time[1][0]-100;
time1.set(Calendar.YEAR,time[1][0]+2000);
date1 = time1.getTime();
mtime[1] = date1.getTime();
if(length<1)length = (int)((mtime[1]-mtime[0])/1000);
while(length*sps>nsam[95]){
for(j=0;j<4;j++){
for(i=11;i>0;i--){
px[j][i]=px[j][i-1];
py[j][i]=py[j][i-1];
}
loc[3*j]=(int)(sam[4*j][nsam[95]]/rto);
loc[3*j+1]=(int)(sam[4*j+1][nsam[95]]/rto);
loc[3*j+2]=(int)(sam[4*j+2][nsam[95]]/rto);
}
// センサー0〜3 可動点の位置を設定 loc[0]=NS,loc[1]=EW,loc[2]=UD
// U E
// | /
// | /
// +------ S(-N)
// (N,E,U) -> px = -N + 1/2E , py = -1/2E - U
px[0][0]=(int)(-loc[0]+loc[1]/2+px0[0]);
py[0][0]=(int)(-loc[1]/2-loc[2]+py0[0]);
px[1][0]=(int)(-loc[3]+loc[4]/2+px0[1]);
py[1][0]=(int)(-loc[4]/2-loc[5]+py0[1]);
px[2][0]=(int)(-loc[6]+loc[7]/2+px0[2]);
py[2][0]=(int)(-loc[7]/2-loc[8]+py0[2]);
px[3][0]=(int)(-loc[9]+loc[10]/2+px0[3]);
py[3][0]=(int)(-loc[10]/2-loc[11]+py0[3]);
// 仮想点(1と3の中点) 可動点の位置を設定
//
px[4][0]=(int)(-(loc[3]+loc[9])/2+(loc[4]+loc[10])/2/2+px0[4]);
py[4][0]=(int)(-(loc[4]+loc[10])/2/2-(loc[5]+loc[11])/2+py0[4]);
/*
px[0][0]=(int)(loc[1]+loc[0]/2+px0[0]);
py[0][0]=(int)(-loc[0]/2-loc[2]+py0[0]);
px[1][0]=(int)(loc[4]+loc[3]/2+px0[1]);
py[1][0]=(int)(-loc[3]/2-loc[5]+py0[1]);
px[2][0]=(int)(loc[7]+loc[6]/2+px0[2]);
py[2][0]=(int)(-loc[6]/2-loc[8]+py0[2]);
px[3][0]=(int)(loc[10]+loc[9]/2+px0[3]);
py[3][0]=(int)(-loc[9]/2-loc[11]+py0[3]);
px[4][0]=(int)(loc[13]+loc[12]/2+px0[4]);
py[4][0]=(int)(-loc[12]/2-loc[14]+py0[4]);
px[5][0]=(int)(loc[16]+loc[15]/2+px0[5]);
py[5][0]=(int)(-loc[15]/2-loc[17]+py0[5]);
px[6][0]=(int)(loc[19]+loc[18]/2+px0[6]);
py[6][0]=(int)(-loc[18]/2-loc[20]+py0[6]);
px[7][0]=(int)(loc[22]+loc[21]/2+px0[7]);
py[7][0]=(int)(-loc[21]/2-loc[23]+py0[7]);
px[8][0]=(int)(loc[25]+loc[24]/2+px0[8]);
py[8][0]=(int)(-loc[24]/2-loc[26]+py0[8]);
px[9][0]=(int)(loc[28]+loc[27]/2+px0[9]);
py[9][0]=(int)(-loc[27]/2-loc[29]+py0[9]);
px[10][0]=(int)(loc[31]+loc[30]/2+px0[10]);
py[10][0]=(int)(-loc[30]/2-loc[32]+py0[10]);
px[11][0]=(int)(loc[34]+loc[33]/2+px0[11]);
py[11][0]=(int)(-loc[33]/2-loc[35]+py0[11]);
px[12][0]=(int)(loc[37]+loc[36]/2+px0[12]);
py[12][0]=(int)(-loc[36]/2-loc[38]+py0[12]);
px[13][0]=(int)(loc[40]+loc[39]/2+px0[13]);
py[13][0]=(int)(-loc[39]/2-loc[41]+py0[13]);
px[14][0]=(int)(loc[43]+loc[42]/2+px0[14]);
py[14][0]=(int)(-loc[42]/2-loc[44]+py0[14]);
px[15][0]=(int)(loc[46]+loc[45]/2+px0[15]);
py[15][0]=(int)(-loc[45]/2-loc[47]+py0[15]);
px[16][0]=(int)(loc[49]+loc[48]/2+px0[16]);
py[16][0]=(int)(-loc[48]/2-loc[50]+py0[16]);
px[17][0]=(int)(loc[52]+loc[51]/2+px0[17]);
py[17][0]=(int)(-loc[51]/2-loc[53]+py0[17]);
px[18][0]=(int)(loc[1]+loc[0]/2+px0[18]);
py[18][0]=(int)(-loc[0]/2-loc[2]+py0[18]);
px[19][0]=(int)(loc[1]+loc[0]/2+px0[19]);
py[19][0]=(int)(-loc[0]/2-loc[2]+py0[19]);
px[20][0]=(int)(loc[1]+loc[0]/2+px0[20]);
py[20][0]=(int)(-loc[0]/2-loc[2]+py0[20]);
px[21][0]=(int)(loc[4]+loc[3]/2+px0[21]);
py[21][0]=(int)(-loc[3]/2-loc[5]+py0[21]);
px[22][0]=(int)(loc[4]+loc[3]/2+px0[22]);
py[22][0]=(int)(-loc[3]/2-loc[5]+py0[22]);
px[23][0]=(int)((loc[4]+3*loc[52])/4+(loc[3]+3*loc[51])/4/2+px0[23]);
py[23][0]=(int)(-(loc[3]+3*loc[51])/4/2-(loc[5]+3*loc[53])/4+py0[23]);
px[24][0]=(int)((loc[4]+loc[52])/2+(loc[3]+loc[51])/2/2+px0[24]);
py[24][0]=(int)(-(loc[3]+loc[51])/2/2-(loc[5]+loc[53])/2+py0[24]);
px[25][0]=(int)((3*loc[4]+loc[52])/4+(3*loc[3]+loc[51])/4/2+px0[25]);
py[25][0]=(int)(-(3*loc[3]+loc[51])/4/2-(3*loc[5]+loc[53])/4+py0[25]);
px[26][0]=(int)((loc[1]+2*loc[31])/3+(loc[0]+2*loc[30])/3/2+px0[26]);
py[26][0]=(int)(-(loc[0]+2*loc[30])/3/2-(loc[2]+2*loc[32])/3+py0[26]);
px[27][0]=(int)((2*loc[1]+loc[31])/3+(2*loc[0]+loc[30])/3/2+px0[27]);
py[27][0]=(int)(-(2*loc[0]+loc[30])/3/2-(2*loc[2]+loc[32])/3+py0[27]);
*/
repaint();
try { Thread.sleep(refreshrate); }
catch (InterruptedException e) {}
nsam[95]++;
}
running = false;
timer = null;
}
public void stop() { running = false; }
public String getAppletInfo() {
return "WIN viewer applet Copyright (c) 2003 by Takamori Ito and Laboratory for Earthquake Chemistry";
}
public void readwin() {
try{
URL url = new URL(x);
InputStream fistream = url.openStream();
DataInputStream in = new DataInputStream(fistream);
int c,i,j;
short cs;
byte cx,cy;
float fc;
int sizefile=0,sizesb,sized;
int[] sr = new int[96]; //ゴミ生成しない?
/* while((c=in.read())!=-1){sizefile++;}
in.close();*/
// G.drawString("nsam:"+nsam,200,200);
for(i=0;i<95;i++){
nsam[i]=0;
sr[i]=1;
}
// fistream = url.openStream();
// in = new DataInputStream(fistream);
while((sizesb=in.readInt())!=-1){
// sizesb=in.readInt();
// sizefile=sizefile-sizesb;
sizefile=sizefile+sizesb;
sizesb=sizesb-4;
for(i=0;i<6;i++){
c=in.readByte();
time[1][i]=(c/16)*10+c%16;
}
for(i=0;i<95;i++){
nsamx=nsamx+nsam[i];
}
if(nsamx==0){
for(i=0;i<6;i++){
time[0][i]=time[1][i];
}
time0.set(Calendar.SECOND,time[1][5]);
time0.set(Calendar.MINUTE,time[1][4]);
time0.set(Calendar.HOUR_OF_DAY,time[1][3]);
time0.set(Calendar.DAY_OF_MONTH,time[1][2]);
time0.set(Calendar.MONTH,time[1][1]-1);
if(time[0][0]>50)time[1][0]=time[1][0]-100;
time0.set(Calendar.YEAR,time[1][0]+2000);
date0 = time0.getTime();
for(j=4;j<95;j++){
nsam[j]=0;
}
}
time1.set(Calendar.SECOND,time[1][5]);
time1.set(Calendar.MINUTE,time[1][4]);
time1.set(Calendar.HOUR_OF_DAY,time[1][3]);
time1.set(Calendar.DAY_OF_MONTH,time[1][2]);
time1.set(Calendar.MONTH,time[1][1]-1);
if(time[1][0]>50)time[1][0]=time[1][0]-100;
time1.set(Calendar.YEAR,time[1][0]+2000);
date1 = time1.getTime();
sizesb=sizesb-6;
nsam[0]=(int)((date1.getTime()-date0.getTime())*sps/blocks/1000);
while(sizesb>0&&nsam[0]<15000){
ch=in.readUnsignedShort()-minch;
if(ch<0||ch>94)ch=95;
sizesb=sizesb-2;
chh=in.readShort();
sized=chh/4096;
sr[ch]=chh%4096;
sizesb=sizesb-2;
sps=sr[ch];
if(ch!=95&&nsam[ch]==0)nsam[ch]=(int)((date1.getTime()-date0.getTime())*sps/blocks/1000);
if(ftype==2){
// sam[ch][nsam[ch]+1]=in.readFloat();
}else{
sam[ch][nsam[ch]+1]=in.readInt();
}
if(ch!=95){
sam[ch][nsam[ch]]=sam[ch][nsam[ch]+1];
xtime[ch][nsam[ch]] = date1.getTime();
if(nsam[ch]==0){
max[ch]=sam[ch][nsam[ch]];
min[ch]=sam[ch][nsam[ch]];
}else{
if(sam[ch][nsam[ch]]>max[ch])max[ch]=sam[ch][nsam[ch]];
if(sam[ch][nsam[ch]]=0){
if(cs<0)cs=(short)(256+cs);
c=c*256+cs;
}else{
if(cs>0)cs=(short)(cs-256);
c=c*256+cs;
}*/
c=cs*256;
c=c|((int)(cx)<<24)>>>24;
if(ch!=95)sam[ch][i+nsam[ch]]=sam[ch][i+nsam[ch]-1]+c;
sizesb=sizesb-3;
}else if(sized==4){
if(ftype==2){
fc=in.readFloat();
// if(ch!=3)sam[ch][i+nsam[ch]]=fc;
}else{
c=in.readInt();
if(ch!=3)sam[ch][i+nsam[ch]]=sam[ch][i+nsam[ch]-1]+c;
}
sizesb=sizesb-4;
}else if(sized==0){
cx=in.readByte();
c=cx>>4;
if(ch!=95){
sam[ch][i+nsam[ch]]=sam[ch][i+nsam[ch]-1]+c;
xtime[ch][i+nsam[ch]] = date1.getTime()+i*1000*blocks/sr[ch];
if(sam[ch][i+nsam[ch]]>max[ch])max[ch]=sam[ch][i+nsam[ch]];
if(sam[ch][i+nsam[ch]]>4;
if(ch!=95){
sam[ch][i+nsam[ch]]=sam[ch][i+nsam[ch]-1]+c;
xtime[ch][i+nsam[ch]] = date1.getTime()+i*1000*blocks/sr[ch];
if(sam[ch][i+nsam[ch]]>max[ch])max[ch]=sam[ch][i+nsam[ch]];
if(sam[ch][i+nsam[ch]]max[ch])max[ch]=sam[ch][i+nsam[ch]];
if(sam[ch][i+nsam[ch]]50)time[0][0]=time[0][0]-100;
time0.set(Calendar.YEAR,time[0][0]+2000);
date0 = time0.getTime();
mtime[0] = time0.getTimeInMillis();*/
// date1 = time1.getTime();
// mtime[1] = time1.getTimeInMillis();
in.close();
url=null;
in=null;
sr=null;
}catch(FileNotFoundException e){
// System.out.println("ファイルがありません。");
}catch(Exception e){
// System.out.println(e);
}
}
public void update(Graphics ImG){
paint(ImG);
}
public void paint(Graphics ImG) {
Color backc = new Color((backcn<<8)>>>24,(backcn<<16)>>>24,(backcn<<24)>>>24);
Color base0c = new Color((base0cn<<8)>>>24,(base0cn<<16)>>>24,(base0cn<<24)>>>24);
Color basec = new Color((basecn<<8)>>>24,(basecn<<16)>>>24,(basecn<<24)>>>24);
Color linec = new Color((linecn<<8)>>>24,(linecn<<16)>>>24,(linecn<<24)>>>24);
Color font1c = new Color((font1cn<<8)>>>24,(font1cn<<16)>>>24,(font1cn<<24)>>>24);
Color font2c = new Color((font2cn<<8)>>>24,(font2cn<<16)>>>24,(font2cn<<24)>>>24);
Font f12= new Font("Helvetica",Font.PLAIN,12);
Font f16= new Font("Helvetica",Font.PLAIN,16);
g.setFont(f12);
setBackground(getBackground());
g.setColor(getBackground());
g.fillRect(0,wh,ww,18);
setVisible(true);
g.setColor(backc);
g.fillRect(0,0,ww,wh);
int i,j,k;
time0.set(Calendar.SECOND,time[0][5]+skip);
time0.set(Calendar.MINUTE,time[0][4]);
time0.set(Calendar.HOUR_OF_DAY,time[0][3]);
time0.set(Calendar.DAY_OF_MONTH,time[0][2]);
time0.set(Calendar.MONTH,time[0][1]-1);
if(time[0][0]>50)time[0][0]=time[0][0]-100;
time0.set(Calendar.YEAR,time[0][0]+2000);
date0 = time0.getTime();
mtime[0] = date0.getTime();
time1.set(Calendar.SECOND,time[1][5]);
time1.set(Calendar.MINUTE,time[1][4]);
time1.set(Calendar.HOUR_OF_DAY,time[1][3]);
time1.set(Calendar.DAY_OF_MONTH,time[1][2]);
time1.set(Calendar.MONTH,time[1][1]-1);
if(time[1][0]>50)time[0][0]=time[1][0]-100;
time1.set(Calendar.YEAR,time[1][0]+2000);
date1 = time1.getTime();
mtime[1] = date1.getTime();
if(length<1)length = (int)((mtime[1]-mtime[0])/1000);
// フレーム(背面)4本
g.setColor(Color.gray);
for(k=0;k<4;k++){
g.drawLine(fx0[0][k],fy0[0][k],fx0[0][k+1],fy0[0][k+1]);
}
// フレーム(背面)5本
for(k=0;k<5;k++){
g.drawLine(fx0[1][k],fy0[1][k],fx0[1][k+1],fy0[1][k+1]);
}
g.setColor(Color.gray); // センサーオリジナル位置を結ぶ
g.drawLine(px0[0],py0[0],px0[4],py0[4]);
g.drawLine(px0[1],py0[1],px0[3],py0[3]);
g.drawLine(px0[4],py0[4],px0[2],py0[2]);
g.setColor(Color.gray);
g.setFont(f12);
g.setColor(Color.white); // センサー位置にクロス印
for(k=0;k<4;k++){
g.drawLine(px0[k]-7,py0[k]+7,px0[k]+7,py0[k]-7);
g.drawLine(px0[k]-10,py0[k],px0[k]+10,py0[k]);
g.drawLine(px0[k],py0[k]-10,px0[k],py0[k]+10);
}
g.setColor(Color.red); // センサー間(動線)
g.drawLine(px[0][0],py[0][0],px[4][0],py[4][0]);
g.drawLine(px[1][0],py[1][0],px[4][0],py[4][0]);
g.drawLine(px[4][0],py[4][0],px[3][0],py[3][0]);
g.drawLine(px[2][0],py[2][0],px[4][0],py[4][0]);
g.setColor(Color.pink); // 軌跡とセンサーの丸印
for(k=0;k<4;k++){
for(j=0;j<10;j++){
g.drawLine(px[k][j],py[k][j],px[k][j+1],py[k][j+1]);
}
g.fillOval(px[k][0]-5,py[k][0]-5,10,10);
}
g.setColor(Color.lightGray); // 手前のフレーム描画
// フレーム(前面)5本
for(k=0;k<5;k++){
g.drawLine(fx0[2][k],fy0[2][k],fx0[2][k+1],fy0[2][k+1]);
}
// フレーム(前面)1本
for(k=0;k<1;k++){
g.drawLine(fx0[3][k],fy0[3][k],fx0[3][k+1],fy0[3][k+1]);
}
// フレーム(前面)1本
for(k=0;k<1;k++){
g.drawLine(fx0[4][k],fy0[4][k],fx0[4][k+1],fy0[4][k+1]);
}
// フレーム(前面)1本
for(k=0;k<1;k++){
g.drawLine(fx0[5][k],fy0[5][k],fx0[5][k+1],fy0[5][k+1]);
}
// フレーム(前面)1本
for(k=0;k<1;k++){
g.drawLine(fx0[6][k],fy0[6][k],fx0[6][k+1],fy0[6][k+1]);
}
g.setColor(Color.pink);
g.drawString(((nsam[95]+1)*1000/sps-skip*1000)+" msec",10,30);
g.setColor(Color.white);
// g.drawLine((int)(10),(int)(wh-10),(int)(10+100/rto),(int)(wh-10));
// g.drawString("100microm",10,wh-15);
// 方位
g.drawLine((int)(ww-70),(int)(wh-30),(int)(ww-20),(int)(wh-30));
g.drawLine((int)(ww-70),(int)(wh-30),(int)(ww-70),(int)(wh-80));
g.drawLine((int)(ww-70),(int)(wh-30),(int)(ww-45),(int)(wh-55));
//g.drawString("E",(int)(ww-20),(int)(wh-30));
//g.drawString("U",(int)(ww-70),(int)(wh-81));
//g.drawString("N",(int)(ww-45),(int)(wh-55));
g.drawString("S",(int)(ww-20),(int)(wh-30));
g.drawString("U",(int)(ww-70),(int)(wh-81));
g.drawString("E",(int)(ww-45),(int)(wh-55));
rto50=(int)(rto*50);
g.drawString(rto50+"microm",ww-90,wh-10);
g.setColor(font1c);
g.drawString(st+" Start : "+date0.toString()+" --- length : "+(length+blocks)+" sec",10,14);
g.setColor(Color.gray);
g.drawString("SEISM",ww-47,wh+14);
ImG.drawImage(Im,0,0,this);
showStatus(comment);
}
}