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

📄 serialconnector.java

📁 无线通信的主要编程软件,是无线通信工作人员的必备工具,关天相关教程我会在后续传上.
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
            listenerList = (java.util.HashSet) this.messageIdRegisterMap.get(new Integer(messageID));        }else {            return false;        }        if(clientRegisterMap.containsKey(packetListener)){            ClientThread clientHandler = (ClientThread)clientRegisterMap.get(packetListener);            if(--clientHandler.references==0){                clientHandler.end();                clientRegisterMap.remove(packetListener);            }        }                if(listenerList.remove(packetListener)){            if(listenerList.isEmpty())                messageIdRegisterMap.remove(new Integer(messageID));            return true;        }        return false;    }        public boolean removePacketListener(MessageCenterInternalFrame packetListener){        java.util.HashSet listenerList;        java.util.Iterator mapIt = messageIdRegisterMap.keySet().iterator();        while(mapIt.hasNext()){            Object key = mapIt.next();            if(messageIdRegisterMap.containsKey(key)) {                listenerList = (java.util.HashSet) this.messageIdRegisterMap.get(key);            }else {                continue;            }            if(clientRegisterMap.containsKey(packetListener)){                ClientThread clientHandler = (ClientThread)clientRegisterMap.get(packetListener);                if(--clientHandler.references==0){                    clientHandler.end();                    clientRegisterMap.remove(packetListener);                }            }                        if(listenerList.remove(packetListener)){                if(listenerList.isEmpty())                    messageIdRegisterMap.remove(key);                            }                    }        return true;    }        public boolean sendMessage(int address, short type, byte[] data){        if(data.length > Integer.parseInt(packetSizeTextField.getText()))            return false;                        TOSMsg tosPacket = messageFactory.createTOSMsg(36);        //address        tosPacket.set_addr(address);        //System.out.println("address "+messageAdress);        //type        tosPacket.set_type(type);        //System.out.println("type "+pollActiveMessage);        //Group        tosPacket.set_group(this.group);        //System.out.println("group "+groupId);        //Length        tosPacket.set_length((short)data.length);        //System.out.println("length "+(short)data.length);        //data        tosPacket.dataSet(data, 0, tosPacket.offset_data(0), data.length);        //CRC        tosPacket.set_crc(1);                        try{            serialStub.writePacket(tosPacket.dataGet());            sentTextField.setText(Long.toString(++msgsent));                    return true;        }catch(java.io.IOException ioe){            System.err.println("I/O Exception while sending message:"+ ioe.getMessage());        }catch(java.lang.NullPointerException npe){            System.err.println("Cannot send message! Port not connected!");        }        return false;            }        public boolean sendMessage(int address, short type, short dgroup /*deprecated*/, byte[] data){        return sendMessage(address, type, data);    }        /******************************Inner Classes***********************************/    private class ItemRadioButton extends javax.swing.JRadioButton{        public ItemRadioButton(){        }                public void changeEnabledState(java.awt.event.ItemEvent itemEvent){            this.fireItemStateChanged(itemEvent);        }    }        protected class DistributorThread extends Thread{                byte[] packet;                PacketListenerIF destination;        boolean running = true;                public void end(){            running = false;        }                public void run(){                        while(running){                if(!packetBuffer.isEmpty()){                    distributeBuffer();                }else{                    try{                        //System.out.println("Sleeping");                        Thread.sleep(100);                    }catch(InterruptedException ie ){                    }                }            }        }                private synchronized void distributeBuffer(){            while(!packetBuffer.isEmpty()){                //System.out.println("Buffer Size: " + packetBuffer.size());                packet =(byte[])packetBuffer.get(0);                packetBuffer.remove(0);                                java.util.HashSet toNotify = new java.util.HashSet();                                                if(messageIdRegisterMap.containsKey(new Integer(GET_ALL_MESSAGES))) {                    toNotify.addAll((java.util.HashSet)messageIdRegisterMap.get(new Integer(GET_ALL_MESSAGES)));                }                if(messageIdRegisterMap.containsKey(new Integer(packet[PACKET_TYPE_FIELD]))) {                    toNotify.addAll((java.util.HashSet)messageIdRegisterMap.get(new Integer(packet[PACKET_TYPE_FIELD])));                }                                java.util.Iterator notifyListIterator = toNotify.iterator();                                while(notifyListIterator.hasNext()){                                        PacketListenerIF packetIF =(PacketListenerIF)notifyListIterator.next();                    if(clientRegisterMap.containsKey(packetIF)){                        ClientThread clientHandler = (ClientThread)clientRegisterMap.get(packetIF);                        clientHandler.forwardPacketReceived(packet,packetIF);                        msgadded++;                    }                }            }        }            }        protected class ClientThread extends Thread{                //byte[] packet;        private java.util.Vector messageBuffer;        PacketListenerIF destination;        boolean running = true;        public int references = 0;                /*public ClientThread(){        }*/                public ClientThread(PacketListenerIF destination){            this.destination = destination;            messageBuffer = new java.util.Vector();        }                public synchronized void  forwardPacketReceived(byte[] packet, PacketListenerIF destination) {            messageBuffer.add(packet);            //this.packet = packet;            //this.destination = destination;                    }                public void end(){            running = false;        }                public void run(){            while(running)                if(!messageBuffer.isEmpty()){                    sendBuffer();                }else{                    try{                        Thread.sleep(100);                    }catch(InterruptedException ie ){}                }        }                private synchronized void sendBuffer(){            while(!this.messageBuffer.isEmpty()){                this.destination.packetReceived((byte[])this.messageBuffer.get(0));                this.messageBuffer.remove(0);                msgposted++;                //System.out.println("recvd:"+msgreceived+" added:"+msgadded+"posted:"+msgposted);            }        }            }        protected class PacketReader extends Thread implements PacketListenerIF{        boolean run = true;        byte[] buffer = null;        public void run(){            try{                while(run){                    buffer = serialStub.readPacket();                    packetReceived(buffer);                }            }catch(Exception e){            }        }                public void stopRun(){            run = false;        }                // the first 5 bytes are: addr(2), type(1), group(1), length(1)        public void packetReceived(byte[] packet) {            //packetBuffer.add(packet);            receivedTextField.setText(Long.toString(++msgreceived));            //System.out.println("Type: " +Integer.toHexString(0xFF & packet[2]));                        java.util.HashSet toNotify = new java.util.HashSet();                        if(messageIdRegisterMap.containsKey(new Integer(GET_ALL_MESSAGES))) {                toNotify.addAll((java.util.HashSet)messageIdRegisterMap.get(new Integer(GET_ALL_MESSAGES)));            }            if(messageIdRegisterMap.containsKey(new Integer(packet[PACKET_TYPE_FIELD]))) {                toNotify.addAll((java.util.HashSet)messageIdRegisterMap.get(new Integer(packet[PACKET_TYPE_FIELD])));            }            java.util.Iterator notifyListIterator = toNotify.iterator();            while(notifyListIterator.hasNext()){                ((PacketListenerIF)notifyListIterator.next()).packetReceived(packet);                /*PacketListenerIF packetIF =(PacketListenerIF)notifyListIterator.next();                if(clientRegisterMap.containsKey(packetIF)){                    ClientThread clientHandler = (ClientThread)clientRegisterMap.get(packetIF);                    clientHandler.forwardPacketReceived(packet,packetIF);                    msgadded++;                }*/                                                                            }                    }            }    }

⌨️ 快捷键说明

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