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 ( e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
❷ java串口通信中怎样以十六进制数发送
做串口通讯的时候基本都是通过io流读取、输出。那么在java开发中发送数据的时候使用OutputStream,而其write()的参数是字节数组、int整形。如果使用字节数组发送的时候,通常可以直接写成out.write("1234".getBytes())。这样一来单片机读到的数据则是31 32 33 34。但是在串口发送的时候先把16进制字符串转化为byte数组在发送出来,则是发送什么读取到的就是什么。使用:out.write(HexString2Bytes("1234"));那么读取到的还是1234。16进制字符串转化为byte数组的方法为:
public static byte[] HexString2Bytes(String src) {
if (null == src || 0 == src.length()) {
return null;
}
byte[] ret = new byte[src.length() / 2];
byte[] tmp = src.getBytes();
for (int i = 0; i < (tmp.length / 2); i++) {
ret[i] = uniteBytes(tmp[i * 2], tmp[i * 2 + 1]);
}
return ret;
}
在用java做串口开发的时候建议使用开源的Rxtx做。效率、使用方法都要优。使用sun开源的comm个人觉得不是很便利。rxtx网上有开源实例。可以根据自己个需求进行加以修饰利用。
❸ 在java的web程序中怎么使用串口通讯
方法如下:
新建eclipse工程,添加comm.jar或者RXTXcomm.jar包。因为javacomm20-win32.zip包里有样例SimpleRead.java,可以通过这个例子测试串口是否正确。
接收数据正确后,根据传送接收双方的协议,采用CRC循环校验,根据传输的一方的校验函数判定是否是正确传输。
把正确结束的数据解析,查看自己指定的通讯规则,然后解析。
插入数据库,jdbc插入。
数据统计,定时统计每小时,每天,每月,每年的平均值,采用quartz服务来实现。
建立web工程,采用hibernate3,spring3,dwr技术把数据库数据动态显示,图表采用jfreechart,以及AJAX的运用
❹ java实现串口通信代码
在Java中实现串口通信涉及一系列步骤。首先,获取可用的串口列表,通过调用CommPortIdentifier.getPortIdentifiers()方法获取所有可用端口。接下来,遍历这些端口,检查每个端口的类型是否为串口。这里我们关注的是名为"COM1"的串口,因此如果发现此端口,将立即退出循环。对于其他串口,将忽略它们,设置portId为null。
一旦找到并确认了正确的串口,使用portId.open("Serial_Communication", 1000)方法以1000毫秒的超时时间打开串口。接着,通过调用setSerialPortParams方法,设置串口参数。具体参数包括波特率为9600,数据位为8位,停止位为1位,以及无奇偶校验。
打开串口后,可以通过serialPort.getInputStream()和serialPort.getOutputStream()分别获取串口的输入流和输出流。接下来,可以在此输入输出流上执行数据的读取和发送操作。
当通信操作完成后,需要关闭这些流和串口。具体操作包括关闭输入流in.close(),关闭输出流out.close(),以及最后关闭串口serialPort.close()。整个过程中,异常处理也非常重要,通过try-catch块来捕捉并处理可能出现的PortInUseException、和IOException等异常。
为了确保程序的健壮性和可靠性,合理地设置和处理这些异常是至关重要的。通过以上步骤,Java程序可以成功实现与串口设备的通信,从而进行数据的读取和发送。
