📄 commandpolarr.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 + -