to the point, sample aja langsung....
kalo buat nge-explore commlibnya, cari aja di msdn.

J

DECLARE 
al_id     Alert := Find_Alert('ALERT15');
al_button NUMBER; 
WTOTAL   NUMBER;
FileHandle1     WIN_API.FILE_TYPE;
FileName1      VARCHAR2(400) := 'C:\SAYIM.DAT';
FileMode1      VARCHAR2(30) := 'W';
RaiseExceptions1  BOOLEAN := FALSE;
Wokudum1       boolean;
DataBuffer1     VARCHAR2(400);
BytesRequired1    PLS_INTEGER := 300;
IgnoreNulls1     BOOLEAN := FALSE;
BytesRead1        PLS_INTEGER;
W  NUMBER;
Psion_Path  VARCHAR2(30) := 'M:\SAYIM.DAT';
WSAYI     NUMBER := 0;
 receive   OLEVAR;
 Wreceive   VARCHAR2(400);
 Wreceive1   VARCHAR2(400);  
 WACIK      NUMBER;
 WCOUNT      NUMBER;
BEGIN
 W := FINDPORT;
 IF W = 0 THEN RETURN; END IF;
 MSCOMMLib_IMSComm.CommPort(:ITEM('BLSY0003.MS1').INTERFACE,W);
 WACIK := OLE2.GET_NUM_PROPERTY(:ITEM('BLSY0003.MS1').INTERFACE,'PORTOPEN');
 IF WACIK <> 0 THEN
   OLE2.SET_PROPERTY(:ITEM('BLSY0003.MS1').INTERFACE,'PORTOPEN',0);
 END IF;
 OLE2.SET_PROPERTY(:ITEM('BLSY0003.MS1').INTERFACE,'PORTOPEN',1);
 WACIK := OLE2.GET_NUM_PROPERTY(:ITEM('BLSY0003.MS1').INTERFACE,'PORTOPEN');
 IF WACIK = -1 THEN          
    
MSCOMMLib_IMSComm.Output(:ITEM('BLSY0003.MS1').INTERFACE,TO_VARIANT('$S$'||Psion_Path||Chr(13),vtype=>VT_VARIANT));
  
     WSAYI := 0;
     WHILE MSCOMMLib_IMSComm.InBufferCount(:ITEM('BLSY0003.MS1').INTERFACE) < 
16 LOOP
           WSAYI := WSAYI + 1;
           IF WSAYI > 3000 THEN EXIT; END IF;
     END LOOP;
     receive := MSCOMMLib_IMSComm.Input(:ITEM('BLSY0003.MS1').INTERFACE);
     WRECEIVE := VAR_TO_CHAR (receive);
     IF SUBSTR(WRECEIVE,1,6) = '$SEND$' THEN        
         WCOUNT := TO_NUMBER(SUBSTR(WRECEIVE,7,6));          
         IF WCOUNT > 0 THEN   
           FileHandle1 := WIN_API_FILE.Open_File (FileName1 , FileMode1, 
RaiseExceptions1); 
            ProgressBarCtrl_ProgressBar.MAXVALUE 
(:ITEM('AC_PB').INTERFACE,WCOUNT);
            ProgressBarCtrl_ProgressBar.MINVALUE (:ITEM('AC_PB').INTERFACE,0);  
             
         END IF;
        
MSCOMMLib_IMSComm.Output(:ITEM('BLSY0003.MS1').INTERFACE,TO_VARIANT(TO_CHAR(1)||Chr(13),vtype=>VT_VARIANT));
         WSAYI := 0;
         WHILE MSCOMMLib_IMSComm.InBufferCount(:ITEM('BLSY0003.MS1').INTERFACE) 
< WCOUNT LOOP
               WSAYI := WSAYI + 1;
               IF WSAYI > 30000 THEN EXIT; END IF;
         END LOOP;
         receive := MSCOMMLib_IMSComm.Input(:ITEM('BLSY0003.MS1').INTERFACE);
         WRECEIVE := VAR_TO_CHAR (receive);
         WIN_API_FILE.Write_Data(FileHandLe1,WRECEIVE,RaiseExceptions1);
         WTOTAL := NVL(WTOTAL,0) + LENGTH(WRECEIVE);
         ProgressBarCtrl_ProgressBar.VALUE (:ITEM('AC_PB').INTERFACE,WTOTAL);   
       
     END IF;
        FOR J IN 1..WCOUNT/128 LOOP
           SYNCHRONIZE;
           
MSCOMMLib_IMSComm.Output(:ITEM('BLSY0003.MS1').INTERFACE,TO_VARIANT(TO_CHAR(J)||Chr(13),vtype=>VT_VARIANT));
            WSAYI := 0;
            WHILE 
MSCOMMLib_IMSComm.InBufferCount(:ITEM('BLSY0003.MS1').INTERFACE) < 128  LOOP
                  WSAYI := WSAYI + 1;
                  IF WSAYI > 30000 THEN EXIT; END IF;
            END LOOP;
            receive := MSCOMMLib_IMSComm.Input(:ITEM('BLSY0003.MS1').INTERFACE);
            WRECEIVE := VAR_TO_CHAR (receive);         
            IF WRECEIVE IS NULL THEN EXIT; END IF;
            WIN_API_FILE.Write_Data(FileHandLe1,WRECEIVE,RaiseExceptions1);
            WTOTAL := NVL(WTOTAL,0) + LENGTH(WRECEIVE);
            ProgressBarCtrl_ProgressBar.VALUE (:ITEM('AC_PB').INTERFACE,WTOTAL);
            IF WTOTAL = WCOUNT THEN EXIT; END IF;          
        END LOOP;
 END IF;
 
MSCOMMLib_IMSComm.Output(:ITEM('BLSY0003.MS1').INTERFACE,TO_VARIANT('$Z$'||Chr(13),vtype=>VT_VARIANT));
 OLE2.SET_PROPERTY(:ITEM('BLSY0003.MS1').INTERFACE,'PORTOPEN',0);
 IF WCOUNT > 0 THEN 
   WIN_API_FILE.Close_File (FileHandle1,RaiseExceptions1); 
    SET_ITEM_PROPERTY('PB_URUNLER',ENABLED,PROPERTY_TRUE);
 END IF;
END;
 
 
Function findPort RETURN NUMBER IS
WACIK   NUMBER;
WSAAT   VARCHAR2(20);
WSAYI   NUMBER;
receive OLEVAR;
Wreceive VARCHAR2(400);
W       VARCHAR2(400);
BEGIN    
 For i IN 1..4 LOOP
   MSCOMMLib_IMSComm.CommPort(:ITEM('BLSY0003.MS1').INTERFACE,I);
   WACIK := OLE2.GET_NUM_PROPERTY(:ITEM('BLSY0003.MS1').INTERFACE,'PORTOPEN');
  IF WACIK <> 0 THEN
    OLE2.SET_PROPERTY(:ITEM('BLSY0003.MS1').INTERFACE,'PORTOPEN',0);
  END IF;
   OLE2.SET_PROPERTY(:ITEM('BLSY0003.MS1').INTERFACE,'PORTOPEN',1);
     WACIK := OLE2.GET_NUM_PROPERTY(:ITEM('BLSY0003.MS1').INTERFACE,'PORTOPEN');
     IF WACIK = -1 THEN          
        
MSCOMMLib_IMSComm.Output(:ITEM('BLSY0003.MS1').INTERFACE,TO_VARIANT('$N$'||CHR(13),vtype=>VT_VARIANT));
         SELECT TO_CHAR(SYSDATE,'DDMMYYYY HH24:MI:SS') INTO WSAAT FROM DUAL;
        WSAYI := 0;
        WHILE MSCOMMLib_IMSComm.InBufferCount(:ITEM('BLSY0003.MS1').INTERFACE) 
= 0 LOOP
           WSAYI := WSAYI + 1;
           IF WSAYI > 30000 THEN EXIT; END IF;
        END LOOP;
         receive := MSCOMMLib_IMSComm.Input(:ITEM('BLSY0003.MS1').INTERFACE);
         WRECEIVE := VAR_TO_CHAR (receive);
         IF WRECEIVE IS NOT NULL THEN
            IF SUBSTR(WRECEIVE,1,3) = '$B$' THEN
             OLE2.SET_PROPERTY(:ITEM('BLSY0003.MS1').INTERFACE,'PORTOPEN',0);   
        
              RETURN(I);            
            END IF;
         ELSE
         OLE2.SET_PROPERTY(:ITEM('BLSY0003.MS1').INTERFACE,'PORTOPEN',0);       
    
         END IF;
     END IF;       
 END LOOP;     
 RETURN(0);


END;



Alamsyah wrote:

>Pagi para oracle expert.
>
>Ada yg pernah menggunakan MSCOMMLIB di oracle untuk terima/tarik data
>dari serial/com port. Saya butuh package tsb.
>Jika ada yg pernah menggunakan bisa tlg di jelaskan dan kalau ada
>samplenya.
>
>Terima Kasih
>
>Alamsyah
>
>
>
>  
>


Send instant messages to your online friends http://asia.messenger.yahoo.com 


------------------------ Yahoo! Groups Sponsor --------------------~--> 
Most low income households are not online. Help bridge the digital divide today!
http://us.click.yahoo.com/cd_AJB/QnQLAA/TtwFAA/PhFolB/TM
--------------------------------------------------------------------~-> 

--
-----------I.N.D.O - O.R.A.C.L.E---------------
Keluar: [EMAIL PROTECTED]
Website: http://indo-oracle.lizt.org (NEW)
-----------------------------------------------

Bergabung dengan Indonesia Thin Client User Groups, 
Terminal Server, Citrix, New Moon Caneveral, di:
http://indo-thin.vze.com 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/indo-oracle/

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 




Kirim email ke