직렬 통신 컴포넌트의 제작
|
|
- 민성 곡
- 6 years ago
- Views:
Transcription
1 직렬통신컴포넌트의제작 (Creating Serial Communication Components) 이번장에서는윈도우 API 함수를이용해서시리얼통신을제어할수있는방법을소개하고, 이를바탕으로간단한시리얼통신컴포넌트를제작하도록할것이다. 시리얼통신과관련해서는여러가지프리웨어컴포넌트를인터넷에서찾을수있으므로, 자신에게맞는컴포넌트를찾아서사용하는것도하나의방법이될것이다. 그러나, 기본적으로직렬통신포트에접근해서이를사용하는방법은익혀두는것이좋다. 시리얼통신의기초 시리얼포트는데이터를보내고받는두가지일을한다. 이것이대단히간단하게생각되겠지만, 실제로는이를위해서여러가지일들이벌어진다. 시리얼포트는컴퓨터의연산속도에비해훨씬느리게동작하기때문에, 파일등을시리얼포트로보낸다고생각할때적절한버퍼의활용과흐름제어 (flow control) 가필수적이다. 이러한흐름제어의방법으로가장흔히쓰이는것이 RTS/CTS 와 XON/XOFF 제어이다. RTS(request to send) 와 CTS(clear to send) 는시리얼포트의하드웨어적인흐름제어방법이다. 포트의 RTS 라인은원격디바이스의 CTS 라인과연결되어있고, CTS 라인은 RTS 라인과연결되어있다. 원격디바이스가데이터를받을준비가되면 RTS 라인을활성화시키며, 이렇게되면이와연결된 CTS 라인에서데이터를보내기시작한다. 원격디바이스가충분한양의데이터를받으면 RTS 라인을끊게되고, 이것이데이터를보내지말라는신호가된다. 이러한사이클이데이터가모두전송될때까지반복된다. XON/XOFF 방법은소프트웨어적인흐름제어방법으로 XON/XOFF 문자를보내서제어하는방법이다. 일단시리얼포트에서데이터를전송하기시작해서버퍼가차게되면 XOFF 문자 (ASCII 13h) 를전송한다. 이문자를받으면시리얼포트는데이터의전송을일단중단한다. 데이터를계속받아서버퍼에여유가생기면이번에는 XON 문자 (ASCII 11h) 를전송해서시리얼포트가데이터전송을계속하게된다. 이두가지방법은서로다른방식으로결국비슷한역할을하게되는데, 동시에두가지모두를사용할수도있다. 일단데이터가전송되는도중에는보내고, 받은데이터가제대로전송했는지검사하는것도중요하다. 데이터의전송이제대로이루어졌는지검사하는방법에는여러가지가있는데, 그중가장원시적인것인패리티 (parity) 에러를검사하는것이다. 패리티에러검사의방법에는 even, odd, mark, space 등의것이있는데, 실용성이많이떨어지기때문에거의사용되지않는다.
2 이러한패리티검사방법외에실제로사용되는것으로 CRC(cyclic redundancy check) 검사를많이한다. 이방법은전송된데이터의순서와양을체크섬을이용해서검사하는것으로비교적효과적이면서도정확하다. 흐름제어만큼이나중요한것이연결된두시리얼포트가서로의상태를알아보고이를제어하는방법이다. 여기에대한방법에도하드웨어적인방법과소프트웨어적인방법이있다. 하드웨어적인방법은 DSR(data set ready)/dtr(data terminal ready) 라인을이용하는것이다. 예를들어두개의모뎀이연결되면각각의모뎀은 DTR 라인을활성화시킨다 ( 이를 hi 또는 hot 이라고도한다.). 한모뎀의 DTR 라인은다른모뎀의 DSR 라인과연결되어있는데, 양쪽모뎀이다른모뎀으로부터신호를받게되면바로하드웨어적인핸드쉐이킹을하게된다. 그렇지만이방법은비교적오래된방법으로, 최근에는소프트웨어적인방법이더욱효과적이고더많이쓰인다. DSR/DTR 방법은흐름제어의한수단으로사용되고있다. 소프트웨어적인방법은모뎀이연결될때잡음이많이섞이게되는데흐름제어, 압축레벨, 보드전송율등을조절해서여기에대처하게된다. 간단한시리얼통신에서는이러한방법이사용되지않지만, 파일전송등의비교적복잡한작업을할때에는필수적으로사용된다. Win32 API 에는이러한시리얼통신을지원하기위해비교적많은함수가준비되어있다. 지금부터이들을하나씩알아보고, 이를쉽게사용할수있는컴포넌트를하나만들어보자. 포트열기 가장중요한것이처음으로포트를여는것이다. 이를위해서 CreateFile 함수가사용된다. 이함수의선언부는다음과같다. function CreateFile(lpFileName: PChar; dwdesiredaccess, dwsharemode: Integer; lpsecurityattributes: PSecurityAttributes; dwcreationdisposition, dwflagsandattributes: DWORD; htemplatefile: THandle): THandle; 이함수가성공적으로수행되면시리얼포트에대한핸들을돌려주게된다. 첫번째파라미터로사용되는 lpfilename 에는사용할포트의이름을지정한다, 예를들어 COM1, COM2 등을지정한다. dwdesiredaccess 파라미터에는포트에접근하는방법을지정하는데, 포트를통해서데이터를읽고, 쓰기를모두한다면 GENERIC_READ OR GENERIC_WRITE 로설정한다. dwsharemode 파라미터에는지정한포트를다른어플리케이션과공유할것인지여부를정한다. 보통의경우에는 0 으로지정하여다른어플리케이션이접근할수없도록한다. lpsecurityattibutes 파라미터는핸들에대한보안레벨을지정하는구조체의포인터를넘
3 겨주게되는데, 보통의경우 nil 로설정한다. dwcreationdisposition 파라미터는윈도우가파일을열거나생성하는방법을지정하는데, 시리얼통신의경우에는파일이언제나지정되어있고, 존재하는상태이므로 OPEN_EXISTING 으로설정된다. dwflagsandattributes 파라미터는시리얼포트가통신하는방법을지정할수있는데, 예를들어 FILE_FLAG_OVERLAPPED 로지정된경우시리얼포트가동시에읽기, 쓰기가가능한비동기 (asynchronous) 통신을지원한다. 보통의경우에는 0 으로지정해서동기 (synchronous) 통신을지정한다. 마지막으로 htemplatefile 파라미터는시리얼통신과아무런관계가없기때문에보통 0 으로설정한다. 장치제어블록 (Device Control Block, DCB) 시리얼포트를제어하는데가장중요한데이터구조가장치제어블록 (DCB) 구조체이다. 이구조체에는시리얼포트에적용할모든설정사항이저장된다. Windows.pas 유닛에선 언되어있는 DCB 구조체의선언부는다음과같다. type TDCB = record DCBLength: DWORD; BaudRate: DWORD; Flags: LongInt; // 비트플래그 //DCB 구조체의크기 //Baud rate wreserved: Word; XONLim: Word; XOFFLim: Word; ByteSize: Byte; Parity: Byte; StopBits: Byte; XONChar: Char; XOFFChar: Char; ErrorChar: Char; EOFChar: Char; EvtChar: Char; //XON 스위치에대한바이트한계 //XOFF 스위치에대한바이트한계 // 바이트의비트수 // 패리티종류 // 스톱비트 //XON 문자 //XOFF 문자 // 패리티에러대체문자 //EOF 문자 // 이벤트문자 wreserved1: Word; DCB 파라미터를얻어오고, 설정하는데사용되는함수가 GetCommState, SetCommState 함수이다. 이들함수에포트에대한핸들을넘겨주면 DCB 구조체의주소를얻을수있다.
4 이들함수의선언부는다음과같다. function GetCommState(hFile: THandle; var lpdcb: TDCB): BOOL; stdcall; function SetCommState(hFile: THandle; const lpdcb: TDCB): BOOL; stdcall; GetCommTimeouts, SetCommTimeouts 함수 데이터를얻어올때몇가지문제로데이터가전송되지않을수가있다. 예를들어, 불의의사고로선로가끊어진경우시리얼포트는데이터를전송받을수가없다. 이때적절한시간이넘게지나가면더이상데이터를기다리지않는다. 이러한시간을읽거나설정할때에 GetCommTimeouts, SetCommTimeouts 함수를사용한다. 이함수에포트의핸들과 TCommTimeouts 데이터형의레코드를전달하면제한시간이설정된다. 이들의선언부는다음과같다. function GetCommTimeouts(hFile: THandle; var lpcommtimeouts: TCommTimeouts): BOOL; stdcall; function SetCommTimeouts(hFile: THandle; const lpcommtimeouts: TCommTimeouts): BOOL; stdcall; TCommTimeouts = record ReadIntervalTimeout: DWORD; ReadTotalTimeoutMultiplier: DWORD; ReadTotalTimeoutConstant: DWORD; WriteTotalTimeoutMultiplier: DWORD; WriteTotalTimeoutConstant: DWORD; 보통의경우에는마이크로소프트의디폴트값을그대로사용한다. PurgeComm, CloseHandle, ClearCommError 함수 PurgeComm 함수를이용하면읽기, 쓰기를진행하거나취소할수있다. 버퍼를비우게할수도있다. 선언부는다음과같다. 또한입력, 출력 function PurgeComm(hFile: THandle; dwflags: DWORD): BOOL; stdcall;
5 첫번째파라미터에는포트의핸들을지정하면되고, 두번째파라미터에플래그를설정한다. 플래그로사용할수있는것으로 PURGE_TXABORT, PURGE_TXCLEAR, PURGE_RXABORT, PURGE_RXCLEAR 등이있다. 여기서 abort 는진행중인작업을즉시중지하라는의미이며, clear 는해당버퍼를비우라는의미이다. TX 와 RX 는각각 transfer, receive 를의미한다. 이렇게사용한포트를닫을때에는 CloseHandle 함수를사용한다. 수행되면 True 가반환된다. 선언부는다음과같다. 이함수가성공적으로 function CloseHandle(hFile: THandle): BOOL; stdcall; ClearCommError 함수는지정된장치의현재상태를검사해서에러가있으면이를리포트한다. 또한, 통신에러가발생하면호출되어장치의에러플래그를지우고데이터의읽기, 쓰기작업을계속하게한다. 이함수의 lpstat 파라미터는 TCommStat 구조체의포인터로, 이구조체에발생한에러의내용과현재장치의상태에대한내용이담기게된다. 함수와 TCommStat 구조체의선언부는다음과같다. function ClearCommError(hFile: THandle; var lperrors: DWORD; lpstat: PComStat): BOOL; stdcall; TComStat = record Flags: TCommStateFlags; Reserved: array[0..2] of Byte; cbinque: DWORD; cboutque: DWORD; 데이터읽기와쓰기 (ReadFile and WriteFile) 데이터를읽고쓰는데가장중요한함수는 ReadFile, WriteFile 함수이다. 이함수들은시 리얼포트에서실제데이터를일고쓸때사용된다. 선언부는다음과같다. function WriteFile(hFile: THandle; const Buffer: nnumberofbytestowrite: DWORD; var lpnumberofbyteswritten: DWORD; lpoverlapped: POverlapped): BOOL; stdcall; function ReadFile(hFile: THandle; var Buffer: nnumberofbytestoread: DWORD; var lpnumberofbytesread: DWORD; lpoverlapped: POverlapped): BOOL; stdcall;
6 기본적으로파라미터가의미하는부분은거의비슷하다. hfile 파라미터는사용할포트의핸들이고, Buffer 는데이터를보내거나읽어와야되는버퍼의포인터를가리킨다. nnumberofbyteswritten, nnumberofbytesread 파라미터는실제로포트에전송되거나받게되는데이터의바이트수를나타낸다. 그리고, lpnumberofbyteswritten, lpnumberofbytesread 파라미터는실제로읽고쓴바이트수를나타낸다. 마지막으로 lpoverlapped 파라미터는시리얼포트를비동기로사용할때사용되는 TOverlapped 구조체에대한포인터이다. TSerialPort 컴포넌트 그러면, 이러한지식을바탕으로시리얼통신을쉽게사용할수있는컴포넌트를하나구현해보자. 다음부터설명하는컴포넌트는 Jason Wedge Perry 가공개한 TSerialPort 컴포넌트에기초한것임을미리밝혀둔다. 그러면이컴포넌트에서사용할프로퍼티를미리정의하도록한다. 사실시리얼포트에대한프로퍼티로정의할만한것들은대부분 DCB 구조체의내용이다. 비교적중요한프로퍼티를나열하면아래와같다. COM 포트 (COM1 ~ COM8) Baud Rate (110 ~ 256,000) 패리티검사의종류 (None, Even, Odd, Mark, Space) 스톱비트 (1, 1.5, 2) 데이터비트 (4, 5, 6, 7, 8) XON 문자 ( 디폴트 11h) XOFF 문자 ( 디폴트 13h) XON Limit (1024k) XOFF Limit (2048k) 에러문자 (0) 흐름제어종류 (RTS/CTS, XON/XOFF, DSR/DTR) 이들을각각의프로퍼티로제어하려면 Set 메소드를정의해야한다. 이를바탕으로컴포넌 트를다음과같이선언한다. unit Serial; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
7 type TCommPort = (cpcom1, cpcom2, cpcom3, cpcom4, cpcom5, cpcom6, cpcom7, cpcom8); TBaudRate = (br110, br300, br 600, br1200, br2400, br4800, br9600, br14400, br19200, br38400, br56000, br128000, br256000); TParityType = (pcnone, pceven, pcodd, pcmark, pcspace); TStopBits = (sbone, sboneptfive, sbtwo); TDataBits = (db4, db5, db6, db7, db8); TFlowControl = (fcnone, fcxon_xoff, fcrts_cts, fsdsr_dtr); TNotifyTXEvent = procedure (Sender: TObject; Data: String) of Object; TNotifyRXEvent = procedure (Sender: TObject; Data: String) of Object; const dflt_commport = cpcom2; dflt_baudrate = br14400; dflt_paritytype = pcnone; dflt_parityerrorchecking = False; dflt_parityerrorchar = 0; dflt_parityerrorreplacement = False; dflt_stopbits = sbnone; dflt_databits = db8; dflt_xonchar = $11; dflt_xoffchar = $13; dflt_xonlim = 1024; dflt_xofflim = 2048; dflt_errorchar = 0; dflt_flowcontrol = fcnone; dflt_stripnullchars = False; dflt_eofchar = 0; TSerialPort = class(tcomponent) private hcommport: THandle; FCommPort: TCommPort; FBaudRate: TBaudRate; FParityType: TParityType;
8 FParityErrorChecking: Boolean; FParityErrorChar: Byte; FParityErrorReplacement: Boolean; FStopBits: TStopBits; FDataBits: TDataBits; FXONChar: Byte; FXOFFChar: Byte; FXONLim: Word; FXOFFLim: Word; FErrorChar: Byte; FFlowControl: TFlowControl; FStripNullChars: Boolean; FEOFChar: Byte; FOnTransmit: TNotifyTXEvent; FOnReceive: TNotifyRXEvent; FAfterTransmit: TNotifyTXEvent; FAfterReceive: TNotifyRXEvent; FRXBytes: DWORD; FTXBytes: DWORD; ReadBuffer: String; procedure SetCommPort(Value: TCommPort); procedure SetBaudRate(Value: TBaudRate); procedure SetParityType(Value: TParityType); procedure SetParityErrorChecking(Value: Boolean); procedure SetParityErrorChar(Value: Byte); procedure SetParityErrorReplacement(Value: Boolean); procedure SetStopBits(Value: TStopBits); procedure SetDataBits(Value: TDataBits); procedure SetXONChar(Value: Byte); procedure SetXOFFChar(Value: Byte); procedure SetXONLim(Value: Word); procedure SetXOFFLim(Value: Word); procedure SetErrorChar(Value: Byte); procedure SetFlowControl(Value: TFlowControl); procedure SetStripNullChars(Value: Boolean); procedure SetEOFChar(Value: Value);
9 procedure Initialize_DCB; protected public constructor Create(AOwner: TComponent); override; destructor Destroy; override; function OpenPort(MyCommPort: TCommport): Boolean; function ClosePort: Boolean; procedure SendData(Data: PChar; Size: DWORD); function GetData: String; function PortIsOpen: Boolean; procedure FlushTX; procedure FlushRX; published property CommPort: TCommPort read FCommPort write SetCommPort default dflt_commport; property BaudRate: TBaudRate read FBaudRate write Set FBaudRate default dflt_baudrate; property ParityType: TParityType read FParityType write SetParityType default dflt_paritytype; property ParityErrorChecking: Boolean read FParityErrorChecking write SetParityErrorChecking default dflt_parityerrorchecking; property ParityErrorChar: Byte read FParityErrorChar write SetParityErrorChar default dflt_parityerrorchar; property StopBits: TStopBits read FStopBits write SetStopBits default dflt_stopbits; property DataBits: TDataBits read FDataBits write SetDataBits default dflt_databits; property XONChar: Byte read FXONChar write SetXONChar default dflt_xonchar; property XOFFChar: Byte read FXOFFChar write SetXOFFChar default dflt_xoffchar; property XONLim: Word read FXONLim write SetXONLim default dflt_xonlim; property XOFFLim: Word read FXOFFLim write SetXOFFLim default dflt_xofflim; property ErrorChar: Byte read FErrorChar write SetErrorChar default dflt_errorchar; property FlowControl: TFlowControl read FFlowControl write SetFlowControl default dflt_flowcontrol; property StripNullChars: Boolean read FStripNullChars write SetStripNullChars default dflt_stripnullchars; property EOFChar: Byte read FEOFChar write SetEOFChar default dflt_eofchar; property OnTransmit: TNotifyTXEvent read FOnTransmit write FOnTransmit; property OnReceive: TNotifyRXEvent read FOnReceive write FOnReceive; property AfterTransmit: TNotifyTXEvent read FAfterTransmit write FAfterTransmit; property AfterReceive: TNotifyRXEvent read FAfterReceive write FAfterReceive;
10 procedure Register; 이들각각의프로퍼티에대해앞에서보다시피 dflt_ 로시작하는디폴트상수값을지정하 고, Set 메소드를정의하였다. 이들 Set 메소드의구현방법은기본적으로다음과같은형 태를가진다. procedure TSerialPort.SetProperty(Value: TDefinedType); if Value <> FProperty then FProperty := Value; Initialize_DCB; 프로퍼티를설정하는방법은비교적쉽게이해할수있을것이다. 이번에는이벤트를정의할차례이다. TSerialPort 클래스에서는 OnTransmit, OnReceive, AfterTransmit, AfterRecieve 라는 4 개의이벤트를제공한다. 각각의이벤트는 Sender 와 Data 라는파라미터를가진다. 이제부터앞에서선언한컴포넌트의메소드를구현해보자. 먼저 Create, Destroy, PortIsOpen 메소드를다음과같이구현한다. constructor TSerialPort.Create(AOwner: TComponent); inherited Create(AOwner); hcommport := INVALID_HANDLE_VALUE; FCommPort := dflt_commport; FBaudRate := dflt_baudrate; FParityCheck := dflt_paritycheck; FStopBits := dflt_stopbits; FDataBits := dflt_databits; FXONChar := dflt_xonchar; FXOFFChar := dflt_xoffchar; FXONLim := dflt_xonlim;
11 FXOFFLim := dflt_xofflim; FErrorChar := dflt_errorchar; FFlowControl := dflt_flowcontrol; FOnTransmit := nil; FOnReceive := nil; destructor TSerialPort.Destroy; ClosePort; inherited Destroy; function TSerialPort.PortIsOpen: Boolean; Result := hcommport <> INVALID_HANDLE_VALUE; Create 메소드에서는데이터필드의초기값을설정하게된다. 여기서눈여겨볼것은 hcommport 핸들을 INVALID_HANDLE_VALUE 로설정한부분이다. 이는시리얼포트가성공적으로열렸는지테스트하고, 포트에특정작업이이루어지는것을막는등의역할을하게된다. 이와연관되어서 PortIsOpen 메소드가사용된다. Destroy 메소드에서는열린포트를닫는 ClosePort 메소드를호출한다. 그러면실제로포트를열고, 닫는 OpenPort 와 ClosePort 메소드를구현하도록하자. OpenPort 메소드는앞에서설명한 CreateFile API 함수를이용해서포트에대한핸들을얻어오게되며, 성공적으로이작업이이루어지면 True 를반환한다. 이때포트를열기위해서는이미열려있는포트를닫아야하므로 ClosePort 메소드를먼저호출한다. 그리고, Initialize_DCB 메소드를호출해서포트를초기화한다. ClosePort 메소드는 CloseHandle API 함수를호출해서포트에대한핸들을해제하게되는데, 이때 PurgeComm API 함수를사용해서버퍼의값을비우게되는 FlushTX, FlushRX 메소드를먼저호출한다. 그리고, 포트에대한핸들에아무것도지정되지않았다는것을나타내는 INVALID_HANDLE_VALUE 값을지정한다. function TSerialPort.OpenPort(MyCommPort: TCommPort): Boolean; var MyPort: PChar;
12 ClosePort; MyPort := PChar( COM + IntToStr(Ord(MyCommPort) + 1)); hcommport := CreateFile(MyPort, GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, 0, 0); Initialize_DCB; if hcommport <> INVALID_HANDLE_VALUE then Result := True; FCommPort := MyCommPort; end else Result := False; function TSerialPort.ClosePort: Boolean; FlushTX; FlushRX; Result := CloseHandle(hCommPort); hcommport := INVALID_HANDLE_VALUE; function TSerialPort.FlushRX; if hcommport = INVALID_HANDLE_VALUE then Exit; PurgeComm(hCommPort, PURGE_RXABORT or PURGE_RXCLEAR); ReadBuffer := ; function TSerialPort.FlushTX; if hcommport = INVALID_HANDLE_VALUE then Exit; PurgeComm(hCommPort, PURGE_TXABORT or PURGE_TXCLEAR); 포트를초기화하는부분은 Initialize_DCB 메소드에의해서구현된다. 이메소드는프로퍼
13 티가바뀔때마다이변화를 DCB 구조체에반영하는역할을한다. 실제구현방법은다음 코드를보면쉽게이해할수있을것이다. procedure TSerialPort.Initialize_DCB; var MyDCB: TDCB; if hcommport = INVALID_HANDLE_VALUE then Exit; GetCommState(hCommPort, MyDCB); case FBaudRate of br110: MyDCB.BaudRate := 110; br300: MyDCB.BaudRate := 300; br600: MyDCB.BaudRate := 600; br1200: MyDCB.BaudRate := 1200; br2400: MyDCB.BaudRate := 2400; br4800: MyDCB.BaudRate := 4800; br9600: MyDCB.BaudRate := 9600; br14400: MyDCB.BaudRate := 14400; br19200: MyDCB.BaudRate := 19200; br38400: MyDCB.BaudRate := 38400; br56000: MyDCB.BaudRate := 56000; br128000: MyDCB.BaudRate := ; br256000: MyDCB.BaudRate := ; case FParityType of pcnone: MyDCB.Parity := NOPARITY; pceven: MyDCB.Parity := EVENPARITY; pcodd: MyDCB.Parity := ODDPARITY; pcmark: MyDCB.Parity := MARKPARITY; pcspace: MyDCB.Parity := SPACEPARITY; if FParityErrorChecking then inc(mydcb.flags, $0002); if FParityErrorReplcement then inc(mydcb.flags, $0021); MyDCB.ErrorChar := Char(FErrorChar);
14 case FStopBits of sbone: MyDCB.StopBits := ONESTOPBIT; sboneptfive: MyDCB.StopBits := ONE5STOPBITS; sbtwo: MyDCB.StopBits := TWOSTOPBITS; case FDataBits of db4: MyDCB.ByteSize := 4; db5: MyDCB.ByteSize := 5; db6: MyDCB.ByteSize := 6; db7: MyDCB.ByteSize := 7; db8: MyDCB.ByteSize := 8; case FFlowControl of fcxon_xoff: MyDCB.Flags := MyDCB.Flags or $0020 or $0018; fcrts_cts: MyDCB.Flags := MyDCB.Flags or $0004 or $0024 * RTS_CONTROL_HANDSHAKE; fcdsr_dtr: MyDCB.Flags := MyDCB.Flags or $0008 or $0010 * DTR_CONTROL_HANDSHAKE; if FStripNullChars then inc(mydcb.flags, $0022); MyDCB.XONChar := Char(FXONChar); MyDCB.XOFFChar := Char(FXOFFChar); MyDCB.XONLim := FXONLim; MyDCB.XOFFLim := FXOFFLim; if FEOFChar <> 0 then MyDCB.EOFChar := Char(EOFChar); SetCommState(hCommPort, MyDCB); 이메소드를구현하기위해서 DCB 구조체에비트플래그를사용하였다. 이러한플래그에느여러가지종류가있는데, 대부분은흐름제어와패리티검사에사용된다. 사용가능한플래그를나열하면다음과같다.
15 fparity = $0002; // 설정되면패리티검사를한다. foutxctsflow = $0004; foutxdsrflow = $0008; //CTS 가 high 가아니면데이터가전송되지않음 //DSR 이 high 가아니면데이터가전송되지않음 fdtrcontrol = $0010; //DTR_CONTROL_ENABLE, DTR_CONTROL_DISABLE, DTR_CONTROL_HANDSHAKE fdsrsensitivity = $0012; //DSR 이 high 가아니면모든바이트가무시됨 ftxcontinueonxoff = $0014; // 이플래그가설정되어있으면 XON 문자가전송되어도데이터를보내며, 그렇지않으면 XONLim 이도달할때까지데이터를보내지않는다. foutx = $0018; finx = $0020; ferrorchar := $0021; fnull = $0022; frtscontrol = $0024; // 전송시 XON/XOFF 흐름제어를사용 // 수신시 XON/XOFF 흐름제어를사용 // 패리티에러가발생하면이문자로교체 //Null 문자를잘라냄 //RTS 흐름제어사용 이제실제로데이터를받고, 전송하는 GetData, SetData 메소드를구현해보자. SendData 가보다쉽게구현이가능하므로, 여기에대해서먼저알아본다. 이메소드가호출되면먼저 OnTransmit 이벤트핸들러를호출해서데이터를전송하기전에여러가지조작을할수있도록허용한다. 마찬가지로이메소드의마지막에는 AfterTransmit 이벤트핸들러를호출해서데이터전송후에여러가지작업을할수있도록한다. 실제로데이터를전송하는작업은 WriteFile API 함수를사용한다. 파라미터로포트에대한핸들과전송할데이터의포인터, 그리고전송할데이터의크기를넘겨주면실제로전송된데이터의크기가결과값으로반환된다. 마지막파라미터에는전송하는방법을지정할수있는데, nil 로설정해서동시에읽고, 쓰는작업을할수없도록하였다. 이값을 overlapped 스타일의비동기통신모드로설정하면동시에읽고, 쓰는작업을할수있는데이를구현하기위해서는버퍼처리, 메모리재할당기법등의고급스런테크닉을사용해야한다. procedure TSerialPort.SendData(Data: PChar; Size: DWORD); var NumBytesWritten: DWORD; if hcommport = INVALID_HANDLE_VALUE then Exit; if Assigned(FOnTransmit) then FOnTransmit(Self, Data); WriteFile(hCommPort, Data^, Size, NumBytesWritten, nil); if Assigned(FAfterTransmit) then FAfterTransmit(Self, Data);
16 GetData 메소드에서도프로시저의처음과끝부분에 OnReceive, AfterReceive 이벤트핸들러를호출한다. 그리고, 데이터를읽어오는데에는 ReadFile API 함수를사용하는데, 이함수에서읽어온데이터를저장할버퍼와데이터의크기를지정한다. 이때데이터의크기를적절하게지정하기위해 ClearCommError API 함수를이용해서 TComStat 형의데이터를읽어와서, 버퍼의크기를결정하는과정을거친다. function TSerialPort.GetData: String; var NumBytesRead: DWORD; BytesInQueue: LongInt; ostatus: TComStat; // 에러코드를담기위해서사용한다. dwerrorcode: DWORD; if hcommport = INVALID_HANDLE_VALUE then Exit; if Assigned(FOnReceive) then FOnReceive(Self, ReadBuffer); ClearCommError(hCommPort, BytesInQueue := ostatus.cbinque; if BytesInQueue > 0 then SetLength(ReadBuffer, BytesInQueue + 1); ReadFile(hCommPort, PChar(ReadBuffer)^, BytesInQueue, NumBytesRead, nil); SetLength(ReadBuffer, StrLen(PChar(ReadBuffer))); if Assigned(FAfterReceive) then FAfterReceive(Self, ReadBuffer); Result := ReadBuffer; 이렇게해서가장기본적인작동을하는시리얼포트컴포넌트를하나완성하였다. 이를바탕으로보다기능을강화해서좋은컴포넌트로만들수도있는데, 예를들어서 CRC 검사를하고, 비동기통신이가능하며, 데이터를읽고쓸때멀티쓰레딩기법을이용하는컴포넌트등을생각할수있겠다. TSerialPort 컴포넌트의활용 이컴포넌트를이용하는방법을알아보자. TSerialPort 컴포넌트의기능과간단한예제코
17 드를나열하면다음과같다. 1. 포트열기 : SerialPort1.OpenPort(cpCOM2); or if SerialPort1.OpenPort(cpCOM2) then do something. 2. 데이터전송 : var S: PChar; S := PChar(Edit1.Text); SerialPort1.SendData(S, SizeOf(s)); SerialPort1.SendData((chr(13)), 1); // 캐리지리턴 3. 데이터읽기 : Memo1.Text := SerialPort1.GetData; 4. 버퍼비우기 : SerialPort1.FlushRX; SerialPort1.FlushTX; 5. 포트가열려있는지확인 : if SerialPort1.PortIsOpen then do something. 6. 포트닫기 SerialPort1.ClosePort; 정리 (Summary)
18 이번장에서는직렬포트를이용한통신을하는기본적인방법에대해서알아보았다. 최근의인터넷환경의발달로모뎀과직렬포트를직접이용하는사례가많이줄어들고있는것이사실이다. 그렇지만, 직렬포트는새로운기계를제작하여컴퓨터로제어를하거나, 그밖에도여러가지아이디어를가지고가장쉽게컴퓨터와연결할수있는수단이다. 그러므로, 직렬포트를활용하는방법을알아두는것은의미가있다.
슬라이드 1
파일 I/O 와디렉터리컨트롤 1 목차 기본적인파일처리 파일검색 파일열기 & 닫기 파일읽기 & 쓰기 삭제, 복사, 이동 (?) 파일의시간정보얻기 파일특성정보얻기 파일포인터 directory 생성 & 삭제 경로설정 경로얻기 2 파일생성 / 열기 HANDLE CreateFile ( LPCTSTR lpfilename, DWORD dwdesiredaccess, 파일이름
More information개요
Application Note (003) 시리얼인터페이스 (RS232/RS422/RS485) Version 1.0 솔내시스템주식회사 1. 개요 는 RS232, RS422, RS485등 3개의시리얼인터페이스를지원합니다. 사용자는 의설정용유틸리티인 ezconfig를이용해서 3개의인터페이스중에서하나를선택하여설정할수있습니다. 1.1. RS232 Ground를기준으로한전압을이용해서통신하는형태입니다.
More informationAPI 매뉴얼
PCI-DIO12 API Programming (Rev 1.0) Windows, Windows2000, Windows NT and Windows XP are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations mentioned
More information슬라이드 1
데이터수집 (Labview VISA) 시리얼통신개요 시리얼통신은일반컴퓨터와주변계측장비의비동기식통신수단으로지금까지도많이쓰이는인터페이스중에하나입니다. 이러한이유로대부분의데스크탑컴퓨터에는 RS-232C (Recommended Standard 232 Revision C) 형을시리얼포트를내장하고있어 1:1 통신을수행하며, 1: 多통신인유사한통신방법인 RS-485 통신을사용합니다.
More information歯MDI.PDF
E08 MDI SDI(Single Document Interface) MDI(Multiple Document Interface) MDI (Client Window) (Child) MDI 1 MDI MDI MDI - File New Other Projects MDI Application - MDI - OK [ 1] MDI MDI MDI MDI Child MDI
More information<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A636C0CFC2F72E BC8A3C8AF20B8F0B5E55D>
뻔뻔한 AVR 프로그래밍 The 6 th Lecture 유명환 ( yoo@netplug.co.kr) 1 2 통신 관련이야기 시리얼통신 관련이야기 INDEX 3 ATmega128 시리얼통신회로도분석 4 ATmega128 시리얼통신컨트롤러 (USART) 분석 5 ATmega128 시리얼통신관련레지스터분석 6 ATmega128 시리얼통신실습 1 통신 관련이야기 동기
More informationMicrosoft PowerPoint - chap02-C프로그램시작하기.pptx
#include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의
More information<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>
뻔뻔한 AVR 프로그래밍 The Last(8 th ) Lecture 유명환 ( yoo@netplug.co.kr) INDEX 1 I 2 C 통신이야기 2 ATmega128 TWI(I 2 C) 구조분석 4 ATmega128 TWI(I 2 C) 실습 : AT24C16 1 I 2 C 통신이야기 I 2 C Inter IC Bus 어떤 IC들간에도공통적으로통할수있는 ex)
More informationT100MD+
User s Manual 100% ) ( x b a a + 1 RX+ TX+ DTR GND TX+ RX+ DTR GND RX+ TX+ DTR GND DSR RX+ TX+ DTR GND DSR [ DCE TYPE ] [ DCE TYPE ] RS232 Format Baud 1 T100MD+
More informationPowerPoint Template
JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것
More informationChapter #01 Subject
Device Driver March 24, 2004 Kim, ki-hyeon 목차 1. 인터럽트처리복습 1. 인터럽트복습 입력검출방법 인터럽트방식, 폴링 (polling) 방식 인터럽트서비스등록함수 ( 커널에등록 ) int request_irq(unsigned int irq, void(*handler)(int,void*,struct pt_regs*), unsigned
More informationJUNIT 실습및발표
JUNIT 실습및발표 JUNIT 접속 www.junit.org DownLoad JUnit JavaDoc API Document 를참조 JUNIT 4.8.1 다운로드 설치파일 (jar 파일 ) 을다운로드 CLASSPATH 를설정 환경변수에서설정 실행할클래스에서 import JUnit 설치하기 테스트실행주석 @Test Test 를실행할 method 앞에붙임 expected
More information<4D F736F F D20B1E2BCFAC0DAB7E1202D20454F435220B8F0B5E5B9F6BDBA20C5EBBDC5C1A6C7B020BBE7BFEBB9FD202D F302E646F63>
통신설정 1. Parity Bit 가무엇인가요? 어떻게설정해야합니까? 시설치단계에서통신케이블을연결하고, PCON 또는 PDM 등을통해설정을변경하여시스템과연결하고자할때 EOCR 통신제품에서지원하는프로토콜은 Modbus-RTU 로서, 데이터는 8 비트로구성되며, 데이터의무결성을검증하기위하여데이터비트에 parity bit 1 비트를더해서함께보냅니다. Even Parity
More informationMicrosoft PowerPoint - 04-UDP Programming.ppt
Chapter 4. UDP Dongwon Jeong djeong@kunsan.ac.kr http://ist.kunsan.ac.kr/ Dept. of Informatics & Statistics 목차 UDP 1 1 UDP 개념 자바 UDP 프로그램작성 클라이언트와서버모두 DatagramSocket 클래스로생성 상호간통신은 DatagramPacket 클래스를이용하여
More information목차 1. 매뉴얼안내 사용환경 권장사양 Virtual COM for USB Driver 지원모델 소프트웨어설치및삭제 설치 삭제 Configuration Tool
소프트웨어사용설명서 Virtual COM for USB Driver / Configuration Tool Rev. 1.08 SRP-270 / SRP-275 SRP-275II / SRP-280 SRP-350 / SRP-350II SRP-350IIK SRP-350plus / 352plus SRP-350plusII / 352plusII SRP-370 / SRP-372
More informationMicrosoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt
변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short
More informationMicrosoft PowerPoint - chap06-2pointer.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.
More information(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -
(Asynchronous Mode) - - - ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 - UART (Univ ers al As y nchronous Receiver / T rans mitter) 8250A 8250A { COM1(3F8H). - Line Control Register
More informationMicrosoft PowerPoint - (제14강)Win32 API.ppt
14. 파일입출력 1 1. 파일입출력 BOOL ReadFile( HANDLE hfile, LPVOID lpbuffer, DWORD nnumberofbytestoread, LPDWORD lpnumberofbytesread, LPOVERLAPPED lpoverlapped ); hfile : 데이터를읽을대상파일의핸들 lpbuffer : 읽은데이터를저장할버퍼 nnumberofbytestoread
More informationCANTUS Evaluation Board Ap. Note
Preliminary CANTUS - UART - 32bits EISC Microprocessor CANTUS Ver 1. October 8, 29 Advanced Digital Chips Inc. Ver 1. PRELIMINARY CANTUS Application Note( EVM B d ) History 29-1-8 Created Preliminary Specification
More informationUI TASK & KEY EVENT
2007. 2. 5 PLATFORM TEAM 정용학 차례 CONTAINER & WIDGET SPECIAL WIDGET 질의응답및토의 2 Container LCD에보여지는화면한개 1개이상의 Widget을가짐 3 Container 초기화과정 ui_init UMP_F_CONTAINERMGR_Initialize UMP_H_CONTAINERMGR_Initialize
More information2 Mitsubishi FX Series Computer Link MITSUBISHI FX SERIES COMPUTER LINK 시스템구성 시스템설정 사용예 사용예 사용예
Mitsubishi FX Series Computer Link 2 Mitsubishi FX Series Computer Link MITSUBISHI FX SERIES COMPUTER LINK... 1 1. 시스템구성... 3 2. 시스템설정... 4 3. 사용예... 6 3.1. 사용예 1... 6 3.2. 사용예 2... 9 4. 케이블연결도... 13 4.1.
More informationPowerPoint 프레젠테이션
@ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program
More informationUI TASK & KEY EVENT
T9 & AUTOMATA 2007. 3. 23 PLATFORM TEAM 정용학 차례 T9 개요 새로운언어 (LDB) 추가 T9 주요구조체 / 주요함수 Automata 개요 Automata 주요함수 추후세미나계획 질의응답및토의 T9 ( 2 / 30 ) T9 개요 일반적으로 cat 이라는단어를쓸려면... 기존모드 (multitap) 2,2,2, 2,8 ( 총 6번의입력
More informationV. 통신망 기술
오류검출기법 데이터전송오류 (error) 를검출하는기법 메시지전송시오류검출코드를데이터꼬리부분에부착하여전송하고수신측에서는이를사용하여오류발생여부판단 오류검출기법 패리티검사 블록합검사 (block sum check) 순환중복검사 (CRC : Cyclic Redundancy Check) 1 오류검출의기본원리 E= f(data) E,E = 오류검출코드 f = 오류검출함수
More information제8장 자바 GUI 프로그래밍 II
제8장 MVC Model 8.1 MVC 모델 (1/7) MVC (Model, View, Controller) 모델 스윙은 MVC 모델에기초를두고있다. MVC란 Xerox의연구소에서 Smalltalk 언어를바탕으로사용자인터페이스를개발하기위한방법 MVC는 3개의구성요소로구성 Model : 응용프로그램의자료를표현하기위한모델 View : 자료를시각적으로 (GUI 방식으로
More informationAPI 매뉴얼
PCI-TC03 API Programming (Rev 1.0) Windows, Windows2000, Windows NT, Windows XP and Windows 7 are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations
More informationhd1300_k_v1r2_Final_.PDF
Starter's Kit for HelloDevice 1300 Version 11 1 2 1 2 3 31 32 33 34 35 36 4 41 42 43 5 51 52 6 61 62 Appendix A (cross-over) IP 3 Starter's Kit for HelloDevice 1300 1 HelloDevice 1300 Starter's Kit HelloDevice
More information<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>
Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.
More information[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi
2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,
More information다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");
다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher
More information쉽게 풀어쓴 C 프로그래밍
제 5 장생성자와접근제어 1. 객체지향기법을이해한다. 2. 클래스를작성할수있다. 3. 클래스에서객체를생성할수있다. 4. 생성자를이용하여객체를초기화할수 있다. 5. 접근자와설정자를사용할수있다. 이번장에서만들어볼프로그램 생성자 생성자 (constructor) 는초기화를담당하는함수 생성자가필요한이유 #include using namespace
More informationMicrosoft PowerPoint 웹 연동 기술.pptx
웹프로그래밍및실습 ( g & Practice) 문양세강원대학교 IT 대학컴퓨터과학전공 URL 분석 (1/2) URL (Uniform Resource Locator) 프로토콜, 호스트, 포트, 경로, 비밀번호, User 등의정보를포함 예. http://kim:3759@www.hostname.com:80/doc/index.html URL 을속성별로분리하고자할경우
More informationMicrosoft PowerPoint - Chapter 8_USART Serial Communication
MEC382 마이크로프로세서응용및실습 USART Serial Communication Jee-Hwan Ryu School of Mechanical Engineering 통신방법 병렬통신 고속데이터전송이필요한곳에서이루어짐 여러개의라인에서동시에이루어짐 직렬통신 한라인에서이루어짐 데이터의송수신속도가느리다 라인수적고멀리까지통신 동기식, 비동기식있음 동기식 : 기준클럭인동기클럭라인과데이터송
More informationMicrosoft PowerPoint - Chap12-OOP.ppt
객체지향프로그래밍 (Object Oriented Programming) 12 장강사 강대기 차례 (Agenda) 멤버에대한동적메모리할당 암시적 / 명시적복사생성자 암시적 / 명시적오버로딩대입연산자 생성자에 new 사용하기 static 클래스멤버 객체에위치지정 new 사용하기 객체를지시하는포인터 StringBad 클래스 멤버에포인터사용 str static 멤버
More informationMicrosoft PowerPoint - ch07 - 포인터 pm0415
2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자
More informationMicrosoft PowerPoint - chap13-입출력라이브러리.pptx
#include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 스트림의 기본 개념을 알아보고,
More informationSRC PLUS 제어기 MANUAL
,,,, DE FIN E I N T R E A L L O C E N D SU B E N D S U B M O TIO
More information쉽게 풀어쓴 C 프로그래밍
제 13 장파일처리 1. 스트림의개념을이해한다. 2. 객체지향적인방법을사용하여파일입출력을할수있다. 3. 텍스트파일과이진파일의차이점을이해한다. 4. 순차파일과임의접근파일의차이점을이해한다. 이번장에서만들어볼프로그램 스트림 (stream) 스트림 (stream) 은 순서가있는데이터의연속적인흐름 이다. 스트림은입출력을물의흐름처럼간주하는것이다. 입출력관련클래스들 파일쓰기
More informationadfasdfasfdasfasfadf
C 4.5 Source code Pt.3 ISL / 강한솔 2019-04-10 Index Tree structure Build.h Tree.h St-thresh.h 2 Tree structure *Concpets : Node, Branch, Leaf, Subtree, Attribute, Attribute Value, Class Play, Don't Play.
More informationPowerPoint Presentation
Package Class 1 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section
More informationJAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각
JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.
More information<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >
10주차 문자 LCD 의인터페이스회로및구동함수 Next-Generation Networks Lab. 5. 16x2 CLCD 모듈 (HY-1602H-803) 그림 11-18 19 핀설명표 11-11 번호 분류 핀이름 레벨 (V) 기능 1 V SS or GND 0 GND 전원 2 V Power DD or V CC +5 CLCD 구동전원 3 V 0 - CLCD 명암조절
More informationThe Pocket Guide to TCP/IP Sockets: C Version
얇지만얇지않은 TCP/IP 소켓프로그래밍 C 2 판 4 장 UDP 소켓 제 4 장 UDP 소켓 4.1 UDP 클라이언트 4.2 UDP 서버 4.3 UDP 소켓을이용한데이터송싞및수싞 4.4 UDP 소켓의연결 UDP 소켓의특징 UDP 소켓의특성 싞뢰할수없는데이터젂송방식 목적지에정확하게젂송된다는보장이없음. 별도의처리필요 비연결지향적, 순서바뀌는것이가능 흐름제어 (flow
More informationMicrosoft PowerPoint - chap10-함수의활용.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 중 값에 의한 전달 방법과
More information1 1. INTRODUCTION 2 2. DOWNLOAD Windows Desktop & Server Max OS X, Linux, Windows CE 2 3. API REFERENCE CAN_OpenVcp CAN_Op
USB2CAN USB2CAN-VCP USB2CAN-FIFO API Reference Manual ver. 1.00 Updated in November 2013 1 1. INTRODUCTION 2 2. DOWNLOAD 2 2-1. Windows Desktop & Server 2 2-2. Max OS X, Linux, Windows CE 2 3. API REFERENCE
More informationLab 4. 실습문제 (Circular singly linked list)_해답.hwp
Lab 4. Circular singly-linked list 의구현 실험실습일시 : 2009. 4. 6. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 12. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Circular Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Circular
More informationC# Programming Guide - Types
C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든
More informationPowerPoint Presentation
Package Class 3 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section
More informationLab 3. 실습문제 (Single linked list)_해답.hwp
Lab 3. Singly-linked list 의구현 실험실습일시 : 2009. 3. 30. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 5. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Singly-linked list의각함수를구현한다.
More informationMicrosoft PowerPoint 자바-기본문법(Ch2).pptx
자바기본문법 1. 기본사항 2. 자료형 3. 변수와상수 4. 연산자 1 주석 (Comments) 이해를돕기위한설명문 종류 // /* */ /** */ 활용예 javadoc HelloApplication.java 2 주석 (Comments) /* File name: HelloApplication.java Created by: Jung Created on: March
More information(SW3704) Gingerbread Source Build & Working Guide
(Mango-M32F4) Test Guide http://www.mangoboard.com/ http://cafe.naver.com/embeddedcrazyboys Crazy Embedded Laboratory www.mangoboard.com cafe.naver.com/embeddedcrazyboys CRZ Technology 1 Document History
More information임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과
임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수
More informationMicrosoft Word _whitepaper_latency_throughput_v1.0.1_for_
Sena Technologies 백서 : Latency/Throughput Test September 11, 2008 Copyright Sena Technologies, Inc 2008 All rights strictly reserved. No part of this document may not be reproduced or distributed without
More informationvar answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");
자바스크립트 (JavaScript) - HTML 은사용자에게인터페이스 (interface) 를제공하는언어 - 자바스크립트는서버로데이터를전송하지않고서할수있는데이터처리를수행한다. - 자바스크립트는 HTML 나 JSP 에서작성할수있고 ( 내부스크립트 ), 별도의파일로도작성이가능하다 ( 외 부스크립트 ). - 내부스크립트 - 외부스크립트
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include
More informationPowerPoint 프레젠테이션
Verilog: Finite State Machines CSED311 Lab03 Joonsung Kim, joonsung90@postech.ac.kr Finite State Machines Digital system design 시간에배운것과같습니다. Moore / Mealy machines Verilog 를이용해서어떻게구현할까? 2 Finite State
More information歯처리.PDF
E06 (Exception) 1 (Report) : { $I- } { I/O } Assign(InFile, InputName); Reset(InFile); { $I+ } { I/O } if IOResult 0 then { }; (Exception) 2 2 (Settling State) Post OnValidate BeforePost Post Settling
More informationMicrosoft PowerPoint - a10.ppt [호환 모드]
Structure Chapter 10: Structures t and Macros Structure 관련된변수들의그룹으로이루어진자료구조 template, pattern field structure를구성하는변수 (cf) C언어의 struct 프로그램의 structure 접근 entire structure 또는 individual fields Structure는
More information설계란 무엇인가?
금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 16 강. 파일입출력목차 파일입출력기초 파일입출력모드 텍스트파일과이진파일 이진파일입출력 임의접근 1 /18 16 강. 파일입출력파일입출력기초 파일입출력과정 파일스트림객체생성 파일열기 사용 : 기본적으로표준입출력객체 (cin, cout) 사용방법과동일 파일닫기 파일스트림클래스의종류
More information슬라이드 제목 없음
ETOS-DPS-X Guide AC&T SYSTEM 1 ETOS-DPS-X 개요 ETOS-DPS-X Field Bus Network 중 Profibus-DP Network 에연결되는장비. ProfiBus-DP Network 시스템에 DP 통신을지원하지않는현장장비에대한통신서버기능구현. Profibus-DP Slave 동작하기때문에반드시 DP-Master 모듈이있는시스템에서적용가능.
More information학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2
학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 6.1 함수프로시저 6.2 서브프로시저 6.3 매개변수의전달방식 6.4 함수를이용한프로그래밍 3 프로시저 (Procedure) 프로시저 (Procedure) 란무엇인가? 논리적으로묶여있는하나의처리단위 내장프로시저 이벤트프로시저, 속성프로시저, 메서드, 비주얼베이직내장함수등
More information<4D F736F F F696E74202D E20B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D62E >
웹프로그래밍및실습 ( g & Practice) 문양세강원대학교 IT 대학컴퓨터과학전공 소켓 (Socket) (1/2) Socket 이란? 서버와클라이언트가서로특정한규약을사용하여데이터를전송하기위한방식 서버와클라이언트는소켓연결을기다렸다가소켓이연결되면서로데이터를전송 현재네트워크상에서의모든통신의근간은 Socket 이라할수있음 Page 2 1 소켓 (Socket) (2/2)
More information트레이 아이콘 어플리케이션의 제작
트레이아이콘어플리케이션의제작 (Creating Tray Icon Application) 윈도우 95 와 NT 4.0 에는작업바의우측에작업트레이라는부분이있다. 여기에있는아이콘은현재데스크탑에서실행되고있는윈도우를가지고있는어플리케이션이라기보다는도스시절에있었던램상주프로그램과비슷한역할을하는것이많다. 이번장에서는트레이에상주하는어플리케이션을제작하는방법에대해서알아보자. Shell_NotifyIcon
More information<4D F736F F D20C5D7C6AEB8AEBDBA20B0D4C0D320B8B8B5E9B1E22E646F63>
Chapter 0 테트리스게임만들기 본강좌의목적은테트리스게임자체보다는사용자인터페이스와논리구조를분리하여분석 / 설계하고코딩하는과정을설명하기위한것이다. 특히 BDS 2006에서새로추가된 Together for Delphi를이용하여보다쉽게객체지향적설계를실제업무에도입하는과정을설명하고자한다. 1 단계 UI 와 Logic 의분리 이번강좌에서는필자가원래사용하던문서작성법이아닌클래스다이어그램만으로기능설계와구조설계를병행하도록하겠다.
More information<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>
게임엔진 제 4 강프레임리스너와 OIS 입력시스템 이대현교수 한국산업기술대학교게임공학과 학습내용 프레임리스너의개념 프레임리스너를이용한엔터티의이동 OIS 입력시스템을이용한키보드입력의처리 게임루프 Initialization Game Logic Drawing N Exit? Y Finish 실제게임루프 오우거엔진의메인렌더링루프 Root::startRendering()
More informationUSB-AIO11 API
NET-AIO11 API Programming (Rev 1.0) Windows, Windows2000, Windows NT, Windows XP and Windows 7 are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations
More informationA Hierarchical Approach to Interactive Motion Editing for Human-like Figures
단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct
More information이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론
이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론 2. 관련연구 2.1 MQTT 프로토콜 Fig. 1. Topic-based Publish/Subscribe Communication Model. Table 1. Delivery and Guarantee by MQTT QoS Level 2.1 MQTT-SN 프로토콜 Fig. 2. MQTT-SN
More information2주차: 입출력 제어 복습
마이크로프로세서 응용및실습 ` 13-14 주차 : 직렬통신 (2) 한철수 전자공학과 2/35 직렬통신과병렬통신 직렬통신 한가닥의선으로송수신할데이터를차례대로전송하는방식 장점 : 통신선로가적기때문에경제적임 단점 : 전송속도가느림. 송수신약속이복잡해짐 병렬통신 여러가닥의선으로동시에여러개의데이터를전송하는방식 장점 : 전송속도가빠름 단점 : 직렬통신보다비쌈 3/35
More informationDesign Issues
11 COMPUTER PROGRAMMING INHERIATANCE CONTENTS OVERVIEW OF INHERITANCE INHERITANCE OF MEMBER VARIABLE RESERVED WORD SUPER METHOD INHERITANCE and OVERRIDING INHERITANCE and CONSTRUCTOR 2 Overview of Inheritance
More informationMicrosoft PowerPoint - AVR 시리얼 통신.ppt [호환 모드]
AVR UART 통신 류대우 davidryu@newtc.co.kr 시리얼 (Serial) 통신이란? Serial 통신은하나의신호선을이용해서데이터를비트단위로보내는방식 8 비트비동기식통신콘트롤러 (UART : Universal Asynchronous Receiver Transmitter) 데이터는 LSB 부터 MSB 순으로데이터전송 Serial interface
More informationAPI - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어
메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어서가장중요한부분이라고도할수있기때문입니다. 1. 새로운메크로생성 새메크로만들기버튺을클릭하여파일을생성합니다. 2. 메크로저장 -
More information2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.
10 차시파일처리 1 학습목표 내장메모리의파일을처리하는방법을배운다. SD 카드의파일을처리하는방법을배운다. 2 확인해볼까? 3 내장메모리파일처리 1) 학습하기 [ 그림 10-1] 내장메모리를사용한파일처리 2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1
More information슬라이드 1
-Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역
More informationPowerPoint 프레젠테이션
@ Lesson 3 if, if else, if else if, switch case for, while, do while break, continue : System.in, args, JOptionPane for (,, ) @ vs. logic data method variable Data Data Flow (Type), ( ) @ Member field
More informationPowerPoint Presentation
객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean
More informationFrama-C/JESSIS 사용법 소개
Frama-C 프로그램검증시스템소개 박종현 @ POSTECH PL Frama-C? C 프로그램대상정적분석도구 플러그인구조 JESSIE Wp Aorai Frama-C 커널 2 ROSAEC 2011 동계워크샵 @ 통영 JESSIE? Frama-C 연역검증플러그인 프로그램분석 검증조건추출 증명 Hoare 논리에기초한프로그램검증도구 사용법 $ frama-c jessie
More informationchap 5: Trees
5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경
More informationPowerPoint 프레젠테이션
System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소
More information[Immunity Debugger & Python (Part 1)] Written by Osiris ( , msn by beistlab(
[Immunity Debugger & Python (Part 1)] Written by Osiris (email, msn mins4416@naver.com) by beistlab(http://beist.org) Synopsis Immunity Debugger는 Python을플러그인형태로지원하고있습니다. 이 2개를연동할경우강력한 Reverse Engineering
More informationMicrosoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx
2018 학년도 1 학기 JAVA 프로그래밍 II 514760-1 2018 년봄학기 5/10/2018 박경신 Lab#1 (ImageTest) Lab#1 은영상파일 (Image) 을읽어서정보를출력 Java Tutorials Lesson: Working with Images https://docs.oracle.com/javase/tutorial/2d/images/index.html
More information- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localentitymanagerfactorybean" p:persistenceunitname=
JPA 와 Hibernate - 스프링의 JDBC 대신에 JPA를이용한 DB 데이터검색작업 - JPA(Java Persistence API) 는자바의 O/R 매핑에대한표준지침이며, 이지침에따라설계된소프트웨어를 O/R 매핑프레임워크 라고한다. - O/R 매핑 : 객체지향개념인자바와관계개념인 DB 테이블간에상호대응을시켜준다. 즉, 객체지향언어의인스턴스와관계데이터베이스의레코드를상호대응시킨다.
More information어댑터뷰
04 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adatper View) 란? u 어댑터뷰의항목하나는단순한문자열이나이미지뿐만아니라, 임의의뷰가될수 있음 이미지뷰 u 커스텀어댑터뷰설정절차 1 2 항목을위한 XML 레이아웃정의 어댑터정의 3 어댑터를생성하고어댑터뷰객체에연결
More information<4D F736F F F696E74202D20C1A63236C0E520BED6C7C3B8B428B0ADC0C729205BC8A3C8AF20B8F0B5E55D>
Power Java 제 26 장애플릿 이번장에서학습할내용 애플릿소개 애플릿작성및소개 애플릿의생명주기 애플릿에서의그래픽컴포넌트의소개 Applet API의이용 웹브라우저상에서실행되는작은프로그램인애플릿에대하여학습합니다. 애플릿이란? 애플릿은웹페이지같은 HTML 문서안에내장되어실행되는자바프로그램이다. 애플릿을실행시키는두가지방법 1. 웹브라우저를이용하는방법 2. Appletviewer를이용하는방법
More information<4D F736F F F696E74202D205BBDC7BDC0345DC1B6B5B5BCBEBCADC1A6BEEE2E BC8A3C8AF20B8F0B5E55D>
조도센서제어 이번장에서는 ZigbeX 에장치되어있는센서들중에서조도센서에대해공부하고, TinyOS의 Oscilloscope 프로그램을통해측정된조도값을확인하는방법에대해알아보도록하겠다. 한백전자 ZigbeX 의조도센서 2 ZigbeX 의조도센서 조도센서 CDS ZigbeX에장치되어있는조도센서 CDS는 Atmega 128(ZigbeX의 8bit CPU) 의 INT0
More information쉽게 풀어쓴 C 프로그래밍
제 3 장함수와문자열 1. 함수의기본적인개념을이해한다. 2. 인수와매개변수의개념을이해한다. 3. 함수의인수전달방법 2가지를이해한다 4. 중복함수를이해한다. 5. 디폴트매개변수를이해한다. 6. 문자열의구성을이해한다. 7. string 클래스의사용법을익힌다. 이번장에서만들어볼프로그램 함수란? 함수선언 함수호출 예제 #include using
More informationDCL Debugging Support
DCL Runtime Debugging Support 2005.06.08 김대중 http://www.sysdeveloper.net/daejung 요약 버그없는소프트웨어를개발하는것은결코쉬운일이아니다. 대부분의상업적개발도구들이소스프로그램을추적할수있도록하는디버깅환경을제공하고있고이러한것들은단위함수들을디버깅하는데있어서매우유용한건사실이다.
More information슬라이드 1
Pairwise Tool & Pairwise Test NuSRS 200511305 김성규 200511306 김성훈 200614164 김효석 200611124 유성배 200518036 곡진화 2 PICT Pairwise Tool - PICT Microsoft 의 Command-line 기반의 Free Software www.pairwise.org 에서다운로드후설치
More informationMicrosoft PowerPoint 세션.ppt
웹프로그래밍 () 2006 년봄학기 문양세강원대학교컴퓨터과학과 세션변수 (Session Variable) (1/2) 쇼핑몰장바구니 장바구니에서는사용자가페이지를이동하더라도장바구니의구매물품리스트의내용을유지하고있어야함 PHP 에서사용하는일반적인변수는스크립트의수행이끝나면모두없어지기때문에페이지이동시변수의값을유지할수없음 이러한문제점을해결하기위해서 PHP 에서는세션 (session)
More information-. Data Field 의, 개수, data 등으로구성되며, 각 에따라구성이달라집니다. -. Data 모든 의 data는 2byte로구성됩니다. Data Type는 Integer, Float형에따라다르게처리됩니다. ( 부호가없는 data 0~65535 까지부호가있는
Dong Yang E&P 인버터 Modbus Monitoring Protocol 2018. 08. 27 Sun Spec (Modbus-RTU) -. Modbus Protocol 각 Field에대한설명 Frame갂의구별을위한최소한의시갂 BaudRate 9600에서 1bit 젂송시갂은 Start 0.104msec, (3.5 character Times, 1 Character
More informationMicrosoft PowerPoint - e pptx
Import/Export Data Using VBA Objectives Referencing Excel Cells in VBA Importing Data from Excel to VBA Using VBA to Modify Contents of Cells 새서브프로시저작성하기 프로시저실행하고결과확인하기 VBA 코드이해하기 Referencing Excel Cells
More information목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate
ALTIBASE HDB 6.1.1.5.6 Patch Notes 목차 BUG-39240 offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG-41443 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate 한뒤, hash partition
More information 메소드 오버로딩
객체지향언어로서의오브젝트파스칼 (Object Pascal As A OOP) 오브젝트파스칼의객체지향성을몰라도델파이어플리케이션을쉽게만들수있다. 단순히폼을하나만들고, 거기에여러가지컴포넌트들을추가하고, 이벤트핸들러에적당한내용의코드들을추가하면그걸로충분한것이다. 그렇지만, 이것을이해하면델파이가어떤방법으로작업을처리하는지이해할수있고, 자신만의컴포넌트를만들어내거나, 비교적커다란프로젝트를진행할때에커다란도움을받게될것이다.
More informationSOFTBASE XFRAME DEVELOPMENT GUIDE SERIES ActiveX 컴포넌트가이드 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone Fax
SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES 2012.02.18 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone 02-2108-8030 Fax 02-2108-8031 www.softbase.co.kr Copyright 2010 SOFTBase Inc. All rights reserved 목차 1 장 : ActiveX
More information제품 설명
1 절 제목 페이지 1.1 CP 341의사용 1-2 1.2 CP 341과의지점간연결에필요한컴포넌트 1-4 1.3 CP 341의설계 1-6 1.4 직렬인터페이스의속성 1-8 1.5 CP 341의통신파트너연결에사용되는케이블 1-12 지점간통신 CP 341 1-1 1.1 CP 341 의사용 CP 341 통신프로세서를사용하면지점간연결을통해프로그래머블컨트롤러나 컴퓨터사이에서데이터를교환할수있습니다.
More information<4D F736F F F696E74202D20C1A63234C0E520C0D4C3E2B7C228B0ADC0C729205BC8A3C8AF20B8F0B5E55D>
Power Java 제 24 장입출력 이번장에서학습할내용 스트림이란? 스트림의분류 바이트스트림 문자스트림 형식입출력 명령어행에서입출력 파일입출력 스트림을이용한입출력에대하여살펴봅시다. 스트림 (stream) 스트림 (stream) 은 순서가있는데이터의연속적인흐름 이다. 스트림은입출력을물의흐름처럼간주하는것이다. 스트림들은연결될수있다. 중간점검문제 1. 자바에서는입출력을무엇이라고추상화하는가?
More information<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>
SIMATIC S7 Siemens AG 2004. All rights reserved. Date: 22.03.2006 File: PRO1_17E.1 차례... 2 심벌리스트... 3 Ch3 Ex2: 프로젝트생성...... 4 Ch3 Ex3: S7 프로그램삽입... 5 Ch3 Ex4: 표준라이브러리에서블록복사... 6 Ch4 Ex1: 실제구성을 PG 로업로드하고이름변경......
More information구조화 저장소 기법
구조화저장소기법 (Structured Storage Technique) 만약정해진포맷의파일형식을써야하는것이아니라, 데이터를저장할때대단히유연하고도강력한방법이존재한다면얼마나편리할까? 구조화저장 (structured storage) 이라는새로운방식으로이러한문제를해결할수있다. 구조화저장은 DocFIle 이나 OLE 복합파일 (OLE compound file) 이라는이름으로도불리고있는새로운저장방식이다.
More informationMicrosoft PowerPoint - chap03-변수와데이터형.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num %d\n", num); return 0; } 1 학습목표 의 개념에 대해 알아본다.
More information