How To Use the OpenComm() Function with FOXTOOLS.FLL

ID: Q105010


The information in this article applies to:
  • Microsoft FoxPro for Windows, versions 2.5, 2.5a, 2.5b, 2.6, 2.6a


SUMMARY

OpenComm() is a function that can be called using FOXTOOLS.FLL to open the COM or LPT ports. Below is a complete description of OpenComm().


MORE INFORMATION

Purpose

The OpenComm() function opens a communications device.

Function Syntax


   OpenComm(<port>, <in_q>, <out_q>)

   Argument       Description
   -----------------------------------------------------------------

   <port>         Points to a null-terminated string that specifies
                  the device in the form COM<n> or LPT<n>, where <n>
                  is the device number.

   <in_q>         Specifies the size, in bytes, of the receiving
                  queue. This parameter is ignored for LPT devices.

   <out_q>        Specifies the size, in bytes, of the transmission
                  queue. This parameter is ignored for LPT devices. 

Returns

The return value identifies the open device if the function is successful. Otherwise, it is less than zero.

Errors

If the function fails, it may return one of the following error values:

   Value     Meaning
   --------------------------------------------------------------------

   -12       The device's baud rate is unsupported.
   -11       The specified byte size is invalid.
   -10       The hardware is not available (is locked by another device).
    -5       The default parameters are in error.
    -4       The function cannot allocate the queues.
    -3       The device is not open.
    -2       The device is already open.
    -1       The device identifier is invalid or unsupported. 
If this function is called with both queue sizes set to zero, the return value is -2 if the device is already open, or -4 if the device is not open.

Comments

Windows allows COM ports 1 through 9 and LPT ports 1 through 3. If the device driver does not support a communications port number, the OpenComm() function will fail.

Sample Code

The following code example uses the OpenComm() function and FOXTOOLS.FLL to open COM1. (This example can be found in FOXPROW\GOODIES\FOXTOOLS\DIALER.PRG.)

   *-------------------- dialer.prg ------------------------

   * Sample program to output to comm port
   * Uses FoxTools library for generic DLL access

   SET LIBRARY TO SYS(2004)+"foxtools.fll" ADDITIVE

   opencomm = REGFN("OpenComm", "CII", "I")
   writecomm = REGFN("WriteComm", "ICI", "I")
   closecomm = REGFN("CloseComm", "I", "I")

   com1 = CALLFN(opencomm, "COM1:", 100, 100)
   s = "ATDT 5551212" + chr(13)
   =CALLFN(writecomm, com1, s, len(s))

   WAIT WINDOW "Press any key to hang up"
   s = "ATH0" + chr(13)
   =CALLFN(writecomm, com1, s, len(s))

   =CALLFN(closecomm, com1)

   RELEASE LIBRARY SYS(2004)+"foxtools.fll" 
NOTE: In reference to the applicability of the OpenComm() function to Visual FoxPro for Windows, the 32-bit Foxtools.fll returns a handle to the RegFN() call provided that it passes the optional 4th argument, which is "USER.DLL." Here is an example:

   hnd = RegFN("OpenComm","CCC","I","User.dll") 


REFERENCES

The above information can also be found in the Microsoft Windows Software Development Kit (SDK) "Programmer's Reference Volume 2: Functions" [describes OpenComm()] and the "Programmer's Reference Volume 3: Messages, Structures, and Macros" (describes the returned values). The online Help file for the Professional Version of Visual C++ also contains this information.

Additional query words: FoxWin 2.50

Keywords : kbcode FxprgFoxtools
Version : 2.50 2.50a 2.50b 2.60 2.60a
Platform : WINDOWS
Issue type :


Last Reviewed: August 10, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.