OS/vxWorks VxWorks (Task 생성 / RS232 통신 )
  • 728x90
    반응형

     

     

     

     

    VxWorks OS에서 RS232 통신 사용하기

    • Task1, Task2 두개를 생성하여 Task1 은 232디바이스를 열어 메시지를 보내고 Task2는 단순히 카운터를 세는 test 코드를 작성하고 결과를 확인 하였다.

    main.c

    • fcntl.h 는 open() 함수의 2번째 인수인 flag를 사용하기 위해 등록 하였다.
    • ioLib.h 는 BAUDRATE 를 설정하기 위하여 ioctl()함수를 사용하기 위해 등록 하였다.
    • main()함수의 반환형STATUS 는 VxWorks 에서 사용되는 type이며 따라가보면 int형 인 것을 아래와 같이 알 수 있다.

     

     

    • OK 와ERROR 는 아래와 같이 define 되어 있다.

     

    • 메인에서는 taskSpawn()함수로 Task 2개를 생성하고 에러처리를 한다.

     

    myTask1 함수

     

    • myTask1 함수의 LOCAL 은 static 을 의미하며 VxWorks 에서 type 을 이와 같이 사용한다.

     

     

    • taskIdSelf()함수로 생성된 Task ID 값을 저장해둔다.
    • 저수준 open()함수를 사용하여 232디바이스를 오픈하고 에러검사를 한다.
    • 오픈된 장치 핸들을 이용하여 ioctl() 함수로 BAUDRATE 를 9600으로 설정하였다.
    • write()함수로 버퍼에 저장해둔 메시지를 보냈다. 이 때 출력처리속도가 빠름으로 taskDelay()함수로 딜레이를 발생시켰다.

    myTask2 함수

     

    • 단순히 카운터를 세어 출력한다.

     

    clean 함수

     

    • Task 함수에서 taskIdSelf()함수를 통해 저장해둔 Task ID 로 Task 를 종료시킨다.
    • open 한 장치 핸들러를 close 한다. 
    • clean 함수는 호출되는 곳이 없다. shell 에서 호출하여 Task를 종료시킬 때 사용한다.

     

    실행 결과

     

     

     

     

     

     

    728x90
    반응형

    'OS > vxWorks' 카테고리의 다른 글

    [VxWorks] 메시지 큐 예제  (0) 2017.06.30
    VxWorks (세마포어)  (0) 2017.06.30
    VxWorks OS구성 / 개발 방법  (2) 2017.06.30
    Task 란? / taskSpawn  (0) 2017.06.30
    VxWorks Workbench / 전기신호 강의 정리  (0) 2017.06.30
상단으로