社区
Java
帖子详情
谁能给个监视串口触发一个事件的框架??????在线等待!!!!!!!!1
xm_44
2003-07-28 03:02:09
请问:
我要实现监视一个串口的值,当检测到位某个值(比如1)时,触发一个事件event(我自己的事件),程序基本框架是如何的?
...全文
69
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;
}
}
}
串口
通信
监视
软件设计与实现
串口
通信是一种将数据逐位顺序传输的通信方式,广泛应用于嵌入式系统与外部设备之间的数据交互。其核心优势在于结构简单、布线少、通信距离远,适合工业环境下的稳定通信。与并行通信相比,
串口
通信通过单一数据线逐位传输,降低了硬件复杂度,但牺牲了传输速度。典型
串口
通信接口包括RS-232、RS-485和TTL电平标准,它们在电压电平和通信距离上各有差异。数据帧是
串口
通信的基本单位,通常由起始位、数据位、校验位和停止位组成。下一章将深入讲解这些参数的配置方法与实际应用技巧。
C#编写
一个
简单
串口
通讯上位机
一:上位机的作用 1、可以模拟上位机进行modbus协议主机的使用。 2、可以调试具有modbus协议的所有设备 3、可以
在线
设置各种通讯速率、奇偶校验、通讯口而无需重新启动程序。 4、支持 03 06 16 几条常用的命令。 5、可以自动显示接收到的数据, 6、是工程技术人员
监视
、调试
串口
程序的必备工具 二:参数配置
串口
基础参数包括:波特率,数据位,停止位,校验位。 1. 波特率:
串口
通讯速率...
Qt
串口
类QSerialPort实现机制
在 Qt 中,
串口
通信主要是通过类实现的。这个类属于模块,提供了跨平台对
串口
(COM 口、串行口、USB 虚拟
串口
等)的访问。
实现
串口
编程的三种方法
在实验室和工业应用中,
串口
是常用的计算机与外部串行设备之间的数据传输通道,由于串行通信方便易行,所以应用广泛。依据不同的条件实现对
串口
的灵活编程控制是我们所需要的。 在光学镜片镀膜工艺中,用单片机进行多路温度数据采集控制,采集结果以串行方式进入主机,每隔10S向主机发送一次采...
51单片机
串口
通讯Protues与keil联合调试
由于传统的51单片机
在线
调试仿真器占用了51单片机的UART口,导致
在线
仿真器无法实现对
串口
通信程序的debug的调试功能。本文介绍了Keil C51和Proteus联合调试的方式和Keil C51的simulation调试功能实现
串口
通信程序的debug调试两种不同的方法,解决了传统的51单片机
在线
调试仿真器(PZ-51)无法对
串口
通信进行debug调试的问题。
Java
51,407
社区成员
86,108
社区内容
发帖
与我相关
我的任务
Java
Java相关技术讨论
复制链接
扫一扫
分享
社区描述
Java相关技术讨论
java
spring boot
spring cloud
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章