::: µ¨ÆÄÀÌ Tip&Trick :::

µ¨ÆÄÀÌ Tip&Trick ¼º°Ý¿¡ ¸ÂÁö ¾Ê´Â ±¤°í,ºñ¹æ,Áú¹®ÀÇ ±ÛÀº Áï½Ã »èÁ¦Çϸç
³»¿ëÀ» º¹»çÇÏ¿© »ç¿ëÇÒ °æ¿ì ¹Ýµå½Ã ÀÌ°÷(http://www.howto.pe.kr)À» Ãâó·Î ¸í½ÃÇÏ¿© ÁÖ¼¼¿ä


Category

  ±è¿µ´ë(2003-03-07 20:18:30, Hit : 7489, Vote : 1907
 Serial Port »ç¿ëÇϱâ

unit CommExample;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs,
  StdCtrls, ExtCtrls;

type
   TCommDemoObject = class(TObject)

   private
   public

       commPortHandle:THandle;
       dcbInfo:Tdcb;
       errorFlag:Boolean;

       commPortError:DWORD;
       commPortStatus:TComStat;

       numberOfCharsActuallyWritten:DWORD;
//       numberOfCharsToRead:DWORD;
       numberOfCharsActuallyRead:DWORD;

       commPortInputBuffer:array[0..100] of Char;

       commPortOpen:Boolean;


       function    OpenCommPort(whichPort:String):Boolean;
       procedure   CloseCommPort;

       procedure   TransmitSingleChar(theChar:Char);
       procedure   TransmitString(theString:String);

       function    ReadCommPort:Integer;
   end;

implementation


function  TCommDemoObject.OpenCommPort(whichPort:String):Boolean;
begin
   // undo comm port if open
   if (commPortOpen) then
       CloseCommPort();
   // set flag state
   commPortOpen:=false;
   // open COMM port
   // use 'COM1','COM2','COM3', and 'COM4' to choose which port
   // to open
   commPortHandle:=CreateFile(PChar(whichPort),GENERIC_READ OR
GENERIC_WRITE,0,
       nil,OPEN_EXISTING,0,0);
//   commPortHandle:=CreateFile('COM1',GENERIC_READ OR GENERIC_WRITE,0,
//       nil,OPEN_EXISTING,0,0);
   // exit on failure
   if (commPortHandle=INVALID_HANDLE_VALUE) then
       begin
           Result:=false;
           exit;
       end;
   // get comm port state
   errorFlag:=GetCommState(commPortHandle,dcbInfo);
   // bail on failure
   if (NOT(errorFlag)) then
       begin
           CloseHandle(commPortHandle);
           Result:=false;
           exit;
       end;
   // setup COMM port settings
   dcbInfo.BaudRate:=9600;
   dcbInfo.ByteSize:=8;
   dcbInfo.Parity:=NOPARITY;
   dcbInfo.StopBits:=ONESTOPBIT;
   // set COMM port state
   errorFlag:=SetCommState(commPortHandle,dcbInfo);
   // bail on failure
   if (NOT(errorFlag)) then
       begin
           CloseHandle(commPortHandle);
           Result:=false;
           exit;
       end;
   // show opened port
   ShowMessage('Opened Comm Port: ' + whichPort);
   // set flag
   commPortOpen:=true;
   // set flag
   Result:=true;
end;

procedure  TCommDemoObject.CloseCommPort;
begin
   // close comm port handle
   CloseHandle(commPortHandle);
end;

procedure  TCommDemoObject.TransmitSingleChar(theChar:Char);
label
   CHECKSTATUS;
begin
//   // you can use escape function to manually raise/lower DTR
//   EscapeCommFunction(commPortHandle,SETDTR);
//   EscapeCommFunction(commPortHandle,CLRDTR);
//   // you can use escape function to manaully raise/lower RTS
//   EscapeCommFunction(commPortHandle,SETRTS);
//   EscapeCommFunction(commPortHandle,CLRRTS);
   // transmit char
   TransmitCommChar(commPortHandle,theChar);
   // wait for char to exit 1 char buffer
CHECKSTATUS:
   ClearCommError(commPortHandle,commPortError,@commPortStatus);
   if ( fTxim in commPortStatus.Flags) then
       begin;
           // read status again
           goto CHECKSTATUS;
       end;
end;

procedure  TCommDemoObject.TransmitString(theString:String);
var
   charBuffer:array[0..100] of Char;
begin
   // convert string to chars
   StrPCopy(charBuffer,theString);
   // send string to comm port
   WriteFile(commPortHandle,charBuffer,Length(theString),
       numberOfCharsActuallyWritten,nil);
end;

function  TCommDemoObject.ReadCommPort:Integer;
begin
   // read comm port status
   ClearCommError(commPortHandle,commPortError,@commPortStatus);
   // check input buffer count
   if (commPortStatus.cbInQue>0) then
       ReadFile(commPortHandle,commPortInputBuffer,
           commPortStatus.cbInQue,numberOfCharsActuallyRead,nil);
   // set number of chars actually read
   Result:=numberOfCharsActuallyRead;
end;

end.





451   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ÆÄÀÏÀÇ º¯°æ/»ý¼º/»ç¿ëÇÑ ³¯Â¥ ¹Ù²Ù±â  ±è¿µ´ë 2003/03/07 5445 1382
450   [½Ã½ºÅÛ] ¼³Ä¡µÈ modem ¸®½ºÆ® ±¸ÇÏ±â  ±è¿µ´ë 2003/03/07 5447 1581
449   [À©µµ¿ìÁî API] Windows 3.1x/32s/95/98/NT ±¸ºÐÇÏ±â  ±è¿µ´ë 2003/03/07 3500 1002
448   [½Ã½ºÅÛ] WM_COPYDATA ¸Þ½ÃÁö¸¦ »ç¿ëÇÑ IPC  ±è¿µ´ë 2003/03/07 7273 1787
447   [½Ã½ºÅÛ] ¸¶¿ì½ºÀÇ ÁÂ,¿ì ¹öÆ°ÀÇ µ¿ÀÛ ¹Ù²Ù±â  ±è¿µ´ë 2003/03/07 4792 1312
446   [À©µµ¿ìÁî API] windowÀÇ maximize, minimize ¾Ë¾Æ³»±â  ±è¿µ´ë 2003/03/07 5326 1432
445   [½Ã½ºÅÛ] WM_COPYDATA ¸Þ½ÃÁö¸¦ »ç¿ëÇÑ IPC 2  ±è¿µ´ë 2003/03/07 6513 1856
444   [À©µµ¿ìÁî API] µ¥½ºÅ©Å¾ ¾ÆÀÌÄÜ ÀüºÎ °¨Ãß±â/º¸ÀÌ±â  ±è¿µ´ë 2003/03/07 4474 1318
443   [À©µµ¿ìÁî API] ¹ÙÅÁÈ­¸é, ½ÃÀÛ¸Þ´º icon ¼û±â±â  ±è¿µ´ë 2003/03/07 5818 1417
442   [½Ã½ºÅÛ] ¸¶¿ì½º°¡ ¼³Ä¡µÇ¾î ÀÖ´ÂÁö °Ë»çÇÏ±â  ±è¿µ´ë 2003/03/07 7459 2004
441   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] MemoÀÇ ÀÔ·Â Çà¼ö/¿­¼ö Á¦ÇÑÇÏ±â  ±è¿µ´ë 2003/03/07 4199 1384
440   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] À©µµ¿ìÁî ÆÄÀϸíÀÇ ¹«È¿ÇÑ ±¸¼º¹®ÀÚ  ±è¿µ´ë 2003/03/07 5190 1596
439   [½Ã½ºÅÛ] ÆÄÀÏÀÌ ´Ù¸¥ ÇÁ·Î±×·¥¿¡ ÀÇÇØ »ç¿ëÁßÀÎÁö °Ë»ç  ±è¿µ´ë 2003/03/07 6935 1640
438   [½Ã½ºÅÛ] ÀÏÁ¤½Ã°£ °æ°úÈÄ ¾ø¾îÁö´Â MessageBox  ±è¿µ´ë 2003/03/07 7949 1556
437   [½Ã½ºÅÛ] CPU speed ±¸Çϱâ 2  ±è¿µ´ë 2003/03/07 4754 1315
436   [³×Æ®¿÷/ÀÎÅͳÝ] LAN ¿¡ Á¢¼ÓÇß´ÂÁö °Ë»çÇÏ±â  ±è¿µ´ë 2003/03/07 5038 1357
435   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] TIFF Images and manipulation  ±è¿µ´ë 2003/03/07 5763 1448
434   [½Ã½ºÅÛ] reboot 95/98/NT  ±è¿µ´ë 2003/03/07 5093 1448
433   [³×Æ®¿÷/ÀÎÅͳÝ] Ethernet ·£Ä«µåÀÇ MAC adress ±¸ÇÏ±â  ±è¿µ´ë 2003/03/07 8003 2326
  [³×Æ®¿÷/ÀÎÅͳÝ] Serial Port »ç¿ëÇÏ±â  ±è¿µ´ë 2003/03/07 7489 1907
431   [À©µµ¿ìÁî API] IEÀÇ ÇöÀç url °¡Á®¿À±â  ±è¿µ´ë 2003/03/07 5251 1312
430   [½Ã½ºÅÛ] DOS-matrix ÇÁ¸°ÅÍ¿¡ ÀμâÇÏ±â  ±è¿µ´ë 2003/03/07 5267 1370
429   [À©µµ¿ìÁî API] À©µµ¿ìÁî "½ÃÀÛ" ¸Þ´º¸¦ ³» ÇÁ·Î±×·¥ ¾ÈÀ¸·Î...  ±è¿µ´ë 2003/03/07 5150 1423
428   [À©µµ¿ìÁî API] ¸ðµç âÀ» ¾ÆÀÌÄÜ Ç¥½Ã/Ãë¼Ò  ±è¿µ´ë 2003/03/07 4893 1386
427   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] RichEdit È­¸é¿¡ º¸¿©Áö´Â ù¹ø°/¸¶Áö¸· Çà¹øÈ£  ±è¿µ´ë 2003/03/07 6101 1596
426   [³×Æ®¿÷/ÀÎÅͳÝ] ³×Æ®¿öÅ© ÄÄÇ»ÅÍ°¡ Á¸ÀçÇÏ´ÂÁö °Ë»çÇÏ±â  ±è¿µ´ë 2003/03/07 5447 1424
425   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ÅؽºÆ® ÆÄÀÏ ÇÕÄ¡±â(Merging)  ±è¿µ´ë 2003/03/07 5762 1346
424   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] TRichEdit¸¦ »ç¿ëÇÑ syntax highlighting ¿¹Á¦  ±è¿µ´ë 2003/03/07 7106 1902
423   [³×Æ®¿÷/ÀÎÅͳÝ] NetMask ¾Ë¾Æ³»±â  ±è¿µ´ë 2003/03/07 7768 2004
422   [À©µµ¿ìÁî API] ApplicationÀÇ ÃÖ¼ÒÈ­½Ã Zooming È¿°ú ÁÖ±â2  ±è¿µ´ë 2003/03/07 13943 1660
421   [½Ã½ºÅÛ] driveÀÇ ÀϷùøÈ£ ¹Ù²Ù±â  ±è¿µ´ë 2003/03/07 7149 1729
420   [½Ã½ºÅÛ] CPUÀÇ »ç¿ë·ü ±¸ÇÏ±â  ±è¿µ´ë 2003/03/07 5541 3411
419   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ¼ýÀÚÀÇ ±Ù»çÄ¡ ±¸ÇÏ±â  ±è¿µ´ë 2003/03/07 4699 1279
418   [À©µµ¿ìÁî API] How to flush key buffer  ±è¿µ´ë 2003/03/07 5143 1384
417   [COM/OLE] À©µµ¿ìÁî ½ÃÀÛÀÇ "½ÇÇà" È­¸é ¶ç¿ì±â  ±è¿µ´ë 2003/03/07 4476 1268
416   [À©µµ¿ìÁî API] ÀÛ¾÷°ü¸®ÀÚÀÇ task switching ±ÝÁö½ÃÅ°±â  ±è¿µ´ë 2003/03/07 5252 1383
415   [³×Æ®¿÷/ÀÎÅͳÝ] ÀÎÅͳݿ¡ LAN ¶Ç´Â ModemÀ¸·Î Á¢¼ÓÁßÀÎÁö °Ë»ç  ±è¿µ´ë 2003/03/07 5658 1574
414   [À©µµ¿ìÁî API] Window Handle ·Î ½ÇÇàÆÄÀÏ¸í ±¸ÇÏ±â  ±è¿µ´ë 2003/03/07 5463 1491
413   [³×Æ®¿÷/ÀÎÅͳÝ] Getting Novell Netware Login NAME  ±è¿µ´ë 2003/03/07 4143 1149
412   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ListBoxÀÇ È­¸é¿¡ º¸¿©Áö´Â ÃÖ»óÀ§ Item ¹øÈ£  ±è¿µ´ë 2003/03/07 4833 1299

[ÀÌÀü 10°³] [1]..[11][12][13] 14 [15][16][17][18][19][20]..[25] [´ÙÀ½ 10°³]
 

Copyright 1999-2025 Zeroboard / skin by zero