社区
Java
帖子详情
谁能给个监视串口触发一个事件的框架??????在线等待!!!!!!!!1
xm_44
2003-07-28 03:02:09
请问:
我要实现监视一个串口的值,当检测到位某个值(比如1)时,触发一个事件event(我自己的事件),程序基本框架是如何的?
...全文
65
4
打赏
收藏
谁能给个监视串口触发一个事件的框架??????在线等待!!!!!!!!1
请问: 我要实现监视一个串口的值,当检测到位某个值(比如1)时,触发一个事件event(我自己的事件),程序基本框架是如何的?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xm_44
2003-07-29
打赏
举报
回复
我主要是想知道如何用事件机制来实现串口监听,然后触发事件,对于读串口假设我已经用一个函数实现了,比如int getserialport(){...},通过这个函数我可以得到我想要的串口的值,当这个值为1时我要触发一个事件,这个过程我如何用事件机制来实现?
多谢!!!!
sinboy
2003-07-29
打赏
举报
回复
public class SerialPortHandle extends Thread implements SerialPortEventListener {
/**
* 增加串口侦听
* @param sPort 要侦听的串口号
* @throw TooManyListenerException 如果一个串口上有多于一个的侦听
* @throw IOException 在开辟读数据流时出错
*/
private void listenSerialPort(SerialPort sPort)
{
try{
br=new BufferedReader(new InputStreamReader(sPort.getInputStream()));
sPort.addEventListener(this);
sPort.notifyOnDataAvailable(true);//使发生的串口事件有效
}
catch(TooManyListenersException e){System.err.println(e.getMessage());}
catch(IOException e){System.err.println(e.getMessage());}
}
/**
* 处理侦听到的串口事件
* @param ev 串口事件
* @throw IOException 读写错误
*/
public synchronized void serialEvent(SerialPortEvent ev)
{
//如果有串口事件发生
if(ev.getEventType()==ev.DATA_AVAILABLE)
try{
while(true){
//在这里加入你的处理
respmsg=br.readLine();//在打开的读数据流中读一行数据
System.out.println("repmsg:"+respmsg);
}//while
}//try
catch(IOException e){
System.out.println(e.getMessage());}
}
}
beyondhuangjie
2003-07-29
打赏
举报
回复
留命!
huqp
2003-07-28
打赏
举报
回复
请看http://java.sun.com/products/javacomm/javadocs/API_users_guide.html
import java.io.*;
import java.util.*;
import javax.comm.*;
public class SimpleRead implements Runnable, SerialPortEventListener {
static CommPortIdentifier portId;
static Enumeration portList;
InputStream inputStream;
SerialPort serialPort;
Thread readThread;
/**
* Method declaration
*
*
* @param args
*
* @see
*/
public static void main(String[] args) {
boolean portFound = false;
String defaultPort = "/dev/term/a";
if (args.length > 0) {
defaultPort = args[0];
}
portList = CommPortIdentifier.getPortIdentifiers();
while (portList.hasMoreElements()) {
portId = (CommPortIdentifier) portList.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
if (portId.getName().equals(defaultPort)) {
System.out.println("Found port: "+defaultPort);
portFound = true;
SimpleRead reader = new SimpleRead();
}
}
}
if (!portFound) {
System.out.println("port " + defaultPort + " not found.");
}
}
/**
* Constructor declaration
*
*
* @see
*/
public SimpleRead() {
try {
serialPort = (SerialPort) portId.open("SimpleReadApp", 2000);
} catch (PortInUseException e) {}
try {
inputStream = serialPort.getInputStream();
} catch (IOException e) {}
try {
serialPort.addEventListener(this);
} catch (TooManyListenersException e) {}
serialPort.notifyOnDataAvailable(true);
try {
serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
} catch (UnsupportedCommOperationException e) {}
readThread = new Thread(this);
readThread.start();
}
/**
* Method declaration
*
*
* @see
*/
public void run() {
try {
Thread.sleep(20000);
} catch (InterruptedException e) {}
}
/**
* Method declaration
*
*
* @param event
*
* @see
*/
public void serialEvent(SerialPortEvent event) {
switch (event.getEventType()) {
case SerialPortEvent.BI:
case SerialPortEvent.OE:
case SerialPortEvent.FE:
case SerialPortEvent.PE:
case SerialPortEvent.CD:
case SerialPortEvent.CTS:
case SerialPortEvent.DSR:
case SerialPortEvent.RI:
case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
break;
case SerialPortEvent.DATA_AVAILABLE:
byte[] readBuffer = new byte[20];
try {
while (inputStream.available() > 0) {
int numBytes = inputStream.read(readBuffer);
}
System.out.print(new String(readBuffer));
} catch (IOException e) {}
break;
}
}
}
串口
通信
监视
软件设计与实现
本文介绍了
串口
通信
监视
软件的设计与实现过程,涵盖
串口
参数配置、实时数据捕获与显示、数据格式转换与解析、数据过滤与
触发
机制、日志记录与数据导出等核心技术。通过Python和C++示例,阐述了多平台配置、缓冲区管理、界面设计、性能优化等关键实现方法,适用于工业控制、嵌入式系统和设备调试等场景。
C#编写
一个
简单
串口
通讯上位机
本文详细介绍了上位机的功能及其在Modbus协议调试中的应用,探讨了C#编程中的命名空间、类、属性、方法及
事件
的概念,并分享了在上位机项目开发中常见的问题及解决方案。
Qt
串口
类QSerialPort实现机制
本文介绍了Qt中
串口
通信通过QSerialPort类实现的机制。涵盖基本类的作用与所属模块,核心机制包括
串口
打开、关闭及参数设置,数据读写有异步和同步两种方式,还介绍了
串口
枚举。此外,说明了
串口
在线
程中的应用及接收数据的容错处理。
实现
串口
编程的三种方法
本文详细介绍在VC++6.0环境下,实现串行通信的三种方法:使用MSComm控件、自定义
串口
通信类和多线程
串口
通信。涵盖
串口
编程的基础知识,包括
串口
读写操作、
事件
驱动和多线程同步。
51单片机
串口
通讯Protues与keil联合调试
本文介绍了通过Keil C51和Proteus联合调试及Keil C51的simulation调试功能,解决传统51单片机
在线
调试仿真器无法对
串口
通信进行debug调试的问题。还指出Proteus8.13不能仿真
串口
中断的解决办法,以及KEIL Proteus联调的工具、步骤和联调配置方法。
Java
51,408
社区成员
86,098
社区内容
发帖
与我相关
我的任务
Java
Java相关技术讨论
复制链接
扫一扫
分享
社区描述
Java相关技术讨论
java
spring boot
spring cloud
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章