java 如何向串口发送指令
现在我有个温度采集设备,通过RS232串口来连接,采集温度数据需要发送十六进制采集命令“EB9001552F”eclipse里怎么来实现啊?Javax.comm串口编程不...
现在我有个温度采集设备,通过RS232串口来连接,采集温度数据需要发送十六进制采集命令“EB 90 01 55 2F”eclipse里怎么来实现啊?
Javax.comm串口编程不能实现吗?
具体点可以吗?直接向串口写数据吗?
//SerialBean是本类库与其他应用程序的接口。该类库中定义了SerialBean的构造方法以及初始化串口,从串口读取数据,往串口写入数据以及关闭串口的函数。
//public int Initialize()本函数初始化所指定的串口并返回初始化结果。如果初始化成功返回1,否则返回-1。初始化的结果是该串口被SerialBean独占性使用,其参数被设置为9600, N, 8, 1。如果串口被成功初始化,则打开一个进程读取从串口传入的数据并将其保存在缓冲区中。
public void WritePort(String Msg)
本函数向串口发送一个字符串。
SerialBean SB = new SerialBean(4); //构造一个指向特定串口的SerialBean,这里是COM4
SB.Initialize();
SB.WritePort("EB 90 01 55 2F");
抛出异常了Exception in thread "main" java.lang.NullPointerException
at serial.SerialBean.WritePort(SerialBean.java:114)
at api.SerialExample.main(SerialExample.java:24) 展开
Javax.comm串口编程不能实现吗?
具体点可以吗?直接向串口写数据吗?
//SerialBean是本类库与其他应用程序的接口。该类库中定义了SerialBean的构造方法以及初始化串口,从串口读取数据,往串口写入数据以及关闭串口的函数。
//public int Initialize()本函数初始化所指定的串口并返回初始化结果。如果初始化成功返回1,否则返回-1。初始化的结果是该串口被SerialBean独占性使用,其参数被设置为9600, N, 8, 1。如果串口被成功初始化,则打开一个进程读取从串口传入的数据并将其保存在缓冲区中。
public void WritePort(String Msg)
本函数向串口发送一个字符串。
SerialBean SB = new SerialBean(4); //构造一个指向特定串口的SerialBean,这里是COM4
SB.Initialize();
SB.WritePort("EB 90 01 55 2F");
抛出异常了Exception in thread "main" java.lang.NullPointerException
at serial.SerialBean.WritePort(SerialBean.java:114)
at api.SerialExample.main(SerialExample.java:24) 展开
3个回答
推荐于2018-10-08
展开全部
需要一个包 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,所以报错了
需要一个配置文件 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,所以报错了
推荐于2016-02-01 · 知道合伙人数码行家
关注
展开全部
举个例子:
byte[] bt = new byte{……}; ???如何定义
outputStream = serialPort.getOutputStream();
outputStream.write(bt);
代码如下:
byte[] bt = new byte{02,04,00,00,00,02,71,F8};
这样试试看看,就当成是整数数组定义 。
byte[] bt = new byte{……}; ???如何定义
outputStream = serialPort.getOutputStream();
outputStream.write(bt);
代码如下:
byte[] bt = new byte{02,04,00,00,00,02,71,F8};
这样试试看看,就当成是整数数组定义 。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个好像要用嵌入式java才可以的吧。
eclipse只开发 j2se或j2ee或j2me..
j2me应该可以吧。还有种java card..
eclipse只开发 j2se或j2ee或j2me..
j2me应该可以吧。还有种java card..
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |