반응형
와... 님들 혹시 저처럼 자바 소스로 TCP 모드버스 통신을 하고 있는 분 계신가요?
진짜... 이거는 한.. 3일 걸렸네요
뭐 긴말할거 있습니까? 바로 참깨빵 위에 순쇠고기 패티 두 장 특별한 소스 보여드릴께요
앗앗 그전에 라이브러리를 추가 해줘야 합니다.
참고로 저는 lib 폴더에 그냥 넣었어여 ㅎㅎ
package com.tx.code;
import java.util.Arrays;
import de.re.easymodbus.modbusclient.*;
public class TcpCode {
public static void main(String[] args)
{
ModbusClient modbusClient = new ModbusClient("ip",port);
try
{
modbusClient.Connect();
//address(해당 주소값) , 그 뒤 데이터 몇개를 뽑을지
int[] soc = modbusClient.ReadHoldingRegisters(1010,1);
System.out.println(soc[0]);
System.out.println(Arrays.toString(soc));
int[] sum_power = modbusClient.ReadHoldingRegisters(1016,2);
System.out.println(Arrays.toString(sum_power));
String hex_pw = "";
for(int i : sum_power) {
hex_pw += Integer.toHexString( i );
System.out.println(hex_pw);
}
System.out.println(Integer.parseInt(hex_pw,16)*0.001);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
자 보시면 SOC 부분을 먼저 보시면 주소 1010의 데이터 첫번째것을 가지고 온다는 의미 입니다.
출력되는 값은 int입니다. 근데 님들 byte가 4개 짜리도 있잖아요?
자 sum_power값을 봅시다 주소 1016의 데이터는 4byte짜리이기 때문에 일단 리스트 1개당 2byte씩 계산이 되기 때문
에 두개의 데이터를 뽑아주시고 int값이기에 hex 값으로 변경을 해주고
hex값을 붙여준 뒤에 int형으로 바꿔준 모습입니다.
꼭 성공하시길 바라며.. 저는 20000
반응형
'자바' 카테고리의 다른 글
구글 번역 API 사용하기 - java (0) | 2021.05.11 |
---|---|
javascript - java 간 RSA 를 이용해서 암호화 복호화 하기 (0) | 2021.04.26 |
Datepicker에 시간 추가 (0) | 2021.03.19 |
jar 파일 만들어서 서버에서 실행시키기 (0) | 2021.02.02 |
라즈베리파이 RXTX 라이브러리 적용 방법 (0) | 2021.01.27 |
댓글