Microsoft KB Archive/147653

= BUG: Serial Port Driver for WFW 3.11 Sends Extra Byte =

Article ID: 147653

Article Last Modified on 8/5/2004

-

APPLIES TO


 * Microsoft Visual Basic 4.0 Professional Edition
 * Microsoft Visual Basic 4.0 16-bit Enterprise Edition

-



This article was previously published under Q147653



SYMPTOMS
The Mscomm.vbx or Mscomm16.ocx custom controls 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 Microsoft Windows for Workgroups 3.11. This is not a problem with the MSCOMM control because it can be reproduced by calling the CloseComm Windows API function directly.



RESOLUTION
The following file is available for download from the Microsoft Download Center:

Wg1001.exe

Release Date: May 31, 2000

For additional information about how to download Microsoft Support files, click the following article number to view the article in the Microsoft Knowledge Base:

119591 How to Obtain Microsoft Support Files from Online Services

Microsoft scanned this file for viruses. Microsoft used the most current virus-detection software that was available on the date that the file was posted. The file is stored on security-enhanced servers that help to prevent any unauthorized changes to the file.



STATUS
Microsoft has confirmed this to be an issue 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.



Steps to Reproduce Problem in the 16-Bit Edition of Visual Basic 4
 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 (MsComm1) control and a command button (Command1) to Form1.  Add the following code to the Command1 Click event procedure: Sub Command1_Click Mscomm1.PortOpen = True '(Default name of control has changed in VB4) Mscomm1.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.</li> 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.</li></ol>

The problem can also be reproduced with the following method:

<ol> Connect two machines using a null modem cable. You must run Windows for Workgroups 3.11 on the machine running Visual Basic.</li> Start a new project in Visual Basic. Form1 is created by default.</li> Add a command button (Command1) to Form1.</li>  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 </li>  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 </li> Start the Terminal application on the second machine. In Terminal, choose Settings Communications (ALT, S, C) and change the Baud Rate to 9600.</li> 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.</li></ol>

Additional query words: Wg1001 serial comm port

Keywords: kbdownload kbbug kbfile kbsample kbpending KB147653

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.