링크 ux 에서 TCP 와 RTU 데이터 전송 프로그램
linux TCP RTU
#include
#include
#include
#include
#include
#include "modbus.h"
enum {
TCP,
RTU
};
int main(int argc, char *argv[])
{
int socket;
modbus_t *ctx;
modbus_mapping_t *mb_mapping;
int rc;
int use_backend;
/* TCP */
if (argc > 1) {
if (strcmp(argv[1], "tcp") == 0) {
use_backend = TCP;
} else if (strcmp(argv[1], "rtu") == 0) {
use_backend = RTU;
} else {
printf("Usage:
%s [tcp|rtu] - Modbus client to measure data bandwith
", argv[0]);
exit(1);
}
} else {
/* By default */
use_backend = TCP;
}
if (use_backend == TCP) {
ctx = modbus_new_tcp("127.0.0.1", 1502);
socket = modbus_tcp_listen(ctx, 1);
modbus_tcp_accept(ctx, &socket);
} else {
ctx = modbus_new_rtu("/dev/ttySAC3", 19200, 'N', 8, 1);
modbus_set_slave(ctx, 1);
modbus_connect(ctx);
}
mb_mapping = modbus_mapping_new(MODBUS_MAX_READ_BITS, 0,
MODBUS_MAX_READ_REGISTERS, 0);
if (mb_mapping == NULL) {
fprintf(stderr, "Failed to allocate the mapping: %s
",
modbus_strerror(errno));
modbus_free(ctx);
return -1;
}
for(;;) {
uint8_t query[MODBUS_TCP_MAX_ADU_LENGTH];
rc = modbus_receive(ctx, query);
if (rc >= 0) {
modbus_reply(ctx, query, rc, mb_mapping);
} else {
/* Connection closed by the client or server */
break;
}
}
printf("Quit the loop: %s
", modbus_strerror(errno));
modbus_mapping_free(mb_mapping);
close(socket);
modbus_free(ctx);
return 0;
}
:arm-linux-gcc -o test test.c -L. lmodbus, modbus poll, ; ./test rtu ./test tcp, modbus poll。
:
000059-Rx:01 03 28 00 0C 00 00 00 00 00 00 00 00 00 00 00 0C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0C 16
000072-Tx:01 03 00 00 00 14 45 C5
000073-Rx:01 03 28 00 0C 00 00 00 00 00 00 00 00 00 00 00 0C 00 00 00 00 00 0D 00 00 00 00 00 0D 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1D 0E
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
용감한 바로 가기 및 우분투 응용 프로그램안녕하세요 여러분, 이 기사에서는 모든 사이트에서 pwa를 생성하고 실행기 응용 프로그램으로 추가하는 방법을 설명하고 싶습니다. 일부 웹사이트는 PWA로 설치를 허용하지 않지만 유사한 애플리케이션을 원합니다. 1. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.