java 怎么在本包中实时处理其他包中监听器处理后的数据

问题描述

我在写一个串口通信的java程序。我在窗口包中写窗口类(main),在串口包中写串口通信类。现在串口通信类里的接受监听器有数据反映了。我怎么将数据写到屏幕上呢?我不想在串口类中写窗口程序,怎么返回监听器的数据呢?怎么在串口类中接受呢???请求大神指点迷经?新手

解决方案

解决方案二:
java串口通信类程序packagefirst;/**@(#)SimpleRead.java1.1298/06/25SMI**Copyright(c)1998SunMicrosystems,Inc.AllRightsReserved.**Sungrantsyou("Licensee")anon-exclusive,royaltyfree,license*touse,modifyandredistributethissoftwareinsourceandbinary*codeform,providedthati)thiscopyrightnoticeandlicenseappear*onallcopiesofthesoftware;andii)Licenseedoesnotutilizethe*softwareinamannerwhichisdisparagingtoSun.**Thissoftwareisprovided"ASIS,"withoutawarrantyofanykind.*ALLEXPRESSORIMPLIEDCONDITIONS,REPRESENTATIONSANDWARRANTIES,*INCLUDINGANYIMPLIEDWARRANTYOFMERCHANTABILITY,FITNESSFORA*PARTICULARPURPOSEORNON-INFRINGEMENT,AREHEREBYEXCLUDED.SUNAND*ITSLICENSORSSHALLNOTBELIABLEFORANYDAMAGESSUFFEREDBY*LICENSEEASARESULTOFUSING,MODIFYINGORDISTRIBUTINGTHE*SOFTWAREORITSDERIVATIVES.INNOEVENTWILLSUNORITSLICENSORS*BELIABLEFORANYLOSTREVENUE,PROFITORDATA,ORFORDIRECT,*INDIRECT,SPECIAL,CONSEQUENTIAL,INCIDENTALORPUNITIVEDAMAGES,*HOWEVERCAUSEDANDREGARDLESSOFTHETHEORYOFLIABILITY,ARISING*OUTOFTHEUSEOFORINABILITYTOUSESOFTWARE,EVENIFSUNHASBEEN*ADVISEDOFTHEPOSSIBILITYOFSUCHDAMAGES.**Thissoftwareisnotdesignedorintendedforuseinon-linecontrol*ofaircraft,airtraffic,aircraftnavigationoraircraft*communications;orinthedesign,construction,operationor*maintenanceofanynuclearfacility.Licenseerepresentsand*warrantsthatitwillnotuseorredistributetheSoftwareforsuch*purposes.*/importjava.io.*;importjava.util.*;importjavax.comm.*;publicclassRS232ReadandWriteimplementsRunnable,SerialPortEventListener{staticCommPortIdentifierportId;staticEnumerationportList;staticInputStreaminputStream;staticOutputStreamoutputStream;staticSerialPortserialPort;staticThreadreadThread;staticintRX_numBytes;staticintmessageString=7;publicStringALL_COMString;publicStringWORKing_COMString;byte[]readBuffer;publicRS232ReadandWrite(){ALL_COMString=newString();WORKing_COMString=newString();portList=CommPortIdentifier.getPortIdentifiers();while(portList.hasMoreElements()){portId=(CommPortIdentifier)portList.nextElement();if(portId.getPortType()==CommPortIdentifier.PORT_SERIAL){ALL_COMString+=""+portId.getName().toString();if(portId.getName().equals("COM2")){System.out.println("所有的COM:"+ALL_COMString);WORKing_COMString=portId.getName().toString();try{serialPort=(SerialPort)portId.open("SimpleReadApp",2000);}catch(PortInUseExceptione){}try{inputStream=serialPort.getInputStream();}catch(IOExceptione){}try{serialPort.addEventListener(this);}catch(TooManyListenersExceptione){}try{outputStream=serialPort.getOutputStream();}catch(IOExceptione){}serialPort.notifyOnDataAvailable(true);try{serialPort.setSerialPortParams(9600,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);}catch(UnsupportedCommOperationExceptione){}try{outputStream.write(messageString);}catch(IOExceptione){}try{outputStream.write(messageString);}catch(IOExceptione){}readThread=newThread(this);readThread.start();}}}}publicvoidrun(){try{Thread.sleep(20000);}catch(InterruptedExceptione){}}publicvoidserialEvent(SerialPortEventevent){switch(event.getEventType()){caseSerialPortEvent.BI:System.out.print("通讯中断");caseSerialPortEvent.OE:System.out.print("溢位错误");caseSerialPortEvent.FE:System.out.print("帧错误");caseSerialPortEvent.PE:System.out.print("奇偶校验错误");caseSerialPortEvent.CD:System.out.print("载波错误");caseSerialPortEvent.CTS:System.out.print("清除发送");caseSerialPortEvent.DSR:System.out.print("数据设备准备好");caseSerialPortEvent.RI:System.out.print("振铃指示");caseSerialPortEvent.OUTPUT_BUFFER_EMPTY:System.out.print("输出缓冲区已清空");break;caseSerialPortEvent.DATA_AVAILABLE:System.out.print("有数据到达");readBuffer=newbyte[11];try{while(inputStream.available()>0){RX_numBytes=inputStream.read(readBuffer);System.out.println("接收计数器:"+RX_numBytes);}}catch(IOExceptione){}Stringstr=newString();for(inti=0;i<RX_numBytes;i++){str+=readBuffer[i];}//jlabel_txd.setText("接收到的数据为:"+str);System.out.println("接收到的数据为:"+str.toString());intiii=(readBuffer[0]&256);System.out.println("接收到的数据为:"+iii);break;}}}

时间: 2024-10-28 15:53:42

java 怎么在本包中实时处理其他包中监听器处理后的数据的相关文章

java Map容器怎么定量输出,即当容器到达一定量后输出数据到文件

问题描述 java Map容器怎么定量输出,即当容器到达一定量后输出数据到文件 由于放进Map容器数据量很大,一次性放入的话会导致堆溢出,假如有1010万条记录,如何限制Map的输出记录数,当Map里存放有100万条记录时就输出到文件,依此类推,第11次把最后剩余的10万条也输出到文件. 解决方案 map本身似乎没有这种功能,它就一个容器,怎么会考虑你这特殊的需求.你自己用代码实现吧.内存溢出的话,你可以试试给虚拟机加一下参数,指定最小内存.另外你那个功能的实现我觉得用map实现不见得很好.可以

在PB窗体中插入数据显示“插入成功”但查询后没有数据

问题描述 在PB窗体中插入数据显示"插入成功"但查询后没有数据 string r_dept_code, r_date1,r_date2,r_sp_code dec r_amount1,r_amount2,r_amount3 integer r_row,r_rowcount r_row=dw_1.getrow() r_rowcount=dw_1.rowcount() for r_row=1 to r_rowcount r_dept_code= dw_1.getitemstring(r_r

请问java中类库跟包的区别

问题描述 请问java中类库跟包的区别 请问类库跟包的区别是什么? 解决方案 类库包含很多个包 解决方案二: 库通常是一个组功能的集合,像Spring就是一个类库,可以理解为一个工程:而包是类的容器,用于分隔类名空间,是一个工程下的一部分. 解决方案三: 你只需要知道类库包含包就可以了 解决方案四: 类库字面意思就是类的集合,类库不等于框架,Framework 是比类库更高一级的概念.类库是一个综合性的面向对象的可重用类型集合,这些类型包括:接口.抽象类和具体类.类库可以单独从第三方软件商获得.

源码-请教关于java中jxl jar包原理

问题描述 请教关于java中jxl jar包原理 最近使用jxl操作excel,对其中源码有些疑问,表示看不懂,请问哪位大神指导源码中的Java代码是怎么操作Excel的? 解决方案 用pio吧,jxl不支持2010+的office文件 解决方案二: 楼主看看这些java书籍对你有没有用 http://download.csdn.net/album/detail/1191

jar包问题-Java中的Jar包问题。。。

问题描述 Java中的Jar包问题... 如果用Java写的代码不是那种图形界面导出后就点不开....是不是哪里错了 解决方案 你说的是jar包用批处理的方式运行吗?

深入解读Java代码组织中的package包结构_java

如果我们在Class对象上调用getPackage方法,就可以得到描述该类所在包的Package对象(Package类是在java.lang中定义的).我们也可以用包名通过调用静态方法getPackage或者调用静态方法getPackages(该方法返回由系统中所有已知包构成的数组)来获得Package对象.getName方法可以返回包的全名. Package对象的使用与其他反射类型完全不同,即我们不能在运行时创建或操纵包.我们可以使用Package对象来获取有关包的信息,诸如包的用途.谁创建了

Java中的Atomic包使用指南

引言 Java从JDK1.5开始提供了java.util.concurrent.atomic包,方便程序员在多线程环境下,无锁的进行原子操作.原子变量的底层使用了处理器提供的原子指令,但是不同的CPU架构可能提供的原子指令不一样,也有可能需要某种形式的内部锁,所以该方法不能绝对保证线程不被阻塞. Atomic包介绍 在Atomic包里一共有12个类,四种原子更新方式,分别是原子更新基本类型,原子更新数组,原子更新引用和原子更新字段.Atomic包里的类基本都是使用Unsafe实现的包装类. 原子

java采集网页信息,并获取到所需要的信息存入数据库中对应的字段中去 (可以自动创建表头)

问题描述 java采集网页信息,并获取到所需要的信息存入数据库中对应的字段中去 (可以自动创建表头) "java采集网页信息,并获取到所需要的信息存入数据库中对应的字段中去 "创建好数据库的情况下可以插入对应数据了,现在我想实现自动创建表头,请问如何实现?请各位大大支招^_^ 解决方案 用正则表达式http://www.cnblogs.com/longwu/archive/2011/12/24/2300110.html 解决方案二: 没有你想象中的这么智能,要采集什么网页信息,入到什么

jar包导入-关于在android中导入jar包

问题描述 关于在android中导入jar包 1,右键工程, Build path, java build path, 2,选择libraries在右边的按钮中点击"Add Library" 3,选择"User library",点击"下一步" 4,点击"User librarys"按钮在出现的界面中点击"New.."按钮 在弹出的界面中随便起一个名字,点击"确定" 5,点击"