📄 rtthread.java
字号:
/*** RtThread.java on PC for simulation of JOP*/package joprt;import com.jopdesign.sys.Const;import com.jopdesign.sys.Native;public class RtThread { private boolean nextOk; private int period; // period in us private int offset; // offset in usprivate int next; private static boolean start; public RtThread(int prio, int us) { this(prio, us, 0); } public RtThread(int prio, int us, int off) { period = us; nextOk = false; new Thread() { public void run() { runner(); } }.start(); } public void run() { } void runner() { waitForMission(); run(); } public static void startMission() { start = true; } public void waitForMission() { while (!start) { yield(); } nextOk = true; next = Native.rd(Const.IO_US_CNT); } public boolean waitForNextPeriod() { if (!nextOk) { next = Native.rd(Const.IO_US_CNT); // this should not happen! nextOk = true; // you forgot to wait on start mission } next += period; int i = Native.rd(Const.IO_US_CNT); if (next-i < 0) { // missed time! next = i; // correct next return false; }/* state = WAITING; yield();*/ while (next-Native.rd(Const.IO_US_CNT) >= 0) { // 'busy' wait with yield.try { Thread.sleep(1); } catch (Exception e) {} yield(); } return true; } /** * dummy yield() for compatibility reason. */ public static void yield() {} public static void sleepMs(int millis) { int next = Native.rd(Const.IO_US_CNT)+millis*1000; while (Native.rd(Const.IO_US_CNT)-next < 0) {try { Thread.sleep(1); } catch (Exception e) {} yield(); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -