java comm如何监听串口断开,或者有啥接口可以判断是不是连接状态
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java comm如何监听串口断开,或者有啥接口可以判断是不是连接状态相关的知识,希望对你有一定的参考价值。
java comm如何监听串口断开,或者有什么接口可以判断是否连接状态
参考技术A 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:
//commread();
break;
default:
break;
这就是串口的监听事件 通过eventtype判断 参考技术B 检测串口的RTS、CTS状态
~~
RXTX 开源组件,也不错,使用起来更方便 参考技术C 是java NIO还是什么?keepalived?追问
就是通过串口与设备对接后,拔掉数据线,程序里怎么去判断这个设备还在连接中
追答发送心跳指令,如果无回应说明未连接
追问向设备发送数据是不会有回应的,若断开io会阻塞住,comm包用的是BIO
追答BIO没有过,抱歉,不过应该和NIO差不多吧,一般就是心跳检测
追问跟io方式没关系,bio就是blocked io 即 传统io,向设备写数据是不知道是否成功的,设备不会给回应
追答这个和硬件相关吧,比较不太懂了,帮不了你了
本回答被提问者采纳C# 中的 Icompare 接口和 IComparable 接口有啥区别??
还有 Icompare<T> 接口和 IComparable<K,V> 接口有什么区别??
高手请多多指教,
谢谢!!
我还想问:
ICompare 可以实现一个类的不同属性之间的分类比较,而且IComparable也可以实现呀?
难道他们只是带的参数不同而已吗??
1、ICompare可以带两个参数,可以通过自己写enum或者switch等来实现一个类的不同属性之间的分类比较,对用户来说可以进行选择。它使用的是:IComparer.Compare
// IComparer impl.
int IComparer.Compare(object o1, object o2)
Car t1 = (Car)o1;
Car t2 = (Car)o2;
return String.Compare(t1.PetName, t2.PetName);
2、IComparable是system.collection 中默认的方法;使用CompareTo方法:
// IComparable implementation.
int IComparable.CompareTo(object o)
Car temp = (Car)o;
if(this.CarID > temp.CarID)
return 1;
if(this.CarID < temp.CarID)
return -1;
else
return 0;
3、但是在public class Car : IComparable时,sort方法只能是对一个Car属性进行排序(这是sort的默认方法,它有三个override方法),比如car有id和petName两个属性,此时只能选择一个来排序。而ICompare则可以通过写enum等代码来实现带参数的排序(参数为enum类型),参数指定了以id排序或者以petName排序。
不清楚为什么微软要写两个接口,干吗整合呢?继续学习它……
你看明白了吗?希望对你有帮助呀
以上是关于java comm如何监听串口断开,或者有啥接口可以判断是不是连接状态的主要内容,如果未能解决你的问题,请参考以下文章