# include st dio . h ><
#include
#include
#include
#include
#include
#include
#include
#include
#include
# de fine 포 트 50 2
192.168.0.100 #define SERVER_IP "
# define DE V ICE _ ID 1
# de fine BU FF ER _ S IZ E 10 24
int main () {
TCP 연결 만들기
int so ck f d ;
struct so ck add r _ in server _ add r ;
so ck f d = so cket (AF _ IN ET , SO CK _ ST RE AM , 0);
if (so ck f d == - 1) {
print f (" 소 켓 을 생성 하지 못했습니다 : % s \ n ", str er ror (err no));
1 을 반환 합니다 ;
}
server _ add r . sin _ family = AF _ IN ET ;
server _ add r . sin _ port = ht ons (P OR T)
server _ add r . sin _ add r . s _ add r = in et _ add r (S ER VER _ IP);
if (connect(sockfd, (struct sockaddr *)
print f (" 서 버 에 연결 할 수 없습니다 : % s \ n ", str er ror (err no));
close (so ck f d);
1 을 반환 합니다 ;
}
print f ( " C onne cted to the server success fully . \ n ")
/ / mod bus 요청 준비
서명 되지 않은 char 요청 [ BU FF ER _ S IZ E ];
un sig ned char 응답 [ BU FF ER _ S IZ E ];
int request _ length , response _ length ;
레 지 스터 읽기 및 유지
int register _ address = 0
int register _ count = 4
request _ length = mod bus _ build _ request (re quest , DE V ICE _ ID , MO DB US _ FC _ READ _ H OL D ING _ REG IS TER S , register _ address , register _ count);
Mod bus 요청
if (s end (so ck f d , request , request _ length , 0) == - 1) {
print f (" Re quest 를 보내 지 못했습니다 : % s \ n ", str er ror (err no));
close (so ck f d);
1 을 반환 합니다 ;
}
print f (" 요청 이 성공적으로 전송 되었습니다 . \ n ")
/ / Rece ive mod버스 응답
response _ length = rec v (so ck f d , response , BU FF ER _ S IZ E , 0);
if (res ponse _ length == - 1) {
print f (" 응 답 을 수신 하지 못했습니다 : % s \ n ", str er ror (err no));
close (so ck f d);
1 을 반환 합니다 ;
}
print f ( " 응 답 을 성공적으로 받았습니다 . \ n ")
Mod bus 응답 을 분석 합니다 .
int register _ value = mod bus _ get _ response _ value (res ponse , response _ length)
print f (" Reg ister 값 : % d \ n ", register _ value);
TCP 연결 종료
close (so ck f d);
0 을 반환 합니다 ;
}
위의 예 제 코 드는 mod bus 프로토 콜 의 읽기 유지 레 지 스터 기능을 사용하여 TCP 연결 을 통해 요청을 보내고 응답 을 수신 하고 분석 한 다음 TCP 연결 을 닫 습니다 .코드 에서 SER VER _ IP 및 DE V ICE _ ID 와 같은 매 개 변 수 뿐만 아니라 읽 은 레 지 스터 주소 및 수 를 수정 할 수 있습니다 .
# include st dio . h ><
#include
#include
#include
#include
#include
#include
#include
#include
#include
# de fine 포 트 50 2
192.168.0.100 #define SERVER_IP "
# define DE V ICE _ ID 1
# de fine BU FF ER _ S IZ E 10 24
int main () {
TCP 연결 만들기
int so ck f d ;
struct so ck add r _ in server _ add r ;
so ck f d = so cket (AF _ IN ET , SO CK _ ST RE AM , 0);
if (so ck f d == - 1) {
print f (" 소 켓 을 생성 하지 못했습니다 : % s \ n ", str er ror (err no));
1 을 반환 합니다 ;
}
server _ add r . sin _ family = AF _ IN ET ;
server _ add r . sin _ port = ht ons (P OR T)
server _ add r . sin _ add r . s _ add r = in et _ add r (S ER VER _ IP);
if (connect(sockfd, (struct sockaddr *)
print f (" 서 버 에 연결 할 수 없습니다 : % s \ n ", str er ror (err no));
close (so ck f d);
1 을 반환 합니다 ;
}
print f ( " Co서버 에 성공적으로 연결 했습니다 . \ n ")
/ / mod bus 요청 준비
서명 되지 않은 char 요청 [ BU FF ER _ S IZ E ];
un sig ned char 응답 [ BU FF ER _ S IZ E ];
int request _ length , response _ length ;
레 지 스터 읽기 및 유지
int register _ address = 0
int register _ count = 4
request _ length = mod bus _ build _ request (re quest , DE V ICE _ ID , MO DB US _ FC _ READ _ H OL D ING _ REG IS TER S , register _ address , register _ count);
Mod bus 요청
if (s end (so ck f d , request , request _ length , 0) == - 1) {
print f (" Re quest 를 보내 지 못했습니다 : % s \ n ", str er ror (err no));
close (so ck f d);
1 을 반환 합니다 ;
}
print f (" 요청 이 성공적으로 전송 되었습니다 . \ n ")
/ / mod bus 응답
response _ length = rec v (so ck f d , response , BU FF ER _ S IZ E , 0);
if (res ponse _ length == - 1) {
print f (" 응 답 을 수신 하지 못했습니다 : % s \ n ", str er ror (err no));
close (so ck f d);
1 을 반환 합니다 ;
}
print f ( " 응 답 을 성공적으로 받았습니다 . \ n ")
Mod bus 응답 을 분석 합니다 .
int register _ value = mod bus _ get _ response _ value (res ponse , response _ length)
print f (" Reg ister 값 : % d \ n ", register _ value);
TCP 연결 종료
close (so ck f d);
0 을 반환 합니다 ;
}
Leave a Reply