#mfc

AureoleAureole· 2년

질문시리얼 통신 데이터 수신시 즉각적인 처리

안녕하세요. 저는 대학교 4학년 프로그래밍 비 전공자이며 현재 시리얼 통신을 이용하여 2개의 기계 간의 통신을 이어주는 프로그램을 만들고 있습니다. 시리얼 통신 프로그램은 mfc 다이얼로그 기반으로 작성하고 있습니다. 현재 기계 A,B 를 시리얼 통신으로 이어 A에서 작업 시작이라는 명령을 내리면 B의 기계가 기능을 수행하며 작업을 시작합니다. 하나의 작업이 끝나기 전에 비상정지를 할 수 있어야 하기에 A에서 정지 명령을 내리게 됩니다. 명령의 데이터 값은 compare() 함수를 통해 비교하여 실행합니다. 다만 A에서 시작 명령을 내린 후 B의 기계가 작업을 시작하고 끝나기 전까지 다른 명령을 듣지 않습니다. 작업 종료 명령을 내려도 작업이 끝나고 난 후 정지하라는 명령 데이터가 수신 되게 됩니다. 이게 수신은 하였지만 수신 버퍼에 저장되어 작업이 끝나기 전까지 대기하다 작업이 끝나면 버퍼에 있는 데이터를 읽어오게 되는 건지 아니면 이 작업을 하는 동안 리소스를 계속 잡고 있어서 (무한루프) 그동안 데이터를 수신하지 못하는 건지, 작업 스레드의 sleep_for(100ms) 지연 시간이 짧아서 인지 갈피를 못 찾겠습니다... 시리얼 통신 보더레이트 속도는 115200을 사용하고 있습니다. 만약 데이터 수신 버퍼에 저장되는 내용을 바로 처리하지 못하는 거라면 즉각적으로 처리할 수 있는 방법이 있을까요? 시리얼 통신 예제는 http://forum.falinux.com/zbxe/index.php?_filter=search&mid=lecture_tip&search_target=title&search_keyword=mfc&document_srl=571672 님의 것을 참고하여 만들었습니다.
424
1
0
윈비
윈비·2023-08-28
시리얼 통신을 수행하면서 A에서 B로 정지 명령을 내렸을 때, B가 바로 동작하지 않는 문제가 발생하고 있다고 하셨는데요. 먼저, 데이터가 B의 수신 버퍼에 저장되어 있다가 나중에 처리되는 것인지, 아니면 B가 작업을 하는 동안 명령을 수신하지 않는 것인지 확인하기 위해서 다음과 같은 몇가지 방안은 다음과 같습니다. Buffer Check B쪽에서 수신 ...