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也可以实现呀?
难道他们只是带的参数不同而已吗??

参考技术A 似乎MSDN上是不太推荐使用ICompare的。

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如何监听串口断开,或者有啥接口可以判断是不是连接状态的主要内容,如果未能解决你的问题,请参考以下文章

IDE 、 SATA 、串口 、并口 有啥区别

如何断开串口

CommMonitor监听串口数据的时候出现下面这个问题是怎么回事?有啥解决的办法?

java串口通讯环境配置

java可用与串口通信的一些库

UART和串口到底有啥区别?