The information in this article applies to:
- Microsoft Visual Basic programming system for Windows, version 3.0
SYMPTOMS
The MSCOMM.VBX custom control may appear to send an unexpected byte
when the port is closed by setting the PortOpen property to false.
CAUSE
There is a known problem with the miniport driver SERIAL.386 that was
released with Windows for Workgroups 3.11. This is not a problem with
the MSCOMM control since it can be reproduced by calling the CloseComm
Windows API function directly.
WORKAROUND
The following file is available for download from the Microsoft Software
Library:
~ wg1001.exe (size: 23600 bytes)
For more information about downloading files from the Microsoft Software
Library, please see the following article in the Microsoft Knowledge Base:
ARTICLE-ID: Q119591
TITLE : How to Obtain Microsoft Support Files from
Online Services
STATUS
Microsoft has confirmed this to be a problem in Windows for Workgroups
version 3.11. We are researching this problem and will post new
information here in the Microsoft Knowledge Base as it becomes available.
MORE INFORMATION
Steps to Reproduce Problem
- Connect two machines using a null modem cable. You must run Windows
for Workgroups 3.11 on the machine running Visual Basic.
- Start a new project in Visual Basic, Form1 is created by default.
- Add an MSCOMM (Comm1) control and a command button (Command1) to Form1.
- Add the following code to the Command1 Click event procedure:
Sub Command1_Click ()
comm1.PortOpen = True
comm1.PortOpen = False
End Sub
- Start the Terminal application on the second machine. In Terminal
choose Settings Communications (ALT, S, C) and change the Baud Rate
to 9600.
- From the Run menu in Visual Basic on the first machine, choose Start
(ALT, R, S) or press the F5 key to run the program. Click the
Command1 button and the machine running Terminal will indicate that a
byte has been transmitted from closing the port.
The problem can also be reproduced with the following method:
- Connect two machines using a null modem cable. You must run Windows
for Workgroups 3.11 on the machine running Visual Basic.
- Start a new project in Visual Basic. Form1 is created by default.
- Add a command button (Command1) to Form1.
- Add the following Declare statements to the General declarations
section of Form1:
' Enter each of the following Declare statements on one, single line:
Declare Function OpenComm Lib "User" (ByVal lpComName As String, ByVal
wInQueue As Integer, ByVal wOutQueue As Integer) As Integer
Declare Function CloseComm Lib "User" (ByVal nCid As Integer)
As Integer
- Add the following code to the Command1 Click event procedure:
Sub Command1_Click ()
Dim id As Integer, success As Integer
id = OpenComm("COM1", 1024, 128)
success = CloseComm(id)
End Sub
- Start the Terminal application on the second machine. In Terminal,
choose Settings Communications (Alt, S, C) and change the Baud Rate
to 9600.
- From the Run menu in Visual Basic on the first machine, choose Start
(ALT, R, S) or press the F5 key to run the program. Click the
Command1 button and the machine running Terminal will indicate that a
byte has been transmitted from closing the port.
|