home *** CD-ROM | disk | FTP | other *** search
- Form_CommDemo
- Communications Demo
- Form1
- Timer_CheckInBuf
- Timer_ClearStatusWin
- Label_ReceiveWin
- Recieve Window
- Text_ReceiveWin
- Label_TransmitWin
- Transmit Window
- Text_TransmitWin
- Label_StatusWinLab
- Communications Status
- Label_StatusWin
- MNU_File
- &File
- MNU_File_Exit
- E&xit
- MNU_Connect
- &Connect!
- MNU_BaudMenu
- &Baud
- MNU_BaudRate
- &1200
- MNU_BaudRate
- &4800
- MNU_BaudRate
- &9600
- MNU_Events
- E&vents
- MNU_Events_CharDetect
- &Character Detect
- Form_Click
- Form_LinkClose
- Form_LinkErrorw
- LinkErr
- Form_LinkExecute
- CmdStr`
- Cancel
- Form_LinkOpenl
- @ Form_Load
- Screen
- Width4
- Height4
- OpenErrCode/
- OpenCommPort
- InBufSize
- OutBufSize
- ComDev;
- MsgBoxCaption
- DefMsgCaptionn
- BaseComm
- carriage
- linefeed
- OpenCommErr
- Form_Unload
- OpenCommError
- DefaultLineSettings
- DefaultEventSettings}
- BaudRateT
- ByteSizeC
- Parity
- NOPARITY
- StopBits
- ONESTOPBIT
- RlsTimeOut`
- CtsTimeOut
- DsrTimeOuts
- ModeControl
- XonChar
- XoffChar
- XonLim
- XoffLimP
- peChar)
- EofChar
- EvtChar
- Label_StatusBar
- Caption
- SetCommState
- SetLineSettings
- valuea
- enablesV
- containedr
- received
- fOutX
- fDCBw
- OpenComm7
- SetEventSettings
- DCBType
- MNU_File_Exit_Click+
- CloseCommZ
- Timer_CheckInBuf_Timer
- ReadCommJ
- InBuf
- NumCharsRead
- Text_OutWin?
- SelStart
- SelTextZ
- InBuff
- SelLength
- number
- handshaking
- anything~
- buffer
- displayg
- windowF
- Text_OutWin_Change[
- Text_OutWin_GotFocus
- Text_InWinL
- Timer_CheckInBuf
- Enabled
- TrueI
- ReadCommInterval)
- Interval
- ErrFlag
- Text_InWin_Change=
- Text_InWin_KeyPresss
- KeyAsciiO
- CharsWritten
- WriteComm
- OutBuff4
- entered
- Text_ReceiveWin_Change
- Text_TransmitWin_Change
- Text_TransmitWin
- Text_ReceiveWin{
- Text_TransmitWin_KeyDown
- KeyCode
- Shift
- Text_TransmitWin_KeyPressE
- EventAddr
- SetCommEventMask
- EV_ALL
- Timer_ClearStatusBar_Timer!
- Label2_Click
- ShowStatus7
- StatusText
- Timer_ClearStatusBar
- ClearStatusIntervall
- False.
- comst
- status
- DelayFlage
- delay
- DelayTime+
- callingU
- Windows
- IE_OPEN
- Response
- ShowCriticalMessage/
- ShowCritErrMessage
- ShowCritErr
- Label_ReceiveWin_Click
- ErrTypev
- ErrCode
- @ ShowErrorJ
- ExitRoutine
- CloseComFlag:
- ProcessCommError}
- CommErr
- GetCommErrorf
- COMSTATr
- CE_BREAK
- CommStat
- Message
- ShowMessage
- CE_CTSTO
- CE_STSTO=
- CE_DNS
- CE_FRAME
- CE_IOE
- CE_MODE8
- CE_OOPX
- CE_OVERRUN
- CE_PTO'
- CE_RLSDTOu
- CE_RXOVERL
- CE_RXPARITY
- CE_TXFULL
- COMSTATType
- CommConnectB
- comments`
- herej
- CommID
- ComID
- GetCommStateJ
- DCB_Type
- MNU_Connect_Click
- ConnectFlag
- MNU_Connect
- CommDisconnect
- ConnectErrorr
- ConnectErrFlag
- IE_BADID
- IE_BAUDRATE.
- IE_BYTESIZE
- IE_DEFAULT
- IE_HARDWARE
- IE_MEMORYV
- IE_NOPEN
- Text_ReceiveWin_GotFocus
- CommConnectFlag
- COMSTAT_Type5
- ShowErrorMessage
- ErrorFlag&
- Label_TransmitWin_Click
- ProcessCommEvents)
- EventMaskD
- GetCommEventMaskL
- CurrentEventMaskU
- EV_BREAK
- ShowStateV
- EV_CTR
- EV_CTS`
- EV_DSRj
- EV_ERR
- EV_PERR
- EV_RING;
- EV_RLSD
- EV_RXCHAR
- EV_RXFLAG
- EV_FXFLAG
- EV_TXEMPTY^
- DisconnectComm?
- Form_CommDemo
- Form_Resize
- Text_.
- TxDelay
- cbInQue
- cbOutQuet
- lpCommName
- wInQueue
- wOutQueuej
- lpBuf
- nSize
- nEvtMask
- CE_DSRTO
- ODDPARITY
- EVENPARITY
- ONE5STOPBITS
- TWOSTOPBITS
- Label_StatusWin
- alreadyp
- opened
- alread
- ComDisconnect
- MNU_File_Click
- events
- detectz
- Label_StatusWin_ClickU
- Label_StatusWinLab_Click
- Disconnect
- ProcessComError
- Visual
- Basic
- Timer_ClearStatusWine
- Timer_ClearStatusWin_Timer
- GetOpenCommError
- FlushCommH
- BuildCommDCB6
- MNU_BaudRate_Click
- Index
- BaudRate_Click
- LastIndex
- MNU_BaudRateT
- Checked
- PortID
- MNU_Baud_Menu
- MNU_BaudMenu
- MNU_BaudMenu_Click
- closed
- ComStatusCode
- GlobalDCB|
- CharsWaiting'
- MNU_Events_CharDetect_Click
- CurrEventMask
- MNU_Events_Click
- MNU_Events_CharDetectg
- CharDectEnabled
- CharDetectEnabled
- CharDetectEnabledFlag
- MNU_Eventsx
- Name of default communications device to be opened
- COM input and output buffer sizess
- Time interval to read the COM port (in milliseconds)
- The maximum period of time (in milliseconds) for which a status bar message will be displayed
- The time that message processing will be delayed (in seconds) while displaying a status bar message
- Device Control Block (DCB) for the COM port. Contains all of the current line settings for the COM port.T
- ID number representing the COM port. Set by calling the Windows API function SetCommState.
- Flag indicating successful COM connection.
- The current COM event settings. Set by calling the Windows API function SetCommEventMask
- Form_Load
- * This is the entry point of the program. Initialize global variables and center the form
- * on the screen. The Windows API function BuildCommDCB is called to assign default values too
- * the DCB (Device Control Block) data structure.
- Initialize global variables representing carriager
- return and carriage return linefeedn
- Center the form on the screen
- Disable the Events menu. The Events menu is enabled when the COM is connected
- Initialize the COM DCB (Device Control Block) with default line settings
- COM1:1200,N,8,1"
- Form_Unload
- Disconnect the COM only if the COM was connected
- from this programh
- SetLineSettings
- * Set default line settings (e.g. baud rate, parity,
- * data bits, stop bits and handshaking) by calling
- * the Windows API function SetCommState.
- * Note: The Chr$ function is used below to convert a numeric value
- to a 1 byte character value. This is needed because a byte
- is not supported as a numerical type under Visual Basic.
- The Asc function can be used to get the value of a 1 byte
- character representing a 1 byte numerical value.
- Setting line settings ..."
- Set the Id for the COM port. The COM port ID is returned by the Windows API function OpenComm
- Set line settings for the COM port as 1200:N,8,1,CD0,CS0,DS0,RS,TB2048,RB2048t
- The following parameter settings represent the default settings set by calling
- BuildCommDCB in the Form_Load event procedure.
- Set parameters as 1200: N,8,1M
- DCB.BaudRate = 1200
- 'Other possible values include 300, 2400, 4800, 9600, 19200.
- DCB.ByteSize = Chr$(8)
- 'Other possible values include 4,5,6,7
- DCB.Parity = Chr$(NOPARITY)
- 'Other possible values include EVENPARITY, MARKPARITY, ODDPARITY, SPACEPARITY
- DCB.StopBits = Chr$(ONESTOPBIT) 'Other possible values include ONE5STOPBITS, TWOSTOPBITS
- Set timeout period for CD, CS and DS handshake lines respectively. Values
- represent milliseconds. A value of zero represents an infinite wait effectively
- disabling handshaking on that line. Possible values can range from 0 to 65,535s
- for an unsiged integer or -32,768 to 32,767 for signed integers.
- Carrier detect or receive-line-signal-detect (CD or RLSD) line (CD0)
- Clear-to-send (CTS) line (CS0)
- Data-set-ready (DSR) line (DS0))
- The following bit flags are combined in the ModeControl field below. Becausec
- the following are bit fields they cannot be represented as a field of a Type ... End Type
- structurew
- DCB.fBinary = 1
- Specify binary mode. Setting this to zero causes an
- EOF character (Chr$(26)) to signal the end of data.
- DCB.fRtsDisabled = 1
- Disable request-to-send line (RS). A zero value enables
- the request-to-send linev
- DCB.fParity = 0
- Disable parity checking. A value of 1 enables parity checking
- DCB.fOutCtsFlow = 0
- Disable checking of clear-to-send line for output flow control
- DCB.fOutxDsrFlow = 0
- Disable checking of data-set-ready (DSR) line for output flow control
- DCB.fDummy = 0 + 0
- Two bit reserved fieldd
- DCB.fDtrDisabled = 1
- Disable the data-set-ready line (DTR). A value of 1 enables DTR.
- DCB.fOutX = 0
- Disable XON/XOFF during transmission.e
- A value of 1 enables XON/XOFF.d
- DCB.fInX = 0
- Disable XON/XOFF during reception.i
- A value of 1 enables XON/XOFF
- DCB.fPeChar = 0
- Disable the replace of parity error characters with the character
- contained in the PeChar field. A value of 1 enables replacementt
- of parity error characters with the character contained in then
- PeChar field.
- DCB.fNull = 0
- Received null characters are not to be discarded. A value of 1c
- specifies that null characters received will be discarded.d
- DCB.fChEvt = 0
- Reception of the character contained in the EvtChar field doesc
- not signify an event. A value of 1 indicates that thet
- reception of a character identical to the character contained
- in the EvtChar field signifies and event.
- DCB.fDtrFlow = 0
- The DTR line is not used for receive flow control. A value of 1
- indicates that the DTR line is used for receive flow control.
- DCB.fRtsFlow = 0
- The RTS line is not used for receive flow control. A value of 1
- indicates that the DTR line is used for receive flow control.
- DCB.fDummy = 0
- Reserved
- 1100 0001
- Binary representationr
- of the above bit settings
- Hex representation of the aboveu
- bit settings
- Based on the bit settings above
- XON character to be used. Only used if the fOutX or fInX
- fields are set to 1.
- XOFF character to be used. Used only if the fOutX or fInX
- fields are set to 1.
- Specifies minimum number of characters allowed in the receive
- buffer before the XON character is sent. Used only if the fOutX
- or fInX fields are set to 1.
- Specifies the maximum number of characters allowed in the
- receive buffer before the XOFF character is sent. Used only
- if the fOutX or fInX fields are set to 1.i
- Character used to replace characters received with a parity
- error. Used only if the fPeChar flag has been set to 1.
- Specifies the character used to indicate end of data. Used
- only if the the fBinary flag is set to 0.t
- Character indicating an event. Used only if the fChEvt flag
- is set to 1.
- MNU_File_Exit_Click
- * When the user selects Exit from the File menu, unload thee
- * form, disconnect the COM - if it is already opened - and
- * end the programm
- Timer_CheckInBuf_Timer
- * The code below represents a method of reading the COM port
- * by calling the Windows API function ReadComm..
- * Check the input buffer on each timer interval by calling
- * the Windows API function ReadComm. If anything is found
- * in the buffer, display it in the receive window.
- COM status variable used by the Windows API function GetCommErrorb
- Allocate a buffer (a text string of spaces) the size of the specified input buffer.f
- Because the ReadComm API function expects to read to an existing buffer, failing
- to initialize the buffer may result in unpredictable results or a Windows UAE.
- Unlock the COM port if it had been locked as the result of a previous COM error.
- The number of characters waiting in the receive buffer will be returned as part of the COMSTAT structure
- Check to see if there are any characters waiting in the receive buffer
- Call the Windows API function to read information from the input buffer. Read
- all characters waiting in the input buffer.m
- Check for COM error by calling the Windows API function GetCommError
- If a COM error occurs, a message will be displayed and the COM port disconnected.f
- Check for COM events by calling the Windows API function GetCommEventMask.
- COM events, such as a ring detect, are displayed in the status window as they occur.
- Check to see if any characters were read from the input buffer
- Display the text read from the input buffer in
- the receive window
- SetEventSettings
- * Specify which events are allowed to occur by calling the Windows API function
- * SetCommEventMask..
- Setting event settings ...
- Place a check mark next to the Events menu item Character Detect indicating that char detect has been enabled
- The following communication events are to be processed
- Event (constant)
- Descriptions
- EV_BREAK
- Set when a break is detected on input-
- EV_ERR
- Set when a line-status (CE_FRAME, CE_OVERRUN, CE_RXPARITY) error occurso
- EV_RING
- Set when a ring indicator is detected
- EV_RXCHAR
- Set when a character is received and placed in the COM receive buffer
- EV_TXEMPTY
- Set when the last character in the COM transmit buffer is sent
- Other possible values include:
- EV_CTS
- Set when the clear-to-send (CTS) signal changes stateu
- EV_DSR
- Set when the data-set-ready (DTR) signal changes state
- EV_PERR
- Set when a printer error is detected on a parallel device
- EV_RLSD
- Set when the receive-line-signal-detect (RLSD) signal changes state
- EV_RXFLAG
- Set when the event character is received and placed in the receive buffer
- Combine the events to be processed into the event mask. The bitwise Or operator is used toi
- combine the bit patterns of the constants representing the COM events.
- All possible communciations events may occur
- Text_TransmitWin_KeyPress
- * Writes the character for each key press to the output*
- * buffer by calling the Windows API function WriteComm
- Convert the ASCII code of the key pressed to an ASCII characterr
- Write the character to the COM output buffer by callingl
- the Windows API function WriteComm.u
- Check for COM error by calling the Windows API function GetCommError
- If a COM error occurs, a message will be displayed and the COM port
- disconnected.r
- Check for COM events. COM events, such as a ring detect, are,
- displayed in the status window as they occur.r
- ShowStatus
- * Display a caption within the status window at the bottom
- * of the main display window
- Show a message in the status window
- Delay (allow for the message to be read by the user) for
- a specified period of time
- Get the current clock count
- Loop for the amount of time specified by DelayTime (in seconds) without processing other Windows events
- Enable a timer to cause the status window to be clear after a specified period of time
- ShowError
- * Display standard error messages based on the type of error that occurred..
- * The messages are displayed in a modal message box (MsgBox).
- Show message box indicating that an error occurred
- attempting to open the COM port
- Error occurred attempting to open
- Connection not established
- Error attempting to set line settings"
- Connection not established
- ProcessCommError
- * Determines if an error occurred after a COM operation. *
- * If an error occurred, a message is displayed indicating that the COM will be
- * disconnected. It is the responsibility of the calling routine to disconnect
- * the COM.
- * When an error occurs, Windows locks the COM port. Calling the
- * Windows API function GetCommError causes the COM port to be unlocked.
- COM status variable used by the Windows API function GetCommErrorE
- Find out if an error occured. Calling GetCommError clears
- the error and causes Windows to unlock the COM port.
- One or more of the following errors may have occurred
- Break condition detected
- Clear-to-send (CTS) timeout"
- Data-set-ready (DSR) timeout
- Parallel device is not selected"
- Framing error detected
- Device I/O error occurred"
- attempting to communicate with parallel device
- Requested mode is not supported"
- Out of paper on parallel device"
- Overrun error detected
- Timeout attempting to communicate with
- parallel device"
- Receive-line-signal-detect (RLS) timeout
- Receive buffer overflow"
- Parity error detected"
- Transmit buffer full
- CommConnect
- * Connect to the communications port by calling the following Windows API functions:
- OpenComm
- GetCommState
- SetCommState
- SetCommEventMask
- * The return values of OpenComm and SetCommState are tested for an error. If an
- * error occurs a message is displayed and the COM remains disconnected.r
- Assume that no error will occur opening COMr
- Opening COM port ...
- Attempt to open the COM port specifying the input and output buffer sizes
- Check to see if the COM port was successfully opened
- If the COM was successfully opened the return value of OpenComm represents the COM ID.
- Set communications line settings such as baud rate,d
- parity, data bits, stop bits and hardware handshaking.
- Select the allowable communication events
- by calling the Windows API function SetCommEventMask
- Display a message box indicating a critical error and
- end the programg
- Enable the timer to begin reading the COM input buffer.t
- Get the COM ID used in the call to BuildCommDCBa
- COM device already opened"
- Do you wish to use it anyway
- Close the com port if the user selected Yes from the message box
- The user chose not to use the COM port that is already opened.
- Show a critical error and terminate the programa
- A critical error occurred when attempting to open the COM port.p
- Attempt to open the COM port again if the COM port is already open, but the user wants to use it anyway
- Return False if an error occurred attempting to connectn
- Return True if connection was successful
- MNU_Connect_Click
- * When the user selects Connect! from the menu, connect to the COM port if itt
- * is not already opened by calling CommConnect.
- * When the user selects Disconnect! from the menu, disconnect from the COM
- * port if it is already opened by calling ComDisconnect.
- See if the COM is already a connected
- Disconnect the COM port by calling the Windows API function CloseComms
- Connect to the COM port by calling the following Windows API functions:u
- OpenComm
- SetCommStateM
- SetCommEventMaskS
- Make sure there was no error in connecting to the COM port.C
- If an error occurred, no attempt will be made to connect the COM port.
- &Disconnect!
- Enable the transmit and receive windowss
- CommDisconnect
- * Disconnect from the COM port by calling the Windows API function CloseComm
- * Disable the transmit and receive windows and reset the menu caption.
- Closing COM port ...
- Flush the transmit buffer
- Flush the receive buffer
- Call the Windows API function to close the COM port.
- The return value represents whether the comm was successfully closed or not, it is
- not used.n
- Invalid the COM ID to indicate that the COM was closed
- Turn off timer used to check COM receive bufferu
- Disable the transmit and receive windows
- Change the menu caption and connection status flag
- &Connect!"
- Disable the events menua
- Text_ReceiveWin_GotFocus
- * Do not allow the focus to be set to the receive window.*
- * If the user attempts to select the receive window,
- * restore focus to the transmit window.c
- ProcessCommEvents
- * Check to see if a communications event occurred by calling the Windows
- * API function GetCommEventMask. The event, such as a ring, is reported
- * in the status window.v
- Call Windows API function to get the COM event mask. The event mask iss
- a pattern of bits which represents one or more of the events below.n
- Check for the following events. The events that are reported
- are dependent on the event mask that was passed to SetCommEventMaskt
- Break detected on input"
- Clear-to-send (CTS) line changed state
- Data-set-ready (DTR) line changed state"
- Line status (framing, overrun or parity) error occurred"
- Printer error occurred
- Ring detected"
- Receive-line-signal-detect (RLSD) or carrier-detect (CD) line changed status
- Character received
- Event character received
- Last character sent: transmit buffer empty
- Timer_ClearStatusWin_Timer
- * After a status message has been displayed
- * for a certain interval, clear the status window-
- GetOpenCommError
- * FUNCTION: GetOpenCommError
- * PURPOSE: Returns an error message based on the specified
- error code. The error code is interrupted as
- related to an error when opening the COM device.
- This function handles all possible return codes.
- from the Windows API function OpenComm.r
- * PARMS:
- OpenErrCode - Specifies the error code relatede
- to the opening the COM porti
- * RETURNS: A string containing the error message associated
- with the error coden
- Invalid or unsupported ID"
- Unsupported baud rate"
- Invalid byte size"
- Error in default parameters"
- Hardware not present
- Unable to allocate queues"
- Device not open"
- Device already opened"
- MNU_BaudRate_Click
- * Change the COM line settings to reflect the new baud rate selected by the user..
- * Note that the baud rate (as with any line setting) can be changed if the portt
- * is open or closed. If the baud rate of the device being communicated with doess
- * not change, this could lead to unexpected behavior..
- Get the baud rate selected
- Set the baud rate
- Modify the COM line settings with the new baud rate
- Put a check mark next to the baud rate selectedr
- Take the check mark away from the last baud rate selectedl
- MNU_Events_CharDetect_Click
- * Set or disable the ability to detect characters received
- * from the COM.
- * When enabled, character related events are displyed in
- * the status window when a character is received
- Get the status of the menu selection
- Toggle the check mark next to the menu itemv
- Disable character detect events by setting the EV_RXCHAR bit to 0e
- Enable character detect events by setting the EV_RXCHAR bit to 1
- Set the COM event settings by calling a Windows API function
-