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

📄 commandpolarr.java

📁 This software transmits data (using TCP/IP) from I/O pins (of the Tini Board - from Dallas Semicondu
💻 JAVA
字号:
import com.dalsemi.system.*;

public class CommandPolarr extends Thread 
{
	final long const_CommandImpulsWidth = 250;
	final long const_ReactionTimeToChanges = 100;
	// Sys.gc() se va executa dupa ce sau efectual const_MakeGarbageCollector cicluri const_ReactionTimeToChanges
	// adica 100 * 100 = 10000 msec.
	final long const_MakeGarbageCollector = 100;
	
	boolean DEBUG=false;
	boolean ffRunThread=true;
	int fiStartPort;
	int fiNumberOfPortsToRead;
	byte[] fbyteDataReceived;
	
	Polarr parent;
	DataPort dpPort;
	
	public CommandPolarr(Polarr Parent,boolean Debug,int FromPort,int NumberOfPorts)
	{
		parent=Parent;
		DEBUG=Debug;
		fiStartPort=FromPort;
		fiNumberOfPortsToRead=NumberOfPorts;
		fbyteDataReceived=new byte[fiNumberOfPortsToRead];
		dpPort=new DataPort(FromPort);
		if (SendBytesToPort((byte)0,(byte)0))
			;
	}

	public void run()
	{
		int llMakeGarbageCollector=0;
		int liStartPort=fiStartPort;
		int liNumberOfPortsToRead=fiNumberOfPortsToRead;
		byte[] lbyteDataReceived=new byte[liNumberOfPortsToRead];
		if (DEBUG) System.out.println("CommandPolarr: Metoda run()");		while(ffRunThread){
			try{
				dpPort.read(lbyteDataReceived,0,liNumberOfPortsToRead);
			}
			catch(IllegalAddressException iae){
				System.out.println("CommandPolarr: Eroare la citirea octetilor (err:"+iae+")");
			}
			// luam in considerare doar primi doi biti de la primul octet
			lbyteDataReceived[0] = (byte)(3 & (int)(lbyteDataReceived[0]));
			if (lbyteDataReceived[0]!=fbyteDataReceived[0] || lbyteDataReceived[1]!=fbyteDataReceived[1]){
				// incarcam noile valori
				if (DEBUG) System.out.println("CommandPolarr: a aparut o schimbare BYTE(0)="+lbyteDataReceived[0]+" BYTE(1)="+lbyteDataReceived[1]);
				System.arraycopy(lbyteDataReceived,0,fbyteDataReceived,0,2);
				parent.SendToTcpIP(fbyteDataReceived[0],fbyteDataReceived[1]);
			}
			try{
				sleep(const_ReactionTimeToChanges);			}			catch(InterruptedException ie){}
			//if (DEBUG) System.out.println("CommandPolarr: llMakeGarbageCollector="+llMakeGarbageCollector);			llMakeGarbageCollector++;			if (llMakeGarbageCollector>const_MakeGarbageCollector){				llMakeGarbageCollector=0;
				if (DEBUG) System.out.println("CommandPolarr: BYTE(0)="+lbyteDataReceived[0]+"    BYTE(1)="+lbyteDataReceived[1]);				System.gc();			}
		}
	}
	
	public void destroy()
	{
		ffRunThread=false;
		dpPort=null;
		stop();		System.gc();
		super.destroy();
	}
	
	public void SendActualBytesValue()
	{
		parent.SendToTcpIP(fbyteDataReceived[0],fbyteDataReceived[1]);
	}
	
	public synchronized boolean SendBytesToPort(byte FirstByte,byte SecondeByte)
	{
		// ATENTIE trebuie trimis doar un impuls 50->500 msec.
		boolean lfSendStatusOK=false;
		byte[] lbyteDataReceived=new byte[2];
		byte[] lbyteBlankData=new byte[2];
		
		lbyteBlankData[0]=0;
		lbyteBlankData[1]=0;
		lbyteDataReceived[0]=SecondeByte;
		lbyteDataReceived[1]=FirstByte;
		try{
			// transmitem date
			dpPort.write(lbyteDataReceived,0,2);
			try{
				sleep(const_CommandImpulsWidth);			}			catch(InterruptedException ie){}			// anulam intrarile
			dpPort.write(lbyteBlankData,0,2);
		}
		catch(IllegalAddressException iae){
			lfSendStatusOK=false;
			System.out.println("CommandPolarr: Eroare la citirea octetilor (err:"+iae+")");
		}
		return lfSendStatusOK;
	}
}

⌨️ 快捷键说明

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