1、在网上下载RXTXcomm.jar、rxtxParallel.dll、rxtxSerial.dll,有32位和64位的版本
2、把rxtxParallel.dll、rxtxSerial.dll拷贝到:C:\WINDOWS\system32下。
3、把RXTXcomm.jar、rxtxParallel.dll、rxtxSerial.dll拷贝到 jdk1.8.0_131\jre\lib\ext下;
如:C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext
4、替换采样程序目录下的libs文件夹下的 RXTXcomm.jar
//打开串口 根据串口名、波特率
private static void openSerialPort()
{
//读取可用端口
commList = findPort();
// 检查是否有可用串口,有则加入选项中
if (commList == null || commList.size() < 1) {
System.out.println("没有搜索到有效串口!");
WriteLog("没有搜索到有效串口", "", "");
} else {
String CanUserCom = "";
for (String s : commList) {
CanUserCom += " " + s;
}
WriteLog("搜索到有效串口:" + CanUserCom, "", "");
WriteLog("连接电子秤时请确认波特率、数据位、停止位、奇偶校验等信息是否匹配!", "", "");
}
// 检查串口名称是否获取正确
if (Common.CommName == null || Common.CommName.equals(""))
{
WriteLog("串口设置为空,请检查配置","","");
System.out.println("串口设置为空,请检查配置!");
}
else
{
WriteLog(Common.CommName + "打开串口中、波特率:"+Common.BaudRate+"、数据位:"+Common.DataBits+"、停止为:"+Common.StopBits+"、奇偶校验:"+Common.CheckChar, "", "");
String commName = Common.CommName;//串口
int baudrate = Integer.valueOf(Common.BaudRate); //波特率
int DataBits = Integer.valueOf(Common.DataBits); //数据位、
int StopBits = Integer.valueOf(Common.StopBits); //停止为
//奇偶校验位数据转换
//无:0、奇数:1、偶数:2
int ParityBits = 0; //奇偶校验
switch (Common.ParityBits)
{
case "无":
ParityBits = 0;
break;
case "奇":
ParityBits = 1;
break;
case "偶":
ParityBits = 2;
break;
}
try
{
serialport = openPort(commName, baudrate,DataBits,StopBits,ParityBits);
if (serialport != null)
{
WriteLog(commName + "串口已打开", "", "");
System.out.println("串口已打开" + "\r\n");
WriteFromPort(serialport);
}
} catch (SerialPortParameterFailure e) {
e.printStackTrace();
} catch (NotASerialPort e) {
e.printStackTrace();
} catch (NoSuchPort e) {
e.printStackTrace();
}
catch (PortInUse e)
{
e.printStackTrace();
System.out.println("串口已被占用!");
WriteLog(commName+"串口已被占用","","");
JOptionPane.showMessageDialog(null, "打开失败!串口已被占用或者软件已打开。", "提示", JOptionPane.ERROR_MESSAGE);
logger.error("串口已被占用:" + e.getMessage(), e);
}
}
try {
addListener(serialport, new SerialListener());