c언어 serial 통신 예제

직렬 포트읽기에서 읽기는 ReadFile() 함수에 의해 수행됩니다. dNoOFBytestoWrite는 직렬 포트에 기록할 총 바이트 수입니다. 여기서 는 sizeof() 연산자()를 사용하여 을 알아내고 있습니다. 나는 전에 그것을 시도하지 않았기 때문에 옥타브에서 fwrite 등을 사용하는 것에 대해 너무 확실하지 않다. 그러나 이번 학기에 MATLAB에서 프로그래밍을 다시 가르치고 있기 때문에 간단한 해결책이 있는지 확인하고 집에서 연습하고 싶다면 그 수업의 학생들이 옥타브를 설치하도록 권장합니다. 나는 주 중에 기회를 얻을 경우, 나는 옥타브를 설치하고 fwrite와 직렬 포트를 통해 몇 문자를 보내려고합니다. (hComm == INVALID_HANDLE_VALUE) printf(“직렬 포트를 여는 오류”); 기타 printf(“직렬 포트 열기 성공”); 이 코드는 내가 필요로하는 것과 정확히 비슷합니다 … 하지만. WIN7 명령 상자에서 위의 코드를 실행하려고하면 헤더 파일을 찾을 수 없습니다. WIN7 컴퓨터에서 실행하려면 컴파일러와 코드가 필요합니다.

WIN7 컴퓨터에서 직렬 포트 액세스에 대한 아이디어가 있습니까? 감사! 나는 다음 옥타브 내에서 시스템 명령으로 serial.exe를 실행하려고 할 수 있습니다,하지만 당신은 또는 누군가가 fprintf 또는 fwrite명령에서 작동하지 않는 이유를 알고 있는지 궁금하지만, fread는 수신에 잘 않습니다. 명령줄 트릭이 효과가 있다면 좋을 것입니다. Octave 전체 직렬 데이터 기능을 제공하는 좋은 패치가 될 수 있습니다. Matlab은 분명히 fprintf로 직렬 데이터를 처리합니다. Octave는 소스 코드에서 문제를 발견 할 수 있도록 오픈 소스이지만 내가 말했듯이 나는 단지 초보자입니다. 다시 한번 감사드리며, 그러한 완전한 모범을 보이는 시간을 내어 주셔서 감사합니다. 비주얼 스튜디오로 무엇이든 컴파일한 것은 이번이 처음이었기 때문에 매우 교육적이었습니다. 이 경험을 통해 옥타브의 직렬 명령 실패의 배경이 무엇인지 궁금해하게되었습니다. 이제 SetCommState() 함수를 사용하여 DCB 구조에 따라 직렬 포트를 구성할 시간입니다.

왜 그것이 당신을 위해 작동하지 않는지 정말 모르겠지만, 한 가지는 당신이 아직 시도하지 않은 경우 시도해야한다는 마음에 봄을했다. 직렬 포트 장치의 입력 및 출력 스트림은 일반적으로 기본적으로 버퍼링됩니다. 즉, 문자를 직렬 포트에 fwrite할 때 일반적으로 직렬 포트를 통해 즉시 전송 되지 않습니다. 대신 전송을 위한 일종의 스테이징 영역 역할을 하는 메모리 버퍼에 기록됩니다.

admin