==========================================================================================
네트워크
==========================================================================================
<C / 리눅스>
=
-FILE *
stdin
stdout
stderr
fprintf( strout, "하이\n"); // 모니터에 출력(쓰기)
=> 모니터정보를 열어서 stdin,stdout,stderr에 파일 포인터 전역으로 선언 (자동으로 compiler가 해줌)
=> 닫기 가능
:fclose 후 printf 실행시 출력X
#include <stdio.h>
int main() { fclose(stdout); printf("test\n"); return 0; } |




- stdout fclose 후 stderr로 출력됨
#include <stdio.h> int main() { fclose(stdout); fprintf(stderr,"test\n"); return 0; } |
=> stderr fclose 후 출력 X
#include <stdio.h> int main() { fclose(stdout); fclose(stderr); fprintf(stderr,"test\n"); return 0; } |


=파일에 쓰기/ 읽기
-쓰기 : fputc / fputs
#include <stdio.h> int main(void) { FILE * fp = fopen ("simple.txt", "wt"); if(NULL == fp) { puts("파일오픈 실패!"); return -1; }
fputc('A', fp); fputc('B', fp); fputs("My name is Hong \n", fp); fputs("Your name is Yoon \n", fp); fclose(fp); return 0; } |
-읽기 : fgetc / fgets
#include <stdio.h> int main(void) { char str[30]; int ch; FILE * fp = fopen("simple.txt","rt"); if(NULL == fp) { puts("파일오픈 실패!"); return -1; }
ch = fgetc(fp); printf("%c \n", ch); ch = fgetc(fp); printf("%c \n", ch); fgets(str, sizeof(str), fp); printf("%s",str);
fgets(str, sizeof(str), fp); printf("%s",str); fclose(fp); return 0; } |


=fopen - mode
-mode : "at" - 끝에 붙여씀

#include <stdio.h> int main(void) { FILE * fp = fopen ("simple.txt", "at"); if(NULL == fp) { puts("파일오픈 실패!"); return -1; }
fputc('A', fp); fputc('B', fp); fputs("My name is Hong \n", fp); fputs("Your name is Yoon \n", fp); fclose(fp); return 0; } |


-mode : "wt" - 완전 덮어씀



*마그네틱 - 전기 - 밝기 - 모니터
*전부 붙어있음 => 메모장으로 열 때 개행문자 만나면 다음줄로 출력
#include <stdio.h>\nint main()\n.....

=feof : 끝인가?
끝 : 참
끝X : 거짓
-feof : 마지막 + 1 => 끝(가상의 공간까지 가야 참 반환)

-읽은만큼(쓴만큼) 파일포인터 이동

=텍스트파일 내용출력
=cat 파일이름 : 리눅스
=type 파일이름 : DOS


=버퍼크기 잘 선정하기 중요 => 프로그램 성능 결정
=동적 할당
=탐사로봇
=이족보행
=교육용로봇 (발 사이즈 큼)
=아시모(달림,장애인용 로봇(계단)-코난)
=fread / fwrite
- typedef - size_t : unsigned int


- fread : HDD의 파일로부터 읽어서 메모리의 ptr위치에 차례로 담는다
- fwrite : 메모리 ptr위치의 내용을 읽어서(const : 변경불가) HDD의 파일에 쓴다
*함수 인자/기능 추측하는 법 익히기
=pi계정으로 복사

*라즈베리파이 백업하기:클론
==========================================================================================
AVR
==========================================================================================
=AVR2560
=HMI(Human Machine Interface)
-Visual C#


using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;
namespace _20150430 { public partial class Frm_Main : Form { public Frm_Main() { InitializeComponent(); }
private void Frm_Main_Load(object sender, EventArgs e) { serialPort1.BaudRate = 9600; serialPort1.DataBits = 8; serialPort1.StopBits = System.IO.Ports.StopBits.One; serialPort1.Handshake = System.IO.Ports.Handshake.None; serialPort1.Parity = System.IO.Ports.Parity.Even; serialPort1.PortName = "COM4"; btn_Close.Enabled = false; btn_Off.Enabled = false; btn_On.Enabled = false; timer1.Enabled = true; }
private void btn_Open_Click(object sender, EventArgs e) { serialPort1.Open(); btn_Open.Enabled = false; btn_Close.Enabled = true; btn_On.Enabled = true; btn_Off.Enabled = true; }
private void btn_Close_Click(object sender, EventArgs e) { serialPort1.Close(); btn_Open.Enabled = true; btn_Close.Enabled = false; btn_On.Enabled = false; btn_Off.Enabled = false; }
private void btn_On_Click(object sender, EventArgs e) { serialPort1.WriteLine("A"); }
private void btn_Off_Click(object sender, EventArgs e) { serialPort1.WriteLine("B"); }
private void Txtbox_TextChanged(object sender, EventArgs e) { serialPort1.ReadChar(); } } }
|


=결과
==SERIAL 통신 안되는 환경에서 DATA들어오는지 LED연결해서 확인하는 법
=PWM (방향키 UP : LED 밝게 / DOWN : LED 어둡게)
=RTC ( REAL TIME CLOCK) : 시간정보출력