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

📄 tcpreceiver.java

📁 this software is making a conversion from TEXT to LCD / SPI. Is used to show a text on LCD Display.
💻 JAVA
字号:
import java.io.*;
import java.net.*;
import javax.comm.*;
import java.util.StringTokenizer;

public class TCPReceiver extends Thread 
{
	DisplayToSPI parent;
	
	// constante
	final int TIME_WAITING_FOR_TCPIP_CONNECTION = 5000;
	final int fiReactionTime = 500;
	int TCPIP_WAIT_PORT = 0;
	int TIME_WAITING_FOR_COM_RESPONCE = 300;
	int BAUD_RATE = 2400;
	int PARITY = SerialPort.PARITY_EVEN;
	int DATA_BITS = SerialPort.DATABITS_8;
	int STOP_BITS = SerialPort.STOPBITS_2;
	
	boolean DEBUG = false;
	boolean ffWaitData = true;
	boolean ffRunThread = true;
		
	TCPReceiver(DisplayToSPI Parent,boolean Debug,int TcpIpPort)
	{
		// se transfera setarile de DEBUG si portul TCP/IP pe care se asteapta conectarea
		DEBUG=Debug;
		TCPIP_WAIT_PORT=TcpIpPort;
		parent=Parent;
	}
	
	public synchronized void run()
	{
		// out DEBUG
		if (DEBUG) System.out.println("TCPReceiver: Metoda run()");
		// bucla este valida pana la inchiderea aplicatiei
		while(ffRunThread){
			// se initializeaza variabilele si vectorii
			int liTcpPort=TCPIP_WAIT_PORT;
			String ltCOMStringReceived="";
			
			String ftStringReceived="";
			String ftStringToSend="";
			Socket wskSocket = null;
			ServerSocket wskServerSocket = null;
			
			try
			{
				// se initializeaza socket-ul care va astepta conectari pe TCP/IP
				wskServerSocket=new ServerSocket(liTcpPort);
				// out DEBUG
				if (DEBUG) System.out.println("TCPReceiver: S-a creat un Socket pe portul " + liTcpPort);
				wskServerSocket.setSoTimeout(TIME_WAITING_FOR_TCPIP_CONNECTION);
			}
			catch( IOException ioe)
			{
				// nu mai asteptam date
				System.out.println("TCPReceiver: Eroare - Tini nu poate crea ServerSocket");
			}
			// ********************************************
			// ******* se asteapta date pe TCP/IP *********
			// ********************************************
			while(ffWaitData)
			{
				// out DEBUG
				if (DEBUG) System.out.println("TCPReceiver: Tini asteapta date pe TCP/IP");
				if (wskServerSocket == null){
					// daca nu mai avem ServerSocket trebuie sa semnalam eroarea
					System.out.println("TCPReceiver: Eroare - ServerSocket==null");
					ffWaitData=false;
					break;
				}
				try
				{
					// se asteapta date pe TCP/IP (pt o perioada setata de TIME_WAITING_FOR_TCPIP_CONNECTION msec.)
					wskSocket = wskServerSocket.accept();
					try
					{	
						// se instantiaza o 'intrare' si o 'iesire' pentru winsock
						DataInputStream tcp_dis = new DataInputStream(wskSocket.getInputStream());
						PrintWriter tcp_os = new PrintWriter(new BufferedOutputStream(wskSocket.getOutputStream()),false);
						String ltStringReceived = tcp_dis.readLine();
						if (ltStringReceived.startsWith("spi:")){
							// ************************************
							// ****** trebuie afisat pe SPI *******
							// ************************************
							// facem parcing pentru string
							// out
							if (DEBUG) System.out.println("TCPReceiver: Stringul receptionat pt SPI este " + ltStringReceived);
							// taiem primele 4 caractere
							ltStringReceived=ltStringReceived.substring(4);
							// out
							if (DEBUG) System.out.println("TCPReceiver: Stringul receptionat pt SPI dupa trunchiere este " + ltStringReceived);
							// impartim String-ul in array de String[]
							StringTokenizer stkParcer = new StringTokenizer(ltStringReceived,";");
							int liStringsNumber=stkParcer.countTokens();
							if (liStringsNumber>0){
								String[] ltTemporarStringsArray=new String[liStringsNumber];
								for (int lia=0;lia<liStringsNumber;lia++)
									ltTemporarStringsArray[lia]=stkParcer.nextToken();
								// transferam stringurile pt SPI la DisplayToSPI (nu le incarcam in variabilele publice ale lui TCPReceiver ci le trasfera prin referinta la CommandSPI)
								parent.DisplayStrings(ltTemporarStringsArray);
							}
							// transmitem prin TCP/IP un raspuns la client ca totul este OK [E5h (229)]
							ltCOMStringReceived = String.valueOf((char)((byte)229));
						}
						// trimite raspunsul prin TCP/IP
						tcp_os.println(ltCOMStringReceived);
						tcp_os.flush();
						// inchide conexiunea
						tcp_os.close();
						tcp_dis.close();
					}
					catch( Exception e)
					{
						// out DEBUG
						if (DEBUG) System.out.println("TCPReceiver: Eroare - la stream-urile de pe TCP/IP err("+ e + ")");
					}
				}
				catch( IOException ioe)
				{
					// out DEBUG
					if (DEBUG) System.out.println("TCPReceiver: Eroare - la ServerSocket (a expirat TimeOut-ul) err("+ ioe+ ")");
				}
				// facem curatenie
				System.gc();
			}
			// out DEBUG
			try{
				wskSocket.close();
				wskServerSocket.close();
				if( DEBUG) System.out.println( "TCPReceiver: Winsock-ul a fost inchis.");
			}
			catch(IOException ioe){
				if( DEBUG) System.out.println( "TCPReceiver: Winsock-ul nu a putut fi inchis.");
			}
			// facem curatenie
			System.gc();
		}
	}
}

⌨️ 快捷键说明

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