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

📄 display.java

📁 Java Op Processor java vhdl processor
💻 JAVA
字号:
package oebb;/***	Display.java: Display and Keyboard handling**	Author: Martin Schoeberl (martin.schoeberl@chello.at)**/import joprt.*;import com.jopdesign.sys.Const;import com.jopdesign.sys.Native;public class Display extends RtThread {	static int[] fb;	static int posRef;	static boolean gpsOk;	static boolean dgpsOk;	static boolean inetOk;	static final int ESC = 0x1b;	// Language for 7 bit encoding	static final int FON = 0x52;	static final int GER = 2;	static final int CCT = 0x74;	// character code type	static final int LAT = 16;		// WPC 1252	static final int HOM = 0x0b;	static final int FB_OFF = 4;	Display(int prio, int period) {		super(prio, period);		init();	}	private static final int MAX_TMP = 32;	private static int[] tmp;			// a generic buffer	private static void init() {		int i;		tmp = new int[MAX_TMP];/*		Native.wr(1, Native.IO_DISP);									// display reset		sleepMs(5);		Native.wr(0, Native.IO_DISP);									// display operate		sleepMs(100);*/		fb = new int[20*4+FB_OFF];		posRef = 0;		initMsg();	}	public static void initMsg() {		clear();		String s = "ZLB-01 System   EEG";		write(0, s);		s = "Programm Ver: ";		int i = s.length();		write(20, s);		write(20+i, Main.VER_MAJ+'0');		write(20+i+1, '.');		write(20+i+2, (Main.VER_MIN/10)+'0');		write(20+i+3, (Main.VER_MIN%10)+'0');		s = "Strecken Ver: ";		i = s.length();		write(40, s);		intVal(40+i, Flash.getVer());	}	public static void setGpsOk(boolean val) {		gpsOk = val;		setStatus();	}	public static void setDgpsOk(boolean val) {		dgpsOk = val;		setStatus();	}	public static void setInetOk(boolean val) {		inetOk = val;		setStatus();	}	private static void setStatus() {		fb[19+FB_OFF] = gpsOk ? '*' : ' ';		fb[39+FB_OFF] = dgpsOk ? '+' : ' ';		fb[59+FB_OFF] = inetOk ? '#' : ' ';	}				/**	*	Clear display, set status info.	*/	public static void clear() {		fb[0] = HOM;		fb[1] = ESC;		fb[2] = CCT;		fb[3] = LAT;		for (int i=0; i<20*4; ++i) {			fb[i+FB_OFF] = ' ';		}		setStatus();	}	public static void write(int pos, int[] buf) {		int i = buf.length;		int j;		int end;		if (pos < 20) {			end = 19;		} else if (pos < 40) {			end = 39;		} else {			end = 59;		}		for (j=0; j<i; ++j) {			fb[pos+j+FB_OFF] = buf[j];					// in [0] is cursor home		}		for (; pos+j < end; ++j) {			fb[pos+j+FB_OFF] = ' ';		}	}	/**	*	write a String at position x and clear till character position 19	*/	public static void write(int pos, String s) {		int i = s.length();		int j;		int end;		if (pos < 20) {			end = 19;		} else if (pos < 40) {			end = 39;		} else {			end = 59;		}		for (j=0; j<i; ++j) {			fb[pos+j+FB_OFF] = s.charAt(j);					// in [0] is cursor home		}		for (; pos+j < end; ++j) {			fb[pos+j+FB_OFF] = ' ';		}	}	/**	*	write a String and an integer at position x and clear till character position 19	*/	public static void write(int pos, String s, int val) {		int i = s.length();		int j;		int end;		if (pos < 20) {			end = 19;		} else if (pos < 40) {			end = 39;		} else {			end = 59;		}		for (j=0; j<i; ++j) {			fb[pos+j+FB_OFF] = s.charAt(j);					// in [0] is cursor home		}		pos += j;		if (val<0) {			write(pos++, '-');			val = -val;		}		for (i=0; i<MAX_TMP-1; ++i) {			tmp[i] = (val%10)+'0';			val /= 10;			if (val==0) break;		}		for (val=i; val>=0; --val) {			write(pos++, tmp[val]);		}		for (j=0; pos+j < end; ++j) {			fb[pos+j+FB_OFF] = ' ';		}	}	/**	*	write a StringBuffer at position x and clear till character position 19	*/	public static void write(int pos, StringBuffer s) {		int i = s.length();		int j;		int end;		if (pos < 20) {			end = 19;		} else if (pos < 40) {			end = 39;		} else {			end = 59;		}		for (j=0; j<i; ++j) {			fb[pos+j+FB_OFF] = s.charAt(j);					// in [0] is cursor home		}		for (; pos+j < end; ++j) {			fb[pos+j+FB_OFF] = ' ';		}	}	/**	*	write a StringBuffer and an integer at position x and clear till character position 19	*/	public static void write(int pos, StringBuffer s, int val) {		int i = s.length();		int j;		int end;		if (pos < 20) {			end = 19;		} else if (pos < 40) {			end = 39;		} else {			end = 59;		}		for (j=0; j<i; ++j) {			fb[pos+j+FB_OFF] = s.charAt(j);					// in [0] is cursor home		}		pos += j;		if (val<0) {			write(pos++, '-');			val = -val;		}		for (i=0; i<MAX_TMP-1; ++i) {			tmp[i] = (val%10)+'0';			val /= 10;			if (val==0) break;		}		for (val=i; val>=0; --val) {			write(pos++, tmp[val]);		}		for (j=0; pos+j < end; ++j) {			fb[pos+j+FB_OFF] = ' ';		}	}	public static void write(int pos, int ch) {		fb[pos+FB_OFF] = ch;	}	public static void intVal(int pos, int val) {				int i;		if (val<0) {			write(pos++, '-');			val = -val;		}		for (i=0; i<MAX_TMP-1; ++i) {			tmp[i] = (val%10)+'0';			val /= 10;			if (val==0) break;		}		for (val=i; val>=0; --val) {			write(pos++, tmp[val]);		}	}	public static void ipVal(int pos, int val) {		for (int i=0; i<4; ++i) {			int b = (val>>((3-i)*8)) & 0xff;			write(pos++, b/100+'0');			write(pos++, b/10%10+'0');			write(pos++, b%10+'0');			if (i<3) write(pos++, '.');		}	}	public static void hexVal(int val) {		int i, j;	}	/**	*	Write three lines.	*/	public static void write(String l1, String l2, String l3) {		write(0, l1);		write(20, l2);		write(40, l3);	}	public static void write(String l1, int v1, String l2, String l3) {		write(0, l1, v1);		write(20, l2);		write(40, l3);	}	public static void write(String l1, String l2, int v2, String l3) {		write(0, l1);		write(20, l2, v2);		write(40, l3);	}	public static void write(String l1, int v1, String l2, int v2, String l3) {		write(0, l1, v1);		write(20, l2, v2);		write(40, l3);	}	/**	*	Write three lines.	*/	public static void write(StringBuffer l1, StringBuffer l2, StringBuffer l3) {		write(0, l1);		write(20, l2);		write(40, l3);	}	/**	*	Write three lines.	*/	public static void write(String l1, StringBuffer l2, StringBuffer l3) {		write(0, l1);		write(20, l2);		write(40, l3);	}	/**	*	Write three lines.	*/	public static void write(String l1, StringBuffer l2, String l3) {		write(0, l1);		write(20, l2);		write(40, l3);	}	public void run() {		int i, j;		for (;;) {			// try to write 3 characters to the disp-uart			// buffer (usualla two will fit)			// busy goes high after each character for two ms			for (j=0; j<3; ++j) {				if ((Native.rd(Const.IO_DISP) & 0x01) == 1) {					i = posRef;					Native.wr(fb[i], Const.IO_DISP+1);					++i;					// display only three lines					if (i==(60+FB_OFF)) i = 0;					posRef = i;				}			}			Keyboard.loop();			waitForNextPeriod();		}	}}

⌨️ 快捷键说明

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