「java串口调试」串口调试的基本方法

博主:adminadmin 2022-11-27 14:00:08 53

本篇文章给大家谈谈java串口调试,以及串口调试的基本方法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java如何向串口发送指令?

需要一个包 comm.jar

需要一个配置文件 javax.comm.properties (工程根目录)

(或者放在JDK里)

// 取得端口句柄

CommPortIdentifier id = CommPortIdentifier.getPortIdentifier(portName);

port = (SerialPort) id .open("SerialDemo", 30000);

port .setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);

port .notifyOnDataAvailable(true);

port .notifyOnBreakInterrupt(true);

port .enableReceiveTimeout(delayTime);

读取之类的自己写就行了,(port .getInputStream()),完事之后别忘了关掉端口,不然下次就不能用了,只能重启系统

配置文件里就一行:

Driver=com.sun.comm.Win32Driver

----------------------------------

你设个断点单步调试看一下原因,那个SerialBean是你自己写的,谁也不知道里面整啥了,单步调试就知道哪里错误。

抛出异常了Exception in thread "main" java.lang.NullPointerException

at serial.SerialBean.WritePort(SerialBean.java:114)

从这里看,是在SerialBean.java的114行(函数WritePort)的一个东西,它的值是null,所以报错了

JAVA RXTX 开发串口遇上串口被占用问题

别的线程占用,退出就好了。有可能你自己调试的java因为出错而没有退出,在任务管理器退出那个线程。

java实现串口通信代码

public static void process() {

try {

Enumeration portList = CommPortIdentifier.getPortIdentifiers();

while (portList.hasMoreElements())

{

CommPortIdentifier portId = (CommPortIdentifier) portList.nextElement();

if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL)//如果端口类型是串口则判断名称

{

if(portId.getName().equals("COM1")){//如果是COM1端口则退出循环

break;

}else{

portId=null;

}

}

}

SerialPort serialPort = (SerialPort)portId.open("Serial_Communication", 1000);//打开串口的超时时间为1000ms

serialPort.setSerialPortParams(9600,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);//设置串口速率为9600,数据位8位,停止位1们,奇偶校验无

InputStream in = serialPort.getInputStream();//得到输入流

OutputStream out = serialPort.getOutputStream();//得到输出流

//进行输入输出操作

//操作结束后

in.close();

out.close();

serialPort.close();//关闭串口

} catch (PortInUseException e) {

e.printStackTrace();

} catch (UnsupportedCommOperationException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

如何通过java程序通过DTU发送485命令

串口是数据透传接口,一般使用串口调试软件的默认 8n11模式就可以,高能的来了:第一点:modbus就是一次用串口连续发多个字节!!!!!就这么简单!!!!

如果想在深入一些,那我再告诉你,第二点:连续发出的多个字节是按顺序排好的就可以了

如果想要完成一个双向通信,那你还要再了解一点就是第三点:发多少个字节?字节顺序如何排列?

本篇只讲主站读,子站发,看明白之后,再点击我的用户名,查看主站写,子站接的经验

先说一下DTU RTU区别:modbus dtu是数字数据传输协议,gsm ,gps可以用,但是如果需要采集模拟量,比如我要询问gsm设备的电池电压,那就要用rtu,,他可以采集模拟量信息,其实对于自己做产品,你都用rtu也可以。也就是说就这点儿区别

知道了dtu rtu的区别,可以尝试分析和编写通信协议了,不需要了解太多,你只需要知道上面提到的第三点就可以了!

先说第三点,从机应该发多少数据给主机?答案是:主机请求N个寄存器,从站就发2N个字节(特别注意,一个寄存器是16位的,而且这个数据长度是不算报文头,不算crc,不算功能码的,下面有图说明)下面看一下真实的通信情况此处主机请求一个寄存器,主机发出10 03 00 00 00 02 c7 4a 注意数据高位在前,crc是低位在前

这是一条完整的从机正常相应命令

返回一个寄存器的数据

好了,通信协议,就这样的,你可以使用modscan和usb转串口设备测试一下

modscan设置如下

现在开始实测一下,先确定电脑至少有两个串口,一个串口作为modscan的发送,一个串口用串口调试助手发数据

波特率都一样就可以,其他默认

然后modscan 点击连接后,自动下发数据

串口调试软件,收到数据后,点一下发送就可以了,可以观看到modscan已经成功收到并显示数据了

END

经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士

java中的串口通信,使用vspd 虚拟串口如何实现?

vspd 一次 虚拟2个串口,一个 读,一个发

让你的 程序 读 一个串口,另外一个串口 你就用 串口调试工具 发

vspd 是很好的工具!

呵呵

祝你顺利

java串口调试的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于串口调试的基本方法、java串口调试的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-27,除非注明,否则均为首码项目网原创文章,转载请注明出处。