한국어 English Chinese Russian

질문&답변 게시판 / 기술지원



SSL 암호화로 사용자의 입력정보가 보호되고 있습니다.
No. 3211 Re: Re: Re: 안녕하세요 p4m-440g질문드립니다 2025-03-13


안녕하세요,
솔내시스템 기술지원팀입니다. 문의해 주셔서 감사합니다.


고정 IP가 설정된 후 해당 IP 연결 상태를 확인하려면, PHPoC의 시스템 함수를 사용할 수 있습니다.
이 함수는 이더넷 링크 상태와 IP4 주소 획득 여부를 확인하는 명령어를 제공합니다.

[고정 IP 연결 상태 확인 방법]
Ethernet 링크 및 IP4 주소 획득 상태를 확인하는 시스템 명령어는 다음과 같습니다.

- 명령어
> "net if get state"

- 응답 값
> "0" - Link Down (이더넷 연결 끊김)
> "1" - Link Up (이더넷 연결됨, 그러나 IP 미획득)
> "2" - IP4 Address Acquired (IP4 주소 획득 완료)

고정 IP가 설정된 경우, 이더넷이 연결되면 곧바로 "2" 상태가 되어야 합니다.
따라서, 명령어 실행 결과가 "2"가 아니면, "고정 IP가 끊긴 상태"로 판단할 수 있습니다.
아래 예제 코드를 참고해주세요.

<?php

while((int)system("net if get state") != 2)
{
printf("Local IPv4 is NOT ready");
sleep(5);
}

system("php task0_udp.php");

?>


위 코드에서는 네트워크 상태를 주기적으로 확인하여 IP가 유효하지 않으면 메시지를 출력하고,
5초 후 다시 확인하도록 설정하였습니다.
이후 유효한 IP4 주소를 획득하면 메인 태스크(task0_udp.php)를 실행합니다.


도움이 되었기를 바라며, 추가 문의 사항이 있으시면 언제든지 연락 주시기 바랍니다.

감사합니다.
솔내시스템 기술지원팀



> emily wrote:
> ------------------------------------
> 모듈에서 고정ip로 설정을 하고 나서
그 ip가 끊겼을때
상태체크를 하는 부분이 있을까요??



> 솔내시스템(주) wrote:
> ------------------------------------
>

안녕하세요,

솔내시스템 기술지원팀입니다. 문의해 주셔서 감사합니다.


[P4M-440G에서 UDP 데이터를 UART로 전달하는 방법]
P4M-440G는 프로그래밍이 가능한 제품이므로, UDP 데이터를 UART(시리얼)로 전달하는 기능을 구현할 수 있습니다.
이를 위해 다음과 같은 설정이 필요합니다.
1. 프로그래밍 기능 활성화
UDP ↔ UART 통신을 위해 PHPoC 프로그래밍 기능을 활성화해야 합니다.
"프로그래밍 기능 활성화 가이드"를 참고하여 설정해 주세요.

2. ATC 및 MQTT PXM 모듈 비활성화
UART 데이터를 AT 명령어로 처리하는 ATC PXM 모듈은 기본적으로 활성화되어 있습니다.
이를 비활성화해야 사용자 프로그램에서 직접 UART를 제어할 수 있습니다.
또한, MQTT PXM 모듈도 함께 비활성화해야 합니다.
설정 방법:
phpoc.ini 파일에서 아래 4줄을 주석 처리(맨 앞에 ; 추가) 해주세요.
;pxm0_path = "/lib/p4x_atc_1.0*.poc"
;pxm0_load_options = "bootload"
;pxm1_path = "/lib/p4x_mqtt_1.0*.poc"
;pxm1_load_options = "bootload"

3. UDP ↔ UART 변환 코드 적용
아래 예제 코드를 사용하여 UDP 데이터를 UART로 변환하는 기능을 구현할 수 있습니다.
IP 주소와 포트 번호는 환경에 맞게 수정해서 사용하세요.
(init.php 파일)
<?php

system("php task0_udp.php");

?>


(task0_udp.php 파일 - UDP to Serial 예제)
<?php

if(_SERVER("REQUEST_METHOD"))
exit; // avoid php execution via http request

include_once "/lib/sd_340.php";

echo "PHPoC example : P4M-440G / convert UART to UDP
";

// UART 및 UDP 설정
uio_setup(0, 0, "out high");
uart_setup(0, 115200, "N81N");

$pid = pid_open("/mmap/udp0");
pid_bind($pid, "", 1470); // UDP 포트 바인딩
$peer_addr = "192.168.5.40"; // UDP 타겟 IP
$peer_port = 1470; // UDP 타겟 포트

$rwbuf = "";

while(1)
{
// UART → UDP 변환
$len = uart_read(0, $rwbuf);
if($len > 0)
pid_sendto($pid, $rwbuf, $len, 0, $peer_addr, $peer_port); // UDP 데이터 송신

// UDP → UART 변환
$len = pid_ioctl($pid, "get rxlen"); // UDP 수신 데이터 크기 확인
if($len > 0)
{
$len = pid_recvfrom($pid, $rwbuf, $len); // UDP 데이터 수신
if($len > 0)
uart_write(0, $rwbuf);
}
}

?>


[결론]
- P4M-440G는 UDP 데이터를 UART로 전달하는 기능을 지원하며, PHPoC 스크립트를 사용하여 구현 가능합니다.
- AT 명령어만으로는 UDP ↔ UART 변환이 불가능하므로, 프로그래밍 기능을 활성화하고 ATC/MQTT 모듈을 비활성화해야 합니다.
- 위 예제 코드를 참고하여 UDP 데이터를 UART로 전달하는 기능을 구현할 수 있습니다.


도움이 되었길 바라며 추가 문의사항이 있으시면 언제든지 연락 주시기 바랍니다.

감사합니다.
솔내시스템 기술지원팀



> emily wrote:
> ------------------------------------
> 스크립트를 통해 UDP와 UART(시리얼) 통신을 동시에 처리
UDP로 받은 데이터를 UART로 전달
하는 부분을 짤 수 있을까요???

글쓴이 솔내시스템(주) 업체명


NO Subject Name Date Read
3207 안녕하세요 p4m-440g질문드립니다 emily 2025-03-12 57
3208 Re: 안녕하세요 p4m-440g질문드립니다 솔내시스템(주) 2025-03-13 43
3210 Re: Re: 안녕하세요 p4m-440g질문드립니다 emily 2025-03-13 29
3211 Re: Re: Re: 안녕하세요 p4m-440g질문드립니다 솔내시스템(주) 2025-03-13 35