Annotation of pmsdk/samples/pmcomm/pmcomm.doc, revision 1.1

1.1     ! root        1: PMCOMM is a small port of the TERMINAL application found in the
        !             2: OS/2 1.02 SDK.  It turns out that only about 5% of the code was
        !             3: ported.  Modem support was commented out.  For a person who wants
        !             4: to do more with this, all they have to do is bring in the MODEM.C
        !             5: file found with the TERMINAL sources and  update it to the latest
        !             6: os/2 release.
        !             7: 
        !             8: This program was made to reflect the following items in a PM 
        !             9: application.
        !            10:   o  use of a thread to read a Comm Port.
        !            11:   o  how to display and hide the scroll bars on the Window FRAME.
        !            12:   o  how to set the menu attributes in one section of your code.
        !            13:   o  use of changing the caption bar.
        !            14:   o  use of accelerator keys.
        !            15:   o  use of button controls in a dialog box.
        !            16:   o  use of the WinQueryQueueStatus fucntion to check the queue
        !            17:          for interesting messages.
        !            18:   o  use of the peek message function
        !            19:   o  changing the cursor
        !            20: 
        !            21: Due to time constraints here is a TO DO / WISH list.
        !            22: A lot more needs to be added to make it more functional.
        !            23: ------------------------
        !            24: Make the write fucntion a separate thread.
        !            25: Move the WM_BLAST routine to another thread or put at the bottom
        !            26:   of the urrent read thread.
        !            27: Allow for making the code more modual so that everything does not
        !            28:   need to be resident when running.
        !            29: Allow for clipboard - both ways.
        !            30: Allow a dialog for the desired display buffer size.
        !            31:   It is now set by #define MAXWIDTH and MAXLINES.
        !            32: Make the Settings dialog more robust.
        !            33: Fix pause scrolling.
        !            34: Make the paint routine smarter.  I keep the line length so that 
        !            35:   an offset can be provided.  The array of pointers for the display, 
        !            36:   pStartLine is not necessary due to the fact that each line is a 
        !            37:   fixed length from the start.
        !            38:   Also see if you can scroll two or three lines at a time.
        !            39:   Any more than three might be too much of a flicker.
        !            40: Scroll bar ranges are not correct.
        !            41: 
        !            42: Time and consideration was provided for adding more functionality.
        !            43: That is why you will see flags and variables saved that are not used.
        !            44: 
        !            45: Here is the flow of PMCOMM.
        !            46: 
        !            47: MAIN
        !            48: --------------------------------
        !            49:      Creates a window.
        !            50: 
        !            51:         WM_CREATE message:
        !            52:            Gets font metrics
        !            53:            Gets handles to scroll bars.
        !            54:            Hides scroll bars.
        !            55:            Creates the ReadComm thread.
        !            56: 
        !            57:      Checks to see if an *.INI file was supplied.
        !            58:      Calls ReadINIFile.
        !            59:            Reads the supplied or default INI file.
        !            60:            Builds the caption bar with the current file name.
        !            61:      Goes into normal Windows message loop.
        !            62: 
        !            63: 
        !            64: MENU ITEMS follow:
        !            65: --------------------------------
        !            66:      SETTINGS:
        !            67:         Dialog comes up to prompt the user for comm settings.
        !            68: 
        !            69:      START:
        !            70:         InitBuffers();
        !            71:           Initializes all necessary flags to be used.
        !            72:           Initializes all buffers.
        !            73:         InitCommPort();
        !            74:           Opens comm port with settings provided.
        !            75:           (Should I flush the queses at this poing also?)
        !            76:         Clears ReadComm thread.
        !            77:         Sets the focus to the window.
        !            78:         Enables and disables correct menu items.
        !            79: 
        !            80:      CAPTURE:
        !            81:         Sets a flag to pass all characters to a file.
        !            82:         Displays a simple dialog asking for a file name
        !            83:           to append to.
        !            84:         Sets the "c" in the caption bar.
        !            85: 
        !            86:      PAUSE:
        !            87:         Enables and disables:
        !            88:              arrow keys
        !            89:              menu item
        !            90:              scroll bars are made in/visible.
        !            91: 
        !            92:      TEST:
        !            93:         Dumps current contents of display buffer to a file.
        !            94:         Displays the characters in a MessageBox as they come in.
        !            95: 
        !            96:      BREAK:
        !            97:         Sends a BREAK character to the host.
        !            98: 
        !            99:      ECHO:
        !           100:         Enables and disables echo to local terminal.
        !           101: 
        !           102:      STOP:
        !           103:         Flushes and then closes the comm port.
        !           104:         Enables and disables correct menu items.
        !           105:         If any changes were made to the Comm Settings
        !           106:         the user is asked if they wish to save
        !           107:         the changes.
        !           108: 
        !           109: 
        !           110: READ THREAD
        !           111: --------------------------------
        !           112:      Checks the buffer to determine the # of characters to read.
        !           113:      DosReads the comm port with the # of characters from previous step.
        !           114:      After read, sets Read Semiphore not to read.
        !           115:      Posts a message, WM_BLAST,
        !           116: 
        !           117: OTHER EVENTS
        !           118: --------------------------------
        !           119:     WM_CHAR:
        !           120:         These are passed to the WriteCommPort().
        !           121: 
        !           122:     WM_INITMENU:
        !           123:         This message is sent before a menu is displayed.
        !           124:         This provides an easy way to set the menu items
        !           125:              in one place depending on flags you set up.
        !           126: 
        !           127:     WM_SIZE:
        !           128:         Determines displayable area and calls WM_PAINT routine.
        !           129: 
        !           130:     WM_PAINT:
        !           131:         Determines displayable area and displays from a circular
        !           132:         display buffer.
        !           133: 
        !           134:     WM_BLAST: does the following:
        !           135:         Formats the characters into a display buffer.
        !           136:         Displays the characters to the screen.
        !           137:         Clears Read Semiphore.
        !           138: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.