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

📄 logic.java

📁 Java Op Processor java vhdl processor
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
			return;		}		if (Status.direction == Gps.DIR_FORWARD) {		// going from left to rigth.			while (p!=null && !p.station) {				p = p.getPrev();			}		} else {			while (p!=null && !p.station) {				p = p.getNext();			}		}		if (p==null) {			Display.write("Bei dieser Position", "keine Meldung", "m鰃lich!");			waitEnter(5);			return;		}		Display.write("Ankunftsmeldung bei", p.stationLine1, "(Absenden mit [E])");		if (!waitEnter()) return;		Display.write("Ankunftsmeldung OK", p.stationLine1, "");		tim = Timer.getTimeoutSec(5);		Status.ankunftOk = false;		Comm.melnrCmd(Cmd.ANK, Status.strNr, p.melnr);		// and wait for a reply from FDL		while (loop()) {			if (Status.ankunftOk && Timer.timeout(tim)) {				return;			}		}	}	private void verlassen() {				int tim;// System.out.println("AnkVerl");		if (Status.melNr<=0 || Status.melNrStart<=0 || Status.melNrZiel<=0 ||				Status.direction == Gps.DIR_UNKNOWN) {			Display.write("Bei dieser Position", "keine Meldung", "m鰃lich!");			waitEnter(5);			return;		}		Flash.Point p = Flash.getPoint(Status.melNr);		if (p==null || !p.verlassen) {			Display.write("Bei dieser Position", "keine Meldung", "m鰃lich!");			waitEnter(5);			return;		}		if (Status.direction == Gps.DIR_FORWARD) {		// going from left to rigth.			while (p!=null && !p.station) {				p = p.getPrev();			}		} else {			while (p!=null && !p.station) {				p = p.getNext();			}		}		if (p==null) {			Display.write("Bei dieser Position", "keine Meldung", "m鰃lich!");			waitEnter(5);			return;		}		Display.write("Verl.meldung nach", p.stationLine1, "(Absenden mit [E])");		if (!waitEnter()) return;		Display.write("Verl.meldung OK", p.stationLine1, "");		tim = Timer.getTimeoutSec(5);		Status.verlassenOk = false;		Comm.melnrCmd(Cmd.VERL, Status.strNr, p.melnr);		// and wait for a reply from FDL		while (loop()) {			if (Status.verlassenOk && Timer.timeout(tim)) {				return;			}		}	}	private void download() {		int dlType = -1;		int percent = -1;		int cnt = 0;// System.out.println("Download");		Display.write("躡ertragung", "", "");		for (;;) {			loop();			// there is no exit from download state!			if (Status.dlType!=dlType) {				dlType = Status.dlType;				if (dlType==0) {					Display.write("躡ertragung", "  Streckendaten", "");				} else {					Display.write("躡ertragung", "  Programm", "");				}			}			if (percent != Status.dlPercent) {				percent = Status.dlPercent;				cnt = (cnt+1) & 0x01;				Display.write(20, bsyIndication.charAt(cnt));				if (percent==101) {					Display.write(40, "fertig");				} else if (percent>0 && percent<101) {					int i = percent*19/100;					for (int j=0; j<i; ++j) {						Display.write(40+j, '#');					}				}			}		}	}	private void info() {		int i, j;// System.out.println("Infobtrieb");		Display.write("Infobetrieb", "", "");		checkMelnr = false;		if (Status.connOk) {			Comm.charlyStatus(Cmd.INFO_MODE, 1);		}		// wait for Enter or 'C'		while (loop()) {			i = Keyboard.rd();			if (i==Keyboard.E || i==Keyboard.C) {				Comm.charlyStatus(Cmd.INFO_MODE, 0);				reset();			}									tmpStr.setLength(0);			tmpStr.append(Gps.nearestPointDistance);			tmpStr.append("m zu ");			tmpStr.append(Gps.nearestPoint);			tmpStr.append(' ');			tmpStr.append(Gps.speed);			tmpStr.append(" km/h");						Display.write(0, tmpStr);						tmpStr.setLength(0);			i = Gps.speedCalc;			if (i<0) i = 0;			tmpStr.append(Gps.speedCalc);			tmpStr.append(" km/h");			if (i<1000) tmpStr.append(' ');			if (i<100) tmpStr.append(' ');			tmpStr.append("MNr: ");			Display.write(20, tmpStr, Status.melNr);			Display.write(40, Gps.text);		}	}	private void lern() {		int i, val;// System.out.println("Lern");		Display.write("Lerne", "Strecke","");		checkMelnr = false;		Status.strNr = getNumber(8, 3);		if (Status.strNr == -1) return;		Flash.loadStr(Status.strNr);		int melnr = Flash.getFirst(Status.strNr);		if (melnr==-1) {			Display.write("Strecke", "nicht gefunden", "");			waitEnterAndInit();			return;		}		Flash.loadStrNames(Status.strNr, 0, 0);		startConn();		// Conn changes to FLD_CONN		Status.state = Status.LERN;		Comm.charlyStatus(Cmd.ST_LERN, 1);		while (loop()) {			Display.write(0, "Lernbetrieb ", melnr);			Flash.Point p = Flash.getPoint(melnr);			Display.write(20, p.stationLine1);			Display.write(40, Gps.text);			val = Keyboard.rd();			if (val==-1) {				continue;			}			if (val==Keyboard.C) {				Comm.charlyStatus(Cmd.ST_LERN, 0);				reset();			}			if (val==Keyboard.DOWN) {				i = Flash.getPrev(melnr);				if (i!=-1) melnr = i;			}			if (val==Keyboard.UP) {				i = Flash.getNext(melnr);				if (i!=-1) melnr = i;			}			if (val==Keyboard.E) {				measure(melnr);			}		}	}	private void measure(int melnr) {// System.out.println("Measure");		Display.write("Mittelung ", melnr, "", "");		Gps.startAvg();		while (loop()) {			Display.intVal(16, Gps.avgCnt);			Display.intVal(20, Gps.getLatAvg());			Display.intVal(30, Gps.getLonAvg());			Display.intVal(40, Gps.last_lat);			Display.intVal(50, Gps.last_lon);			int val = Keyboard.rd();			if (val==-1) {				continue;			}			if (val==Keyboard.C) {				return;			}			if (val==Keyboard.E) {				Gps.stopAvg();				Display.write("Wert wird", "gesendet", "");				Status.lernOk = false;				Comm.lern(Status.strNr, melnr, Gps.getLatAvg(), Gps.getLonAvg());				// and wait for a reply from FDL				while (loop()) {					if (Status.lernOk) {						return;					}				}			}		}	}		/**	 * Menu command to change to ES mode	 *	 */	private void es221() {		Display.write("Wechsel zu", "ES221 Betrieb", "");		// we will keep the connection up		Comm.alarm(Status.strNr, Status.melNr, Cmd.ALARM_ES221);		System.out.println("esInit");		Status.esMode = true;		// question: when shall be do the esStr()?		// is it necessary to do esStr() on ES Strecken befor findStr()?		synchronized(this) {			Flash.esStr();						Status.melNr = -1;			// disable till Gps finds the new Melnr for the			// changed Strecke			checkMelnr = false;		}				int melnr = Flash.getFirst(Status.strNr);		Flash.Point p = Flash.getPoint(melnr);		if (p==null) {			Display.write("Keine ES-mode", "Streckendaten", "");			while (loop()) {				;			}			return;		}		Status.state = Status.ES_RDY;				for (;;) {			if (Status.melNr>0) {				// now we can check for a change of Melnr				checkMelnr = true;				Status.melNrStart = Status.melNr;				Status.melNrZiel = Status.melNr;				break;			}			loop();		}		int tim = Timer.getTimeoutSec(2);		while (loop()) {			if (Timer.timeout(tim)) {				return;			}		}	}		/**	 * ES mode: wait for entering a destination	 *	 */	private void esRdy() {				int val = 0;		int i = 0;		System.out.println("ES Rdy");		int melnr = Flash.getFirst(Status.strNr);		Flash.Point p = Flash.getPoint(melnr);		for (;;) {			i = Flash.getNext(melnr);			i = Flash.getNext(i);			if (i!=-1) {				melnr = i;				if (melnr>=Status.melNr) {					p = Flash.getPoint(melnr);					break;				}			} else {				i = 0;				break;			}		}		while (loop()) {			// check for going back to 'Bereit'			if (Gps.changeToBereit) {				reset();			}			Display.write("Haltepunkt ausw.:", p.stationLine1, p.stationLine2);			val = Keyboard.rd();			if (val==-1) {				continue;			}			if (val==Keyboard.B) {				Keyboard.unread(val);				return;			}			// display only the left point text			if (val==Keyboard.UP) {				i = Flash.getNext(melnr);				i = Flash.getNext(i);				if (i!=-1) {					melnr = i;					p = Flash.getPoint(melnr);				}			}			if (val==Keyboard.DOWN) {				i = Flash.getPrev(melnr);				i = Flash.getPrev(i);				if (i!=-1) {					melnr = i;					p = Flash.getPoint(melnr);				}			}			if (val==Keyboard.E) {								// The left point is the station				// smaller melnr is start				Status.melNrStart = Status.melNr;				Status.melNrZiel = melnr;				Status.state = Status.ERLAUBNIS;				Status.art = Status.ZUG_NORMAL;				Status.direction = Gps.DIR_UNKNOWN;				setGpsData();				tmpStr.append("Fahrt von ");				tmpStr.append(Status.melNrStart);				tmpStr.append(" nach ");				tmpStr.append(Status.melNrZiel);				tmpStr.append("\n");				Flash.log(tmpStr);				return;			}					}	}	/**	 * 	 */	private void setGpsData() {		tmpStr.setLength(0);		synchronized (Gps.lastGGA) {			tmpStr.append(Gps.lastGGA);		}		synchronized (Gps.lastRMC) {			tmpStr.append(Gps.lastRMC);		}		tmpStr.append("Strecke ");		tmpStr.append(Status.strNr);		tmpStr.append(" - ");	}	private void esVerschub() {		Display.write("ES Verschub", "", "");		setGpsData();		tmpStr.append("Verschub: ");		tmpStr.append(Status.melNr);		tmpStr.append("\n");		Flash.log(tmpStr);		Status.state = Status.ES_VERSCHUB;		checkMelnr = false;		while (loop()) {			Status.melNrStart = Status.melNr;			Status.melNrZiel = Status.melNr;		}		checkMelnr = true;	}		/**	*	Wait for Enter and set state to INIT.	*/	private void waitEnterAndInit() {		while (loop()) {			if (Keyboard.rd()==Keyboard.E) {				Status.state = Status.INIT;				Status.strNr = 0;				Status.melNr = 0;				Status.melNrSent = 0;				return;			}		}	}	/**	*	wait for Enter only, no unread on 'B'.	*	no break out with loop()	*/	private void waitEnterOnly() {		for (;;) {			loop();			if (Keyboard.rd()==Keyboard.E) return;		}	}	/**	*	wait for any key press (Ziel in ES-mode)	*/	private boolean waitAnyKey() {		int val;		int state = Status.state;		while (loop()) {			val = Keyboard.rd();			if (val!=-1) {				return true;			}			// some State has changed!			// dont wait anymore			if (state!=Status.state) {				return false;			}		}		return false;	}	/**	*	return false if 'C'	*/	private boolean waitEnter() {		int val;		int state = Status.state;		while (loop()) {			val = Keyboard.rd();			if (val==Keyboard.E) {				return true;			} else if (val==Keyboard.B) {				Keyboard.unread(val);				return false;			} else if (val==Keyboard.C) {				return false;			}			// some State has changed!			// dont wait anymore			if (state!=Status.state) {				return false;			}		}		return false;	}	/**	*	return false if 'C'	*/	private boolean waitEnter(int timeout) {		int val;		int tim;		tim = Timer.getTimeoutSec(5);		int state = Status.state;		while (loop()) {			val = Keyboard.rd();			if (val==Keyboard.E) {				return true;			} else if (val==Keyboard.B) {				Keyboard.unread(val);				return false;			} else if (val==Keyboard.C) {				return false;			}			// some State has changed!			// dont wait anymore			if (state!=Status.state) {				return false;			}			// timout expired			if (Timer.timeout(tim)) {				return false;			}		}		return false;	}	/**	*	read a number with display update at pos.	*	'E' is Enter	*	'C' is Backspace	*	'B' cancels input (call menu)	*/	private int getNumber(int pos, int size) {		int cnt;		if (size>BUF_LEN) size = BUF_LEN;		for (cnt=0; cnt<size; ++cnt) {			buf[cnt] = 0;		}		cnt = 0;		while (loop()) {			Display.write(20+pos+cnt, '_');			int val = Keyboard.rd();			if (val==Keyboard.C) {				Display.write(20+pos+cnt, ' ');				if (cnt>0) {					--cnt;				} else {					return -1;				}			}			if (val==Keyboard.E || cnt==size) {				val = 0;				Display.write(20+pos+cnt, ' ');				for (int i=0; i<cnt; ++i) {					val *= 10;					val += buf[i];				}				return val;			}			if (val==Keyboard.B) {				Keyboard.unread(val);				continue;			}			val = Keyboard.num(val);			if (val!=-1) {				buf[cnt] = val;				Display.write(20+pos+cnt, '0'+val);				++cnt;			}		}		return -1;	}}

⌨️ 快捷键说明

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