KnowledgeBase Archive

An Archive of Early Microsoft KnowledgeBase Articles

View on GitHub

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

Article: Q105010
Product(s): Microsoft FoxPro
Version(s): 2.50 2.50a 2.50b 2.60 2.60a
Operating System(s): 
Keyword(s): kbcode
Last Modified: 11-AUG-1999

-------------------------------------------------------------------------------
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 
Technology        : kbAudDeveloper kbFoxproSearch kbFoxPro260 kbFoxPro250 kbFoxPro250a kbFoxPro250b kbFoxPro260a
Version           : 2.50 2.50a 2.50b 2.60 2.60a

=============================================================================

THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Copyright Microsoft Corporation 1986-2002.