728x90
반응형
C언어
전역변수
처음실행되면 메모리 공간에 할당되어 프로그램이 종료될때까지 메모리에 남아있는 변수
별도 값으로 초기화하지 않으면 0으로 초기화된 값을 가짐 비트0
프로그램 전체 영역 어디에서나 접근가능
GlobalVariable.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #include <stdio.h> int Add(int val); int numX=1; int main(void) { int num = 5; int num1 = add(3); int num2 = num+9; printf("num1 : %d \n", num1); printf("num1 주소 : %p \n",&num1); printf("num2 : %d \n", num2); printf("num2 주소 : %p \n",&num2); printf("main num주소 : %p \n",&num); printf("전역변수 numX : %p \n", &numX); return 0; } int add(int val) { int num = 9; num+=val; printf("add num 주소 : %p \n",&num); return num; } | cs |
결과:
해당 결과값과 각각 전역변수의 메모리 주소
라즈베리파이
Non-Canonical
swrite.c - 송신TX
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | #include <stdio.h> #include <stdlib.h> #include <string.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 = read(iDev, cBuff, 255); iRet = write(iDev, "test\n", 5); //cBuff[iRet] = 0; //printf("[%s]:[%d]\n", cBuff, iRet); printf("write complete: %d \n",iRet); tcsetattr(iDev, TCSANOW, &stOldState); close(iDev); return 0; } | cs |
코드 설명
sread.c - 수신 RX
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | #include <stdio.h> #include <stdlib.h> #include <string.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); return -100;//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 = 0; bzero(stNewState.c_cc, NCCS); stNewState.c_cc[VTIME] = 0; stNewState.c_cc[VMIN] = 5; tcflush(iDev, TCIFLUSH); tcsetattr(iDev, TCSANOW, &stNewState); iRet = read(iDev, cBuff, 255); cBuff[iRet] = 0; printf("[%s]:[%d]\n", cBuff, iRet); tcsetattr(iDev, TCSANOW, &stOldState); close(iDev); return 0; } | cs |
45번 : iRet 에 버퍼에 저장된값 225까지 읽어들이고 나머지는 버림
728x90
'코스웨어 > 16년 스마트컨트롤러' 카테고리의 다른 글
20160405_장진웅_업무일지_로봇제어_시리얼제어2 (0) | 2016.04.05 |
---|---|
20160404_장진웅_업무일지_로봇제어_시리얼제어 (0) | 2016.04.05 |
20160330-업무일지-허도경-로봇제어-터미널 (0) | 2016.04.05 |
20160404_김도관_업무일지_C언어 기초및 비주얼스튜디오 디버깅모드 (2) | 2016.04.05 |
20160331_김도관_업무일지_C언어 기초및 라즈베리파이 시리얼통신_Canonical (0) | 2016.04.05 |
20160330-업무일지-이보원 라즈베리파이 명령어 실습 (0) | 2016.04.05 |
20160329 업무보고 이보원 라즈베리파이 벡업 하기 및 visual studio 실습 (0) | 2016.04.05 |
20160328 업무보고 이보원 라즈베리파이 원격제어 (0) | 2016.04.05 |