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

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


Category

  ±è¿µ´ë(2003-03-07 20:18:30, Hit : 7426, Vote : 1886
 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 5372 1344
450   [½Ã½ºÅÛ] ¼³Ä¡µÈ modem ¸®½ºÆ® ±¸ÇÏ±â  ±è¿µ´ë 2003/03/07 5367 1539
449   [À©µµ¿ìÁî API] Windows 3.1x/32s/95/98/NT ±¸ºÐÇÏ±â  ±è¿µ´ë 2003/03/07 3436 976
448   [½Ã½ºÅÛ] WM_COPYDATA ¸Þ½ÃÁö¸¦ »ç¿ëÇÑ IPC  ±è¿µ´ë 2003/03/07 7185 1746
447   [½Ã½ºÅÛ] ¸¶¿ì½ºÀÇ ÁÂ,¿ì ¹öÆ°ÀÇ µ¿ÀÛ ¹Ù²Ù±â  ±è¿µ´ë 2003/03/07 4730 1286
446   [À©µµ¿ìÁî API] windowÀÇ maximize, minimize ¾Ë¾Æ³»±â  ±è¿µ´ë 2003/03/07 5228 1385
445   [½Ã½ºÅÛ] WM_COPYDATA ¸Þ½ÃÁö¸¦ »ç¿ëÇÑ IPC 2  ±è¿µ´ë 2003/03/07 6427 1811
444   [À©µµ¿ìÁî API] µ¥½ºÅ©Å¾ ¾ÆÀÌÄÜ ÀüºÎ °¨Ãß±â/º¸ÀÌ±â  ±è¿µ´ë 2003/03/07 4400 1282
443   [À©µµ¿ìÁî API] ¹ÙÅÁÈ­¸é, ½ÃÀÛ¸Þ´º icon ¼û±â±â  ±è¿µ´ë 2003/03/07 5698 1353
442   [½Ã½ºÅÛ] ¸¶¿ì½º°¡ ¼³Ä¡µÇ¾î ÀÖ´ÂÁö °Ë»çÇÏ±â  ±è¿µ´ë 2003/03/07 7390 1973
441   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] MemoÀÇ ÀÔ·Â Çà¼ö/¿­¼ö Á¦ÇÑÇÏ±â  ±è¿µ´ë 2003/03/07 4133 1350
440   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] À©µµ¿ìÁî ÆÄÀϸíÀÇ ¹«È¿ÇÑ ±¸¼º¹®ÀÚ  ±è¿µ´ë 2003/03/07 5116 1565
439   [½Ã½ºÅÛ] ÆÄÀÏÀÌ ´Ù¸¥ ÇÁ·Î±×·¥¿¡ ÀÇÇØ »ç¿ëÁßÀÎÁö °Ë»ç  ±è¿µ´ë 2003/03/07 6835 1589
438   [½Ã½ºÅÛ] ÀÏÁ¤½Ã°£ °æ°úÈÄ ¾ø¾îÁö´Â MessageBox  ±è¿µ´ë 2003/03/07 7880 1527
437   [½Ã½ºÅÛ] CPU speed ±¸Çϱâ 2  ±è¿µ´ë 2003/03/07 4666 1275
436   [³×Æ®¿÷/ÀÎÅͳÝ] LAN ¿¡ Á¢¼ÓÇß´ÂÁö °Ë»çÇÏ±â  ±è¿µ´ë 2003/03/07 4956 1317
435   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] TIFF Images and manipulation  ±è¿µ´ë 2003/03/07 5579 1405
434   [½Ã½ºÅÛ] reboot 95/98/NT  ±è¿µ´ë 2003/03/07 5018 1416
433   [³×Æ®¿÷/ÀÎÅͳÝ] Ethernet ·£Ä«µåÀÇ MAC adress ±¸ÇÏ±â  ±è¿µ´ë 2003/03/07 7930 2288
  [³×Æ®¿÷/ÀÎÅͳÝ] Serial Port »ç¿ëÇÏ±â  ±è¿µ´ë 2003/03/07 7426 1886
431   [À©µµ¿ìÁî API] IEÀÇ ÇöÀç url °¡Á®¿À±â  ±è¿µ´ë 2003/03/07 5167 1274
430   [½Ã½ºÅÛ] DOS-matrix ÇÁ¸°ÅÍ¿¡ ÀμâÇÏ±â  ±è¿µ´ë 2003/03/07 5166 1315
429   [À©µµ¿ìÁî API] À©µµ¿ìÁî "½ÃÀÛ" ¸Þ´º¸¦ ³» ÇÁ·Î±×·¥ ¾ÈÀ¸·Î...  ±è¿µ´ë 2003/03/07 5087 1392
428   [À©µµ¿ìÁî API] ¸ðµç âÀ» ¾ÆÀÌÄÜ Ç¥½Ã/Ãë¼Ò  ±è¿µ´ë 2003/03/07 4805 1340
427   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] RichEdit È­¸é¿¡ º¸¿©Áö´Â ù¹ø°/¸¶Áö¸· Çà¹øÈ£  ±è¿µ´ë 2003/03/07 6030 1566
426   [³×Æ®¿÷/ÀÎÅͳÝ] ³×Æ®¿öÅ© ÄÄÇ»ÅÍ°¡ Á¸ÀçÇÏ´ÂÁö °Ë»çÇÏ±â  ±è¿µ´ë 2003/03/07 5363 1367
425   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ÅؽºÆ® ÆÄÀÏ ÇÕÄ¡±â(Merging)  ±è¿µ´ë 2003/03/07 5678 1296
424   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] TRichEdit¸¦ »ç¿ëÇÑ syntax highlighting ¿¹Á¦  ±è¿µ´ë 2003/03/07 7024 1858
423   [³×Æ®¿÷/ÀÎÅͳÝ] NetMask ¾Ë¾Æ³»±â  ±è¿µ´ë 2003/03/07 7682 1958
422   [À©µµ¿ìÁî API] ApplicationÀÇ ÃÖ¼ÒÈ­½Ã Zooming È¿°ú ÁÖ±â2  ±è¿µ´ë 2003/03/07 13825 1611
421   [½Ã½ºÅÛ] driveÀÇ ÀϷùøÈ£ ¹Ù²Ù±â  ±è¿µ´ë 2003/03/07 7046 1683
420   [½Ã½ºÅÛ] CPUÀÇ »ç¿ë·ü ±¸ÇÏ±â  ±è¿µ´ë 2003/03/07 5468 3382
419   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ¼ýÀÚÀÇ ±Ù»çÄ¡ ±¸ÇÏ±â  ±è¿µ´ë 2003/03/07 4624 1246
418   [À©µµ¿ìÁî API] How to flush key buffer  ±è¿µ´ë 2003/03/07 5032 1335
417   [COM/OLE] À©µµ¿ìÁî ½ÃÀÛÀÇ "½ÇÇà" È­¸é ¶ç¿ì±â  ±è¿µ´ë 2003/03/07 4411 1236
416   [À©µµ¿ìÁî API] ÀÛ¾÷°ü¸®ÀÚÀÇ task switching ±ÝÁö½ÃÅ°±â  ±è¿µ´ë 2003/03/07 5175 1343
415   [³×Æ®¿÷/ÀÎÅͳÝ] ÀÎÅͳݿ¡ LAN ¶Ç´Â ModemÀ¸·Î Á¢¼ÓÁßÀÎÁö °Ë»ç  ±è¿µ´ë 2003/03/07 5563 1536
414   [À©µµ¿ìÁî API] Window Handle ·Î ½ÇÇàÆÄÀÏ¸í ±¸ÇÏ±â  ±è¿µ´ë 2003/03/07 5363 1353
413   [³×Æ®¿÷/ÀÎÅͳÝ] Getting Novell Netware Login NAME  ±è¿µ´ë 2003/03/07 4087 1110
412   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ListBoxÀÇ È­¸é¿¡ º¸¿©Áö´Â ÃÖ»óÀ§ Item ¹øÈ£  ±è¿µ´ë 2003/03/07 4768 1272

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

Copyright 1999-2024 Zeroboard / skin by zero