⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 proximity.java

📁 无线传感器网络操作系统源代码
💻 JAVA
字号:
package net.tinyos.widgets;import java.awt.*;import java.awt.font.*;import java.awt.event.*;import java.awt.geom.*;import java.awt.geom.AffineTransform;import java.awt.image.BufferedImage;import javax.swing.*;import java.util.*;import java.io.*;import java.net.*;import java.util.Timer;import java.util.TimerTask;public class Proximity extends JApplet implements Runnable {    private Thread thread;    private BufferedImage bimg;    private double ss;    private LinkedList my_packets;    private static String level[] = {"0", "32","64","96","128","160","192","224","256"};    public Proximity(LinkedList p) {        setBackground(Color.white);  	my_packets = p;    }    public void scaleSS(int ss_pkt) {	ss =  (double)(ss_pkt-416)/256;	System.out.println("Scaled signal strength = " + ss*256);    }    public void drawProximityWidget(int w, int h, Graphics2D g2) {		g2.setStroke(new BasicStroke(5.0f));		// Draw 8 lines	for (int i=1; i<=8; i++) {	    g2.draw(new Line2D.Double((double)w/10,((double)i/8.0)*h, w,((double)i/8.0)*h));	    g2.drawString(level[8-i], (int)(w*0.03), (int)(((double)i/8.0)*h));	}	// draw graph	Rectangle2D rect = new Rectangle2D.Double(0.3*w,h-ss*h,0.3*w,ss*h);	//	rect.setColor(Color.red);	g2.draw(rect);	g2.setColor(Color.red);	g2.fill(rect);	g2.setColor(Color.black);    }        public void paint(Graphics g) {        Dimension d = getSize();        Graphics2D g2 = createGraphics2D(d.width, d.height);        drawProximityWidget(d.width, d.height, g2);        g2.dispose();        g.drawImage(bimg, 0, 0, this);    }            public Graphics2D createGraphics2D(int w, int h) {        Graphics2D g2 = null;        if (bimg == null || bimg.getWidth() != w || bimg.getHeight() != h) {            bimg = (BufferedImage) createImage(w, h);        }         g2 = bimg.createGraphics();        g2.setBackground(getBackground());        g2.clearRect(0, 0, w, h);        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,                            RenderingHints.VALUE_ANTIALIAS_ON);        return g2;    }    public void start() {        thread = new Thread(this);        thread.setPriority(Thread.MIN_PRIORITY);        thread.start();    }    public synchronized void stop() {        thread = null;    }        public void run() {	Thread me = Thread.currentThread();	int timeout=0;	ProximityTimer ptimer = null;	Timer t = new Timer();	while (thread == me) {	    try {		synchronized(my_packets) {		    if (my_packets.size() != 0) {			if (ptimer != null) ptimer.cancel();			StringTokenizer str = new StringTokenizer(String.valueOf(my_packets.removeFirst()));			scaleSS(Integer.valueOf(str.nextToken()).intValue());			repaint();			ptimer = new ProximityTimer();			t.schedule(ptimer, 10*1000);		    }		}	    } catch (Exception e){}	    try {		thread.sleep(1);	    } catch (InterruptedException e) { break; }	}	thread = null;    }    class ProximityTimer extends TimerTask {	public void run() {	    scaleSS(0);	    repaint();	}    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -