package udp; import java.awt.Color; import java.awt.Font; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTextArea; public class Udp { //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////ASCII: static int [] ASCII = { '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', 10, '.', '.', 13, '.', '.',//0...15 '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.',//16...31 ' ', '!', '"', '#', '$', '%', '&', '.', '(', ')', '*', '+', ',', '-', '.', '/',//32...47 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?',//48...63 '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',//64...79 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', '.', ']', '^', '_',//80...95 '.', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',//96...111 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~', ' ',//112...127 '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.',//128...143 '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.',//144...159 '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.',//160...175 '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.',//176...191 'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П',//192...207 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я',//208...223 'а', 'б', 'в', 'г', 'д', 'е', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п',//224...239 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я',//240...255 }; //////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////TX_Ethernet: static int xTX = 0; // счёт xTX //static int [] TX_int = new int[1500]; //1500 Ethernet static byte[] TX_byte = new byte[1500]; //1500 Ethernet static String TX_IP = ""; // TX_IP Ethernet //static int TX_len = 0; // TX_len //static String UDP_TX = ""; //////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////RX_Ethernet: static int xRX = 0; // счёт xRX static int [] RX_int = new int[1500]; //1500 Ethernet static byte[] RX_byte = new byte[1500]; //1500 Ethernet static int RX_port = 0; // RX_port Ethernet static int RX_len = 0; // RX_len static String UDP_RX = ""; //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////// знаки HEX(int)> LCD(String): public static String LCD_HEX(int bi) { /////////////////// bi &= 0xFF; int z = 0; String HEX = ""; /////////////////// z=0; while (bi>15) {z++; bi=bi-16;}; if (z==0) {HEX = "0";} if (z==1) {HEX = "1";} if (z==2) {HEX = "2";} if (z==3) {HEX = "3";} if (z==4) {HEX = "4";} if (z==5) {HEX = "5";} if (z==6) {HEX = "6";} if (z==7) {HEX = "7";} if (z==8) {HEX = "8";} if (z==9) {HEX = "9";} if (z==10) {HEX = "A";} if (z==11) {HEX = "B";} if (z==12) {HEX = "C";} if (z==13) {HEX = "D";} if (z==14) {HEX = "E";} if (z==15) {HEX = "F";} /////////////////// z=0; while (bi>0) {z++; bi=bi-1;}; if (z==0) {HEX += "0";} if (z==1) {HEX += "1";} if (z==2) {HEX += "2";} if (z==3) {HEX += "3";} if (z==4) {HEX += "4";} if (z==5) {HEX += "5";} if (z==6) {HEX += "6";} if (z==7) {HEX += "7";} if (z==8) {HEX += "8";} if (z==9) {HEX += "9";} if (z==10) {HEX += "A";} if (z==11) {HEX += "B";} if (z==12) {HEX += "C";} if (z==13) {HEX += "D";} if (z==14) {HEX += "E";} if (z==15) {HEX += "F";} /////////////////// HEX += " "; return HEX; //String } //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////// TX_Ethernet: public static void TX_Ethernet(DatagramSocket socket) { //////////////////////////////////////////////////////// TX: int > byte: for (xTX=0; xTX TX_byte }; //////////////////////////////////////////////////////// TX: Ethernet: try { DatagramPacket dp = new DatagramPacket(TX_byte, RX_len, InetAddress.getByName(TX_IP),RX_port); socket.send(dp); // UDP: MIN=18; MAX=1472. }catch(IOException e) { } //////////////////////////////////////////////////////// } //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////поток 0: public static void main(String[] args) throws Exception { //////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////Ethernet: final DatagramSocket socket = new DatagramSocket(80); //socket.setReceiveBufferSize(1); // размер буфера RX Ethernet //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////Color: final Color Fon = new Color(253, 245, 230); // фон Color FonText = new Color(25, 25, 112); // Text //YELLOW//LIGHT_GRAY//GREEN//YELLOW//CYAN //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////окно_LCD: final JFrame frame1 = new JFrame("окно_LCD"); frame1.setBounds(10, 10, 1000, 550); // x,y,размер,размер //остановить выполнение программы при закрытии окна frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //не использует менеджеры по расположению элементов frame1.setLayout(null); //фиксированный размер окна JFrame frame1.setResizable(false); //Не закрывать окно по нажатию на кнопку с крестиком //frame1.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); /* //Слушатель frame1 - по нажатию на кнопку с крестиком frame1.addWindowListener(new WindowListener() { // Слушатель frame1 public void windowActivated (WindowEvent event) {} public void windowClosed (WindowEvent event) {} public void windowDeactivated(WindowEvent event) {} public void windowDeiconified(WindowEvent event) {} public void windowIconified (WindowEvent event) {} public void windowOpened (WindowEvent event) {} // Метод обработки события "Закрытие окна" public void windowClosing (WindowEvent event) { EEPROM_TX(); System.exit(0);//Завершение программы Java.//0 - нормальный режим Завершения } }); */ //////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// TextArea1 "RX" final JTextArea ta1 = new JTextArea(); //"текст", 10, 20 // ta1.setBounds(5, 108, 982, 100); // x,y,размер,размер ta1.setBackground(Fon); // RGB фон ta1.setForeground(FonText); // RGB Text //автоперенос на новую строку ta1.setLineWrap(true); // true/false //перенос длинных слов на новые строки целиком ta1.setWrapStyleWord(true); // true/false //шрифт ta1.setFont(new Font("Dialog", Font.PLAIN, 14)); // frame1.add(ta1); // добавить /////////////////////////////////////////////// ScrollPane JScrollPane sp1 = new JScrollPane (ta1); sp1.setBounds(5, 5, 982, 500); // x,y,размер,размер frame1.add(sp1); // добавить //////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////вкл: frame1.setVisible(true); // true/false // вкл окно_LCD //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////RX_Ethernet: DatagramPacket reply = new DatagramPacket(RX_byte, RX_byte.length); while(true) { //////////////////////////////////////////////////////// RX: Ethernet: try { socket.receive(reply); // UDP: MIN=18; MAX=1472. ////////////////////////////////////////////////////// RX: IP, port, len: TX_IP = "" + reply.getAddress(); // IP String RX_port = reply.getPort(); // port int RX_len = reply.getLength(); // len int }catch(IOException e) { } //////////////////////////////////////////////////////// RX Ethernet END //////////////////////////////////////////////////// RX: /TX_IP > TX_IP: //TX_IP = "/192.168.0.101" > TX_IP = "192.168.0.101" //String byte[] b_TX_IP = TX_IP.getBytes(); // reply.getAddress();//String TX_IP = ""; // сброс TX_IP for (xRX=1; xRX String TX_IP }; //////////////////////////////////////////////////// RX: byte > int: for (xRX=0; xRX int 0...255 RX_int[xRX] = RX_byte[xRX]; if (RX_int[xRX] < 0){RX_int[xRX] += 256;} }; //////////////////////////////////////////////////// RX: > LCD: UDP_RX = "TX_IP " + TX_IP + " | " + "len " + RX_len + " | " + " port " + RX_port + " | " + "\r\n"; for (xRX=0; xRX LCD }; UDP_RX += "\r\n"; //////////////////////////////////////////////////// RX: > LCD: for (xRX=0; xRX LCD }; UDP_RX += "\r\n"; //////////////////////////////////////////////////// RX: > LCD: ta1.append(UDP_RX); // > TextArea //System.out.println(UDP_RX); //////////////////////////////////////////////////// RX: > LCD: TX_Ethernet(socket);// > TX_Ethernet //////////////////////////////////////////////////// RX: try {Thread.sleep(10);} catch (Exception e){} //ограничитель скорости CPU = 40% }// while(true) //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// } }