SSブログ

UDP電圧計Java版 [ColdFire V2]このエントリーを含むはてなブックマーク#

WS000163.png

MCF52233付録基板で作る、UDP電圧計というアプリケーションプログラムが紹介されていました。 C# 版の電圧計プログラムは、性に合わないので、Javaに移植してみようと思いたちました。 ところが、ちょっと Java から離れていた間に、記憶が薄れるやら、 Java そのものが変貌しているやら、結構、難航してしまいました。 とりあえず、今夜のところは、これでご勘弁を。


package org.noritan.udpmeter;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.HeadlessException;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class UdpMeter extends JFrame {
	int adValue = 0;
	JLabel meterLabel = new JLabel("XXXX");
	JPanel meterPanel = new JPanel() {
		@Override
		public void paint(Graphics g) {
			super.paint(g);
			int w = getWidth();
			int h = getHeight();
			g.setColor(Color.BLACK);
			g.drawRect(1, 1, w - 2, h - 2);
			g.setColor(Color.RED);
			g.drawLine(
			    w / 2, h * 3 / 4,
			    (adValue - 2048) * w / 5000 + w / 2, h / 4);
		}
	};

	public UdpMeter() throws HeadlessException {
		super();
		Container contentPane = this.getContentPane();
		meterLabel.setHorizontalAlignment(JLabel.CENTER);
		contentPane.add(meterLabel, BorderLayout.NORTH);
		contentPane.add(meterPanel, BorderLayout.CENTER);
		new Thread(new Receiver()).start();
	}
	
	public class Receiver implements Runnable {
		byte[] buf = new byte[128];

		@Override
		public void run() {
			// TODO Auto-generated method stub
			try {
				DatagramSocket socket = new DatagramSocket(30049);
				DatagramPacket packet = new DatagramPacket(buf, buf.length);
				try {
					for (;;) {
						socket.receive(packet);
						adValue = Integer.parseInt(new String(packet.getData(), 0, packet.getLength()));
						meterLabel.setText(String.valueOf(adValue));
						meterPanel.repaint();
					}
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} finally {
					socket.close();
				}
			} catch (SocketException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		UdpMeter frame = new UdpMeter();
		frame.setBounds(10,10,400,300);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
	}
}

そうそう、 eclipse も、いつの間にやら GANYMEDE とかいうものになっていました。 私のお気に入りだった、 Visual Editor も、開発が止まっているみたいで。 まさに、浦島太郎状態です。

参考文献

Interface (インターフェース) 2008年 09月号 [雑誌]

Interface (インターフェース) 2008年 09月号 [雑誌]

  • 作者:
  • 出版社/メーカー: CQ出版
  • 発売日: 2008/07/25
  • メディア: 雑誌

nice!(0)  コメント(2)  トラックバック(0)  このエントリーを含むはてなブックマーク#

nice! 0

コメント 2

きぃたん@大阪

>ちょっと Java から離れていた間に、
そうそう最近使ってない
使う時間がないとも言う

>私のお気に入りだった、 Visual Editor も、
私もお気に入りです。
Visual EditorがないとVisualなプログラムが作れない

by きぃたん@大阪 (2008-08-04 15:07) 

noritan

その後、調査したところ、 eclipse.org 本家の提供ではないけれど、GANYMEDE 対応の Visual Editor が作成されているのを見つけて、入れてみました。以前の版よりは、安定しているように思います。余裕があれば、報告します。

このページは、日々変遷しているようです。
http://wiki.eclipse.org/VE/Installing

by noritan (2008-08-04 23:50) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。