본문 바로가기
코스웨어/16년 스마트컨트롤러

20160401_조재찬_업무일지_리눅스 터미널 및 통신

by 알 수 없는 사용자 2016. 4. 2.
728x90
반응형

 

 


리눅스와 윈도우간 c언어 파일은 호환되나, 실행파일은 그 운영체제에서만 호환된다.

 

c언어의 호환성

*.c파일을 열어보면 개행문자는 메모장에서는 제대로 처리되지 않지만, 

visual studio 등의 프로그램으로 열면 개행문자가 제대로 처리된 소스를 볼 수 있다.



도스창 명령어


dir >>1.txt

redirection : 출력방향을 1.txt파일로 보냄.  파일을 열어보면 dir의 내용이 들어가있는 걸 볼 수 있다.



copy main.c smart.c     // main.c파일을 smart.c파일로 복사한다.

copy main.c + smart.c  // main.c파일과 smart.c 파일을 합친다. 



type 명령어 : 파일의 내용을 화면에 텍스트로 출력한다. 

type main.c    // main.c의 내용을 화면에 출력

type *.c        // 디렉토리에 있는 모든 *.c파일의 내용을 화면에 출력





리눅스에서 터미널 명령어


리눅스는 명령어가 틀리다. type대신에 cat명령어를 통해 파일의 내용을 화면에 출력한다.




>는 리다이렉션 명령어.


cat a.c b.c > c.c

 cat test2.c>>test.c


cat test2.c >> test.c 명령을 하면 test2.c의 텍스트가 test.c 텍스트 최하단으로 복사된다. 



visual editor 명령어 


J 하면 아래위의 줄이 붙는다. (join)



/ 찾고싶은 키워드


n  다음 찾기


shift n  이전 찾기


:noh  하이라이트 꺼짐




라즈베리파이를 통한 터미널 통신 (canonical)


아래 pdf파일과 UNIX 고급 프로그래밍 책을 통해 자세히 공부할 수 있다.

(리처드스티븐스 외/류광 역)


터미널.pdf



소스 (주석확인해서 read, write 부분만 바꿔주면 된다.)

#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
#include <fcntl.h>
#include <termios.h>
#include <sys/types.h>
#include <sys/stat.h>

#define SPEED   B115200
#define SPORT   "/dev/ttyAMA0"


int main(void)
{
    char cBuff[255];

    int iDev = 0;
    int iRet = 0;

    struct termios stOldState;
    struct termios stNewState;

    iDev = open(SPORT, O_RDWR | O_NOCTTY);

    if(0>iDev)
    {
        perror(SPORT);
        exit(-100);
    }

    tcgetattr(iDev, &stOldState);
    bzero(&stNewState, sizeof(stNewState));
    stNewState.c_cflag = SPEED | CRTSCTS | CS8 | CLOCAL | CREAD;
    stNewState.c_iflag = IGNPAR | ICRNL;
    stNewState.c_oflag = 0;
    stNewState.c_lflag = ICANON;
    bzero(stNewState.c_cc, NCCS);
    stNewState.c_cc[VMIN] = 1;

    tcflush(iDev, TCIFLUSH);
    tcsetattr(iDev, TCSANOW, &stNewState);

    iRet = write(iDev, "test\n"5);
    //iRet = read(iDev, cBuff, 255);
    //cBuff[iRet] = 0;
    //printf("[%s]:[%d]\n", cBuff, iRet);
    printf("write complete : %d\n", iRet);

    tcsetattr(iDev, TCSANOW, &stOldState);
    close(iDev);

    return 0;
}



gpio 도면을 보면 8, 10번 핀이 각각 TX, RX임을 알 수 있다.




라즈베리 파이 8,10번핀에 꼽아준다.

 


 

 

결과 : 



test라는 글자를 발신하고 발신이 완료되면 발신완료 문자와 함께 글자수가 출력된다. (write complete : 5)

받는 쪽에서는 test라는 글자와 함께 글자수가 출력된다. (test\n까지 5글자)



728x90