본문 바로가기
자바

자바 시리얼 통신 ( JSSC 라이브러리) 하기!! - 그리고 통신 출력시 깨짐현상 해결!

by 처리2 2020. 8. 4.
반응형

 

 

간단하게 소스만 보여드릴께여

 

public class SerialConn {
	public static void main(String[] args) throws Exception {
		String[] portNames = SerialPortList.getPortNames();
		for(int i=0; i< portNames.length; i++) {
			System.out.println(portNames[i]);
		}
		SerialPort serialPort = new SerialPort("COM7");
		serialPort.openPort();
		serialPort.setParams(SerialPort.BAUDRATE_19200, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
		new ReadThread(serialPort).start();
	}
}


class ReadThread extends Thread{
	SerialPort serial;
	String temp ="";
	boolean check = false;
	int cnt = 0;
	
	ReadThread(SerialPort serial){
		this.serial = serial;
	}
	
	public void run() {
		try {
			System.err.println("");
			
			while(true) {
				byte[] read = serial.readBytes(1);
				if(read != null && read.length > 0 ) {					
					String val = byteArrayToHex(read);
					System.out.println(val);
				}
			}
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
    public static String byteArrayToHex(byte[] byteArray) {
		  if (byteArray == null || byteArray.length == 0) {
		    return null;
		  }
		  StringBuilder stringBuffer = new StringBuilder(byteArray.length * 2);
		  String hexNumber;
		  for (byte aBa : byteArray) {
		    hexNumber = "0" + Integer.toHexString(0xff & aBa);
		    
		   stringBuffer.append(hexNumber.substring(hexNumber.length() - 2));
		   //stringBuffer.append(hexNumber);
		  }
		  return stringBuffer.toString();
		}
}

시리얼 통신으로 연결된 데이터를 1byte씩 불러온다.

 

그리고 바로 new String 으로 출력하면 아마 엄청 깨져서 보일것이다.

 

그래서 HexString 값으로 바꿔서 출력하면 잘 보인다.!!!!

 

ㅎㅎㅎㅎ

 

아! 참고로 jar 파일을 리눅스 환경에서 사용하려면 

SerialPort serialPort = new SerialPort("COM7");

이부분 안에 값을 바꿔줘야 한다. 

 

SerialPort serialPort = new SerialPort("/dev/USB0");

 

이런식으로~

하세욥

반응형

댓글