METHOD AND APPARATUS FOR A MAIL PROCESSING SYSTEM

Abstract: A mail handling system (10, 510) is disclosed wherein the entire lot or batch of mail pieces is loaded into or taken from a bin (32) for processing. Each mail piece (21, 23, 25) is individually removed or added by an operator while the computer (12) monitors the weight of the bin (32) and simultaneously produces serial numbers for affixing to each mail piece (21). In an alternative embodiment a postage meter provides postage imprinting and labelling for each mail piece (21) removed or added. By monitoring the weight of bin (32) before and after removal or the addition of each mail piece (21), the mail piece weight is determined. The weight of each mail piece (21) is required in order to determine the postage cost for each mail piece (21) and to produce an optional postal service form complying with manifest mailing requirements.

Description: METHOD AND APPARATUS FOR A MAIL PROCESSING SYSTEM REFERENCE TO RELATED APPLICATIONS This application is a continuation-in-part of copending patent application Serial No. 422,952 filed October 18, 1989, now abandoned. BACKGROUND OF THE INVENTION This invention is generally related to mail processing equipment and more specifically to mail processing equipment which weighs and posts mail or produces a mail and/or parcel manifest for a plurality of weighed mail items. Automated mail processing equipment which imprints postage costs on envelopes is relatively expensive equipment for purchase by small scale businesses. An inexpensive system which enables efficient posting of mail is needed for applications wherein an operator is available to assist in the processing of variable weight mail pieces. The United States Postal Service Manifest Mailing System (MMS) permits the postal service to accept and verify mailings containing non-identical weight and/or rate pieces of the same mail class and processing category. The MMS is designed for situations in which postage charges for non-identical mail pieces cannot be adequately verified by weighing, hence normal acceptance procedures are impractical. Generally speaking, the MMS provides a system by which a postage patron can establish a relationship with the United States Postal Service for handling large quantities of mail in a most efficient manner. Other mail or parcel companies, such as United Parcel Service or Federal Express, or the like, can use comparable systems. A typical manifest mail handling system includes a computer for controlling various pieces of equipment, a weighing device for weighing mail pieces, and assorted mail handling equipment for moving mail items in and out of a weighing station. A typical mail handling procedure involves the following steps for a manifest mail handling system: 1) marking a serial number on the mail piece; 2) weighing the mail piece; and 3) storing in computer memory the weight of the mail piece, the serial number or I.D. number affixed to the mail piece, and the postage required based upon the weight of the mail piece. This procedure is carried out for each mail piece in the lot. Once each piece has been weighed individually, a manifest is prepared by the computer system. The manifest includes the following information for each mail piece: mail piece I.D. or serial number, zone, weight, postage, and cumulative total postage. Additionally, a manifest summary page is created by the computer including the following information: zone, number of pieces per zone, weight, and postage paid. Further, a statement of mailing is prepared by the computer which summarizes the results of the mail piece weighing and categorization process. Examples of such mailing statements are Form 3605 and Form 3602 as specified by the United States Postal Service for permit mailing purposes. A significant drawback exists with respect to mail weighing systems of the prior art and the system described above relating to the individual weighing of each mail piece. With respect to automatic weighing equipment, three periods of time expire for each piece of mail which is handled. These time periods are: loading time, stabilizing and weighing time, and unloading time. Elimination of one of these time components will result in a substantial savings in a mail processing system designed to post mail or a system designed to weigh mail pieces and produce a manifest of the weighed mail pieces. An improved mail processing system which reduces or eliminates the loading or unloading time for all mail pieces in a processed lot of mail to be processed will substantially decrease the costs related to the posting of mail pieces or the processing of manifest mailings. SUMMARY OF THE INVENTION An apparatus and a method for more efficient mail processing systems is disclosed. According to one aspect of the present invention, an apparatus for weighing mail pieces and imprinting postage thereon comprises means for weighing a plurality of mail pieces at one time, means for automatically detecting in connection with said means for weighing an initial stabilized weight state, a first subsequent stabilized weight state in response to a change in the number of mail pieces, and a second subsequent stabilized weight state in response to a further change in the number of mail pieces, first difference means for calculating in response to the occurrence of said first subsequent stabilized weight state a first weight value equal to the absolute difference between said initial and said first subsequent stabilized weight state and printing a postage label in response thereto, and second difference means for calculating in response to the occurrence of said second subsequent stabilized weight state a second weight value equal to the absolute difference between said first and said second subsequent stabilized weight state and printing a postage label in response thereto. According to another aspect of the invention, an apparatus for weighing mail pieces and producing a weight manifest comprises means for weighing a plurality of mail pieces at one time, means for detecting in connection with said means for weighing an initial stabilized weight state, a first subsequent stabilized weight state in response to a change in the number of mail pieces, and a second subsequent stabilized weight state in response to a further change in the number of mail pieces, first difference means for calculating in response to the occurrence of said first subsequent stabilized weight state a first weight value equal to the absolute difference between said initial and said first subsequent stabilized weight state, second difference eans for calculating in response to the occurrence of said second subsequent stabilized weight state a second weight value equal to the absolute difference between said first subsequent stabilized weight state and said second subsequent stabilized weight state, and means for producing a manifest including said first and second weight values. One object of the invention is to provide improvements in and relating to an apparatus and method for a mail processing system. Another object of the present invention is to improve efficiency in relation to mail processing systems and reduce the cost of mail preparation and delivery of mail pieces and parcels. A further object of the present invention is to provide manifest mail processing capabilities in a more efficient manner to businesses which cannot afford highly automated mail processing equipment. Related objects and advantages of the present invention will be apparent from the following description of the preferred embodiment. BRIEF DESCRIPTION OF THE DRAWINGS FIG. 1 is a block diagram illustrating the components of the manifest mail handling system according to the present invention attached thereto. FIG. 2 is a main level flowchart for the computer program of the manifest mail handling system. FIG. 3 is a flowchart for the "Save Scale Count" step 116 of the flowchart of FIG. 2 FIG. 4 is a flowchart for the "Calculate Piece Weight" step 118 of the flowchart of FIG. 2. FIG. 5 is a block diagram illustrating the components of another embodiment of a mail handling system according to the present invention. FIG. 6 is a main level flowchart for the software executed by the computer of FIG. 5. FIG. 7 is a flowchart providing further detail regarding step 602 of FIG. 6. FIG. 8 is a flowchart providing further detail regarding step 610 of FIG. 6. FIG. 9 is a flowchart providing further detail regarding step 632 of FIG. 7. FIG. 10 is a flowchart providing further detail regarding step 620 Of FIG. 7. FIG. 11 is a flowchart providing further detail for step 664 of FIG. 10. DESCRIPTION OF THE PREFERRED EMBODIMENT For the purposes of promoting an understanding of the principles of the invention, reference will now be made to the embodiment illustrated in the drawings and specific language will be used to describe the same. It will nevertheless be understood that no limitation of the scope of the invention is thereby intended, such alterations and further modifications in the illustrated device, and such further applications of the principles of the invention as illustrated therein being contemplated as would normally occur to one skilled in the art to which the invention relates. Referring now to FIG. 1, a block diagram for the manifest mail handling system 10 according to the present invention is shown. Computer 12 receives operator input from keyboard 14 and displays operator instructions via display 16. Computer 12 includes suitable amounts of I/O, ROM and RAM for execution of the software according to the present invention. Printer 20 is connected to computer 12 and p jvides a means for printing a manifest, or means for printing serialized labels. Strain gage interface 22 is connected to load cell or strain gage 30 by way of signal path 26. Load cell 30 is positioned between a base member or platform 28 and a mail bin 32. Load cell 30 provides an output signal in analog form which is proportional to the load or weight placed upon the load cell by the bin 32 and objects contained ithin bin 32. The analog output signal of the load cell - is supplied via signal path 26 to strain gage interface 22. Strain gage interface 22 includes an analog to digital (A/D) converter to convert the analog load cell output signal into a digital binary value compatible with most computer systems. The digital value representing the weight force on the • load cell is supplied to computer 12 from strain gage interface 22 by way of an RS232c serial interface connection 24 well known in the art. Floppy disk drive 18 and marking device 34, both shown connected to computer 12 by broken lines thereby indicating an alternate embodiment feature, provide optional operational characteristics for the manifest mail handling system 10 as will be described below. Operationally speaking all of the pieces of mail, mail pieces 21,23, and 25, which are to be mailed are placed into bin 32. Bin 32 can be permanently or removeably attached to the load cell 30. Computer 12 is thereafter instructed to begin execution of a manifest mail handling program. The weight of bin 32 is determined when computer 12 sends a character via interface 24 to strain gage interface 22. Strain gage interface 22 responds with 16 bits of digital information (2 bytes) corresponding to the force present on load cell 30. The 16 bits of information or scale count include one sign bit and 15 bits of resolution. Computer 12 outputs several consecutive requests to strain gage interface 22 and receives a scale count or weight reading each time a character is output. This procedure is performed in order to determine whether or not the force on load cell 30 is stable. If several readings in sequence are relatively close to the same weight, computer 12 decides that the weight placed upon load cell 30 is stable, and instructs the operator audibly and visually to proceed to remove a mail piece by placing a message stating such on display 16 and causing an audio beep to occur. At this point, an operator will remove one of the mail pieces 21 from bin 32, while computer 12 continuously monitors the weight of bin 32 via strain gage interface 22 and load cell 30. If a variation in the weight of bin 32 occurs which indicates the removal of mail piece 21, i.e. a stable weight deviation in excess of a predetermined amount particularly a tenth of an ounce, computer 12 will make an entry in the memory of computer 12 for mail piece 21, assign a serial number to mail piece 21, record the weight deviation as the actual weight of mail piece 21, and calculate the postage accordingly based upon the weight and the class of mail currently being processed. This process continues for mail pieces 23 and 25 with computer 12 calculating a weight difference or deviation as each mail piece is removed from bin 32 thereby creating a new tare weight or new reference weight. Each weight deviation will correspond to the weight of the piece removed, and a corresponding postage cost will be calculated and stored in memory for each mail piece 21,23 and 25 . In order to comply with the MMS requirements of the United States Postal Service, each mail piece must contain a serial number or I.D. number affixed to the front side of the envelope in one of three designated locations. The serial number can take the form of a number printed on the envelope by optional marking device 34. Such a device 34 is well known in the art and is computer controlled and connected by a broken line with computer 12. Upon removing mail piece 21 from bin 32, the operator places the mail piece in, under or near marking device 34 and a serial number is affixed to the front side of the piece 21 in one of the designated locations. Alternatively, marking device 34 may be a hand held imprinting device which can be placed adjacent to or on top of mail piece 21 and activated to imprint the serial number on the mail piece. An alternate technique for marking a serial number on the mail pieces is to use preprinted labels. Another alternative is to print labels with serial numbers and permit imprints using marking device 34 as each mail piece is weighed. An operator affixes each label to a corresponding envelope or mail piece just weighed. A further alternative is the use of envelopes with preprinted permit stamps and serial numbers. Floppy or fixed disk drive 18, shown connected to computer 12 by a broken line, provides an optional device for electronically creating and storing a manifest according to another embodiment. Such an electronic manifest on a floppy disk or magnetic media is specified as acceptable in the publication 401-B dated May 1989 and entitled Manifest Mailing System (MMS) First-Class 1 to 11 Ounces Mail published by the United States Postal Service. The display 16, computer 12 and keyboard 14 as well as the printer 20 and floppy disk drive 18 are standard off the shelf available hardware items and may be an IBM PC compatible computer system. The strain gage interfacing device is an SM232 model manufactured by International Computing Scale. The load cell or strain gage 30 is compatible with the SM232 device must be a 350 Ohm strain gage transducer. The SM232 device provides two bytes of binary data when activated by computer 12. Computer 12 outputs any ASCII character by way of communications link 24 to activate the strain gage interface 22. The strain gage interface 22 responds to the character received from the computer and outputs a two byte data word. Computer 12 receives the two bytes in the form of 15 bits of resolution information and a most significant sixteenth bit which is a sign bit. The sign bit indicates a positive strain or tensile loading, and a negative sign indicates compressive forces present on load cell 30. A simple conversion routine is then executed by the software in computer 12 to convert the two bytes of information into an actual weight in the form of ounces or tenths of an ounce. Such a conversion routine is well known in the art and need not be described in detail here. The load cell 30 and interface 22 are calibrated prior to the weighing of mail pieces in order to ensure accurate weighting results. Such a calibration procedure involves setting switches within the SM232 device in accordance with a known calibration procedure supplied with the SM232 device. The SM232 board consists of a load cell power supply, signal conditioning circuitry, an analog-to-digital converter (A/D) and a UART, a Universal Asynchronous Receiver Transmitter device well known in RS232 communications applications. Baud rate, number of stop bits, parity, and seven versus eight bit word length are all configurable in the SM232 device. The computer is also configured so its serial interface functions similarly. Referring now to FIG. 2, a flowchart for the manifest mail handling system according to the present invention is shown. At step 100, the computer will initialize all I/O and communications interfaces. Subsequently at step 102, any support data files necessary for execution of the system software are located and loaded into memory from mass storage devices. If the support files are not available, the program will abort and end. Optionally, at step 104 the computer determines whether the electronic date is correct by displaying the date on display 16 and requesting confirmation from the operator. If the date is not correct, program execution continues at step 106 where the operator is prompted to enter the correct date and the operator enters such at step 107. After the correct date is entered at step 107, again the program will display a prompt on display 16 requesting the operator to verify the correctness of the date. If the date is verified as correct via an input from keyboard 14 at step 104, program execution will continue at step 108. At step 108, the computer prompts the user via display 16 to enter a starting serial number or I.D. number via keyboard 14. The serial number will correspond to the first number in a sequence of numbers printed by a label printer, such as marking device 34. An initial stabilized scale count or stable weight reading is obtained by the computer at step 109. The initial stable scale count is then saved as the tare count in memory. A subsequent scale count is then obtained at step 110. At step 112, the scale count obtained in step 110 is compared to the tare count from step 109. If a weight change is detected at step 112, i.e., the scale count is different from the tare count by 2 or more, then program execution continues at step 114. If the weight difference, or scale count versus tare count is less than 2, the computer will continue with step 140 and check for an input from the keyboard. If no key has been pressed, program execution will continue at step 110. If a key has been pressed by an operator, then program execution will continue at step 142 wherein various characters entered at keyboard 14 will result in activation of various functions based upon the key depressed. If a space character is detected at step 142, the computer will change postage rates calculated to priority piece mail and return to step 110. If a space character is not detected at step 142, program execution continues with step 146 where the computer checks to see if the keyboard input is a minus character, indicating the minus key has been depressed by the operator. If true, the computer will subtract one from the I.D. number stored at step 148. Thereafter, at step 150 the computer will output to the printer "Decrease 1". Thereafter, program execution will return to step 110. If at step 146, the character is not a minus character, program execution will continue with step 152 where the program checks to see if the character entered at the keyboard is a plus character. If at step 152 the computer determines that the character entered at the keyboard is not a plus character, then program execution continues at step 158. If true, program execution will continue at step 154 and the program will add one to the I.D. number and at step 156 output to the printer the message "Increase One". After step 156, program execution continues at step 110. If the character detected from the keyboard is a hold key at step 158, then program execution will hang in an endless loop at step 160 until a subsequent character is detected which is not a hold character. If the hold character is not detected, i.e. a key other than the hold key has been depressed, then at step 160 program execution will continue with step 110. If at step 158 a hold key is not detected from the keyboard, program execution will continue at step 162 where the computer will test whether the end key has been depressed as signified by a specific character corresponding to a request to end processing. When an end processing request is received at step 162, program execution continues with step 164 where a transaction report is tallied. Thereafter the first class manifest is printed at printer 20 at step 166 and form 3602 (specified by the postal service) is also printed. After step 166, program execution continues at step 168 where a priority mail manifest is printed and form 3605 (Postal Service form) is printed at printer 20. After step 168, the program execution returns to step 104. If at step 162 an end key is not detected, program execution will continue with step 110. Returning to step 112, if a weight change has been detected by a variance in the weight reading or scale count, then program execution continues at step 114 where the scale count is input several times to determine whether the scale is stable. If the scale is not stable, as determined by monitoring deviations in the scale count readings, then program execution continues at step 110. If the scale is stable, i.e. several consecutive scale counts are within a predetermined window (plus or minus 1 or 2 counts), then program execution continues at step 116 where the scale count is again input and saved for stability. Thereafter at step 118, the piece weight of the mail piece is calculated. If the piece weight (scale count minus tare count) is zero at step 119, then the computer returns to step 110 since no weight change has occurred to justify a manifest entry and postage calculation. Else, if the piece weight is not zero, execution continues at step 120. At step 120 the computer determines whether the mail piece is a First-Class or Priority mail piece by testing to see if the converted scale count (in ounces) or piece weight is in excess of eleven ounces. If the mail piece weighs eleven ounces or less, program execution continues at step 128 where the computer will output a character to the keyboard to cause an audible beep. Following the audible beep, a line item is printed at step 130. If at step 120 the mail piece is determined to weigh more than eleven ounces, then it is thus a Priority mail piece, and execution continues at step 122 where the weight calculated is tested against a two pound limit. If the piece weight is greater than two pounds, than a 3-digit zip or zone code must be entered by the operator to appear on the manifest. The zip code information is entered at the keyboard by the operator at step 124 in response to a prompt on the display so that it can be printed with the serial number. After step 124 program execution continues at step 130. If the Priority mail is less than two pounds, then the computer will output a beep character to the keyboard and flash a signal on the display 16 at step 126. After step 126, execution continues with step 130 where a line item is printed. Following step 130, at step 134, the information regarding the mail piece, the weight, zip code, and the serial number corresponding to the weight is saved for later use in printing the manifest. At step 136, if a label printer exists, a stick-on label is printed with the serial number. The label may also have the zip or zone code printed thereon if the mail piece was determined to be Priority mail at step 120 and in excess of two pounds at step 122. Following step 136, program execution returns to step 110 to begin the process of monitoring weight via the output of the load cell and the strain gage interface 22 for another weight change indicating another mail piece has been removed from weight bin 32 thereby initiating the steps through step 112, step 114, step 116, etc. to process another mail piece. Referring now to FIG. 3, a more detailed flowchart for step 114 of the flowchart of FIG. 2 is shown. At step 300 an additional scale count is obtained by computer 12. At step 302, the computer compares the scale count or weight reading obtained at step 300 with the scale count obtained in step 110 of FIG. 2. At step 302, the scale counts from steps 110 and 300 are compared. If the count or magnitude difference is two or more, program execution continues at step 310 where the scale count is set equal to the tare count and program execution returns to step 116. If, at step 302, the count difference is less than two, then at step 306 the computer determines whether the current scale count is different from the previous scale count obtained at step 110. If the scale count from step 300 is different, then it is saved as the new scale count at step 308. Program execution continues with step 116 after step 308. If no difference is calculated at step 306, then program execution returns to the calling routine. Referring now to FIG. 4, a flowchart for step 118 of FIG. 2, Calculate Piece Weight, is shown in more detail. At step 400, the computer subtracts the scale count saved at step 308 from the previously saved tare count from previous execution of step 400, and then saves the scale count as the new tare count. At step 402, the count difference is divided by a scaling factor to determine actual weight in ounces. Subsequently, at step 404, the value calculated in step 402 is converted into pounds and ounces and stored in a memory location. Program execution thereafter returns to the calling routine. The unique operation of the program according to the present invention provides the operator with the ability to either load the bin piece by piece with mail to be processed for the MMS. Alternatively, the mail may all be loaded into bin 32 and each piece removed one by one to weigh each piece and produce the manifest necessary for MMS. Either technique, the unloading of the bin or the loading of the bin piece by piece, both result in the same time savings in that the time delay for stabilization of the scale is minimized and a unique process for producing the manifest necessary for manifest mailing system requirements is achieved. Attached to the end of the specification is a program listing of a program executable on an IBM compatible computer. The program listing corresponds to the flowcharts disclosed in FIGs. 2-4 and is included to further describe the operation of the system 10 according to the present invention. Referring now to FIG. 5, a block diagram for another mail handling system 510 according to the present invention is shown. The component parts of the system 510 are identical with those of the system 10 shown in FIG. 1 with the postage meter 520 replacing the printer 20 of FIG. 1. Thus, instead of printing serialized labels or manifests as in the embodiment of FIG. 1, postage meter 520 is used to print postage labels or imprint envelopes removed from bin 532 in the operation of the system 510 according to the present invention. System 510 is comprised of a bin 532 containing envelopes 521, 523 and 525, a load cell 530 upon which bin 532 rests, a base 528 which supports load cell 530, a signal path 526 for interfacing between load cell 530 and strain gage interface 522, a serial data interface 524 corresponding to a standard RS232c interface, a computer 512 which accepts inputs from keyboard 514 and provides feedback in the form of informative displays and data on display 516, and postage meter 520 which is connected to computer 512 via interface 519. Interface 519 provides a compatible electrical communication interface between computer 512 and meter 520. Bin 532 can be permanently or removeably attached to the load cell 530. Operationally speaking, the system 510 functions nearly identically to the system 10 of FIG. 1 with the exception of the computer 512 supplying a command string via interface 519 to meter 520 for each successive stable weight state corresponding to a piece of mail removed from bin 532. Thus, a postage label providing the appropriate amount of postage or an imprint operation, wherein mail such as envelope 521 is located beneath an imprinting station of meter 520, provides the means for marking envelope 521 with the appropriate postage cost based upon weight of the envelope 521. A step-by-step operation of the system involves loading an assortment of envelopes or pieces of mail to be posted into bin 532. Such envelopes or pieces of mail are represented by envelopes 521, 523 and 525. As an object is removed from the bin 532, such as envelope 521, the forces present on load cell 530 change by an amount equal to the weight of envelope 521. A weight or force signal is monitored, via signal path 526 connecting strain gage interface 522 with load cell 530. Strain gage interface 522 responds to commands from computer 512 to monitor the signal present on signal path 526. Thus, when computer 512 requests strain gage interface 522 to analyze the signal present on signal path 526, strain gage interface 522 responds with 16 bits or 2 bytes of information corresponding to the force signal produced by load cell 530 which corresponds to the weight or forces acting on load cell 530. When computer 512 is in a state of operation of continuously monitoring the forces on load cell 530, and a deviation in the weight of the objects in bin 532 is detected by way of a change in the signal present on signal path 526, computer 512 will take additional readings from strain gage interface 522 to determine whether or not the weight or force on load cell 530 has stabilized. If so, computer 512 concludes that an envelope or object has been removed from bin 532. Computer 512 then determines the difference between the weight or force reading stored for the previous stable weight state of the load or force present on load cell 530 and the new detected stable weight state for the current output of load cell 530 and computes a weight difference value. Information regarding the class of mail processed, initially entered by an operator through keyboard 514, provides computer 512 with guidance as to the amount of postage necessary for the object removed from bin 532. Computer 512 then accesses tables of information stored in memory which provide the appropriate postage cost information based on class of mail and priority mail determinations in order to electronically command postage meter 520 to print an appropriate label or imprint for the weight of envelope 521. Each subsequent envelope removed from bin 532 is processed for postage cost in accordance with the previously described sequence of events, wherein the system determines a new tare weight and calculates a difference value for each successive stable weight state. Each difference value, calculated from the immediately preceding stable weight state and the current stable weight state, corresponds to the weight of a mail piece removed from bin 532. Postage meter 520 includes two devices in the preferred embodiment. A DATA-PAC Model No. MPC-100 Meter Communications Device provides a user friendly interface between a serial communication port of computer 512 and postage meter 520. The DATA-PAC device is available from DATA-PAC Mailing Systems Corp., 247 North Goodman St., Rochester, New York 14607. The DATA-PAC device enables convenient electronic interfacing between computer 512 and postage meter 520. Postage Meter 520 is preferably a Pitney Bowes 6500 series postage meter. Any postage meter including remote control of cost or postage settings and capable of producing a mail imprint in response to electronic signals may be substituted for the DATA-PAC/Pitney Bowes 6500 combination disclosed herein. Referring now to FIG. 6, a flowchart for the main control loop of the computer program executed by the mail weighing system 510 according to the present invention is shown. Communication ports and program variables are initialized at step 600. In addition, flags and other program variables are initialized at step 600 so as to ensure proper functioning of the software. At step 602, computer 512 examines the value of a software flag which indicates whether a mail piece has been processed or not processed. If at step 602 the software flag indicates that no mail piece has been processed, then program execution loops on itself at step 602 until the software flag indicates a piece has been processed. If, according to the software flag, a mail piece has been processed, program execution continues at step 604 where the computer calculates the piece weight of the mail piece removed from bin 532 by determining the absolute value of the difference between an initial bin tare weight determined in step 600 and a subsequent bin tare weight determined at step 602. The absolute value of the difference of these two weights is calculated at step 604. If the difference value or piece weight calculated in step 604 exceeds certain predetermined weight values which result in the mail piece being categorized into a different mail rate class, a decision block 606 is encountered wherein the computer determines whether any zone information is required based upon the weight of the mail piece. If zone information is required, program execution will continue at step 608 where the user will be prompted to enter zip or zone information via the keyboard 514. After the user enters zip or zone information at step 608, program execution continues at step 610. If zone information is not required, program execution will continue at step 610 following step 606. Postage meter 520 is programmed at step 610 to imprint the envelope or a mailing label with the proper postage based upon the weight of the mail piece determined in step 604. At step 612, a new tare weight is assigned to the bin 532 at step 612. This new tare weight reflects the weight of the bin and any envelopes or mail pieces which remain in the bin at that time. Subsequently, program execution returns to step 602 where the computer 512 continuously monitors the weight of the bin 532 to determine whether a subsequent mail piece has been removed from the bin. The computer software described in the flowchart of FIG. 6 is a means for automatically detecting a first and subsequent stabilized weight states when mail pieces are removed from the bin 532. The means for detecting then supplies a postage cost signal to the postage meter for each detected stable weight state which occurs after the first initial stable weight state is determined. Referring now to FIG. 7, a flowchart which provides additional detail of step 602 of FIG. 6 is shown. The flowchart of FIG. 7 provides a detailed program flow description for block 602 of FIG. 6 wherein it is determined whether a mail piece has been processed. At step 620, computer 512 obtains a current scale count from strain gage interface 522 by electronically requesting such via the interface 524. In step 622, it is determined whether or not the scale is stable based upon multiple scale count readings obtained in step 620. If the scale is not stable at step 622, program execution will continue at step 624 wherein the computer 512 displays the message "unstable" on display 516. Subsequently, a flag is set which indicates that a mail piece has not been processed at step 626. Program execution then returns to step 604 of FIG. 6. If at step 620 a flag is set indicating interface 522 is responding with stable scale count values, computer 512 will make a determination at step 622 that the scale is stable and program execution continues at step 628 where the decision block is encountered which tests the current scale count versus the quantity (tare-20) . If the current scale count is not greater than the quantity (tare-20), the tare is adjusted at step 630 to the current scale count, and the message "stable" is displayed at step 636. Thereafter, program execution returns to the calling routine. If at step 628 the scale count, or most recently obtained reading of the bin weight, is less than the quantity (tare-20), indicating that a piece of mail has been removed from the bin, then computer 512 determines whether the postage meter 520 has acknowledged imprinting the last mail piece. If the last mail piece has not been imprinted, i.e. the postage meter has not cycled, then program execution loops on decision block 632 until the meter acknowledgment is received. After the meter acknowledgment is received, program execution continues at step 634 wherein a flag is set indicating that a mail piece has been processed, and an audible beep is produced by computer 512 to prompt the operator to resume processing mail pieces. Subsequently, after step 634 the message "stable" is presented on display 516 and program execution returns to the calling routine. Referring now to FIG. 8, a more detailed flowchart for step 610 of FIG. 6 is shown describing how the postage meter is set or programmed to the proper postage based upon the weight of the mail piece. At step 640, computer 512 looks up a value in a predetermined table which provides information regarding the proper postage cost to be imprinted on the most recently processed mail piece. The postage cost is based upon the weight of the mail piece determined in step 604 of FIG. 6. Optionally, at step 640, zone information from step 608 of FIG. 6 is incorporated into the decision process of computer 512 in determining proper postage cost. Thereafter, at step 642, computer 512 outputs a command string, or series of bytes, to the DATA-PAC postage meter interface device. The following table provides information describing the component parts of the "SET METER" message sent to the postage meter via the meter interface device by computer 512 to prepare the postage meter for imprinting postage cost on an envelope or label. Various techniques may be implemented to activate the meter 520 to imprint. One such technique includes placing the envelope to be imprinted onto a conveyor positioned to supply envelopes to an imprinting zone or area associated with meter 520. When the envelope arrives at the imprinting area, a sensor detects the presence of the envelope and the meter 20 is cycled to imprint postage costs on the envelope. Optionally, for larger mail pieces, the operator is provided with a hand or foot activated switch for tripping the meter 520 thereby causing a postage label to be imprinted. Referring now to FIG. 9, additional details are provided regarding step 632 of FIG. 7 in determining if the postage meter has acknowledged whether the last mail piece has been posted, or imprinted, with the correct postage. At step 650 of FIG. 9, computer 512 continuously monitors a serial communications port input buffer to determine whether or not a message byte has been received over the postage meter interface 519 from the postage meter (or interface device) . Until a status message is received indicating the meter 520 is ready to imprint another mail piece, program execution loops on itself at step 650. Once the status message has been received indicating that an imprint has occurred, program execution returns to the calling routine. (Program execution continues at step 634 of FIG. 7.) Referring now to FIG. 10, a more detailed description of the program steps executed at step 620 of FIG. 7 is shown for determining the current scale count corresponding to the weight of the bin 532 and the mail pieces presently contained therein. At step 660 computer 512 transmits an electronic signal to strain gage interface 522 via serial communications link 524. The serial communications link 524 is typically an RS232c standard interface. Strain gage interface 522 responds with a two byte value indicative of the load cell 530 output signal. The two byte value is saved at step 662. Three successive scale count readings are next obtained at step 664 from the strain gage interface 522. At step 665, computer 512 determines whether the three scale count readings obtained at step 664 are within three of one another. If so, program execution continues at step 668 where the three readings are averaged to produce a mean scale count value. Thereafter, at step 670, a software flag is set indicating that the scale counts or weight readings are currently stable. Program execution thereafter returns, after step 670, to the calling routine. If the three readings tested at step 665 are not within three of each other, program execution continues at step 672 where a software flag is set indicating that the scale is cu r rently unstable. After step 672, program execution returns to the calling routine. Referring now to FIG. 11, a more detailed software flowchart for step 664 of FIG. 10 is shown wherein three successive scale count readings are obtained by computer 512 from strain gage interface 522. At step 680, a two hundred millisecond delay occurs to provide a time delay between sampling the weight of the bin and its contents. At step 682, the computer clears the input of the communication port electronics connected to interface 524. At step 684, computer 512 transmits a message to strain gage interface 522 requesting a current scale count reading. At step 686, 5 computer 512 monitors interface 524 for data originating from strain gage interface 522 which is destined for computer 512. If two bytes are not received at step 686, program execution will continue in a loop at step 686 until either two bytes are received or a timeout occurs. Subsequently, at 0 step 688, computer 512 checks to determine whether a timeout occurred at step 686. If a timeout did occur, program execution continues at step 692 where the computer displays the message "scale error" on display 516 and the communications port is re-initialized at step 694. In 5 addition, the flag indicating that a scale error or timeout occurred is reset at step 696 before program execution returns to the calling routine. If at step 688 it is determined that a timeout did not occur at step 686, then program execution continues at step 690 where computer 512 o will calculate the scale count in ounces by converting the two byte value received in step 686 into ounces. Such a conversion is well-known in the art and need not be discussed here. Attached to the end of the description of the preferred 5 embodiment are further additional computer software listings for the programs executed by the computer 512 of the alternate embodiment according to the present invention. The programs are in the "C" language and correspond to the programs described in the flowcharts of FIGS. 6-11. The 0 software listings for the embodiment of FIG. 5 are dated either March 18, 1990 or March 6, 1990. The flowchart of FIG. 6 is corresponds with the main control loop designated MAIN in the program listing. The flowchart of FIG. 7 corresponds to the routine named CHAMP1. The flowchart of 5 FIG. 8 corresponds to the routine named TRIP in the software listing. The flowchart of FIG. 9 corresponds to the subroutine named WEIGHT_4_PIECE. The flowchart of FIG. 10 corresponds to the routine named GWT of the software listing. The flowchart of FIG. 11 corresponds to the routine labelled GET_WEIGHT. While the invention has been illustrated and described in detail in the drawings and foregoing description, the same is to be considered as illustrative and not restrictive in character, it being understood that only the preferred embodiment has been shown and described and that all changes and modifications that come within the spirit of the invention are desired to be protected. While the term "mail pieces" is used, it is to be understood that such should also be interpreted to cover parcels as well. ttinclude <stdio.h> ttiπclude <bios.h> ^include <stdlib.h> ^include <graph.h> ttdefine COM_NUM 1 /* should be 1 */ extern unsigned int lbs; extern char stable; extern char -far *buf f erC 103 ; gwt( ) i unsigned int 1 , 1bh, lbl , t=0, r=0; unsigned int ls_3001; double lbt=0; get_weight( ) ; lbl = lbs; lbh = lbs; for(l=0;l<2; 1++) C get_weight( ) ; if (lbs < lbl) lbl = lbs; else lsCt++] = lbs; if (lbs > lbh) lbh = lbs; else lsCt++] = lbs; if ((lbh-lbl) > 2) 1 = 5; > if • ( ( lbh - lbl) < 3) i stable = 1 ; for(r=0; r<t; r++) lbt += is_r_; lbs = lbt/t; } else stable 0; get_weight( ) i /% This routine requests the scale's weight with any character */ /* and returns it in acount */ unsigned char temp; unsigned int com_charCώl , =0, i ,j ,j 1 ; /* fαr( j 1=0; JKIO; jl++> for( j=0; j<22222; j++> ; */ for( j=0; j<63000; j++) ; temp = _bios_serialcom(_C0M_SEND,C0M_NUM,87) ; /* */ /* com_charC0] = 0; com_charC 11 = 0; com_char[2] = 0; cσ~.__charC3_. = O; com_charC4_I = 0; com_charC5D = 0;*/ do C C++; com_charCc] = _bios_serialcom(_COM_RECEIVE,COM_NUM,0) ; > while(c < 2) ; lbs = (com_charCl 1*256) + com_c arC23; if (lbs < 32768) lbs = 32768 - lbs; Source listing for "THE CHAMP". Files printed below are: champOl . gwt.c priority.c Written by Christopher A. Bake, M.A. I.L.code Inc. 'THE CHAMP:, Version 1.0 (c) M.A. I.L.code Inc., 19B9 ALL RIGHTS RESERVED ***** PROPRIETARY SOFTWARE ***** THIS SOFTWARE IS THE CONFIDENTIAL PROPERTY OF M.A.I .L.CODE INC. IT MAY NOT BE DISCLOSED, USED, REPRODUCED, DISTRIBUTED, RECREATED, MODIFIED OR DISPLAYED IN WHOLE, OR IN PART, WITHOUT THE EXPRESS WRITTEN AGREEMENT OF M.A.I.L.CDDE INC. MISAPPROPRIATION OF TUTS SOFTWARE SHALL BE PROSECUTED TO THE FULLEST EXTENT OF THE LAW. (Printed 10/16/89 by CAB) */ ttiπclude <stdio.h> ^include <bios.h> ^include <stdlib.h> ttiπclude <graph.h> ttinclude <dos.h> ^include <mallαc.h> ttdefiπe C0M_NUM O /* 1 */ ttdefine COM NUM2 1 /* 2 */ char far *bufferC 101 ; char cc_bufferC 101 ; char last_label = 0; /* 0 for 1st class, 1 for Priority Mail */ FILE *stream; FILE *streaml ; FILE *stream2; unsigned int lbs, lbsav, are, lbfinal ; char stable; float lbsl , lbs2, lbs3,oz inal ; char zαne=0, ptype=0; /* zone and piece type */ char mC201 ; float total_post=0; float tot l_oz_lc=0, to al_αz__pm=0; unsigned int total_lc=0, otal_pm, otal_1b_lc=0, o a1_1b_pm=0; extern char zipClOOOl; extern int zcC61C711; char l_clearC: = .90,83,13); char l dlCD = 80,87, 6,48,48, 9,48, 8,51 ,48,48,48,49,57,53,48, 13, 80,87,66,48,48,49,48,48,51 ,48,49,48,48,55,48,48, 13, 80,87,66,48,48,49,48,49,48,48,48,48,49,57,54,48, 13, 80,B7,66, 8,50, 8,53,48,51 ,48,49,48,48,55,48,48, 13, 80,87,65,48,48,53,53,48,56,51 ,49,48,48,48,70,73,82,83,84,32, 67,76,65,83,83,32,77,65,73,76, 126,48, 13, 80,87,65,48,48,52,54,48,54,55,49,48,48,48,85,83,32,80,79,83, 84,65,71 ,69,32,80,65,73,68, 126,48, 13, 80,87, 65, 48, 8,52,4B, 8,53, 9, 9,48,48, 8, 3,78, 8,73, 5, 8, 65,80,79,76,73,83,44,32,73,7B, 126,48, 13, 80,87, 65, 8, 48,52,53,48,51 ,52, 9,48,48,48 ,80,69,82,77 , 73 ,84 , 72,78,79,46,32,35,55,51 ,55,52, 126,48, 13); V* Z W 0 4 2 0 1 3 1 4 2 0 1 20 */ char l_d2Cl = .90, 87, 48,52,50, 4F,56,51 ,49,52, 48, 9,50, 4B, 13, /* IC Label */ 80,87,65, 48,48,52, 9, 48,56,51 , 49,4B, 48,48,70, 73,82,83,84 ,32, 67,76,65,83,83,32,77,65,73,76, 126,48, 13); char l_d3_l = .90,87,48,52,48,48,56,51,49,52,48,49,50,48, 13, /* priority */ BO,87, 5, 48,48,53,53,48,56,51 , ,48, 8,48,80,82,73, 79,82, 73, 84 ,B9,32,77,65,73,7 , 126,48, 13) ; char l_d4C__= .BO,B7,65,48,48,56,48,48,49,48,49,48,48,4B) ; int ln_d2 = 49; int ln_d3 = 46; int ln_dl = 198; int ln_clear = 3; char priortCl = "P R I 0 R I T Y A I L"; char far *v; float prior( ) ; v = (char far* )OxBBOOOOOO; while(inp(8B9) 1= 223) system( "els" ) ; printf ( "Printer not ready. \n\nPress any key to retry...">; c=getch( ) ; ) c = 0; αpen_com( ) ; fprintf (stdprn, "7.c" , IB) ; init_label ( ) ; cls( ) ; /* Ξtream2 = fopen ("blank .dat" , "w" ) ; stream = fopen( "status. dat" ,"r+" ) ; fseek (stream,OL,SEEK_ΞET) ; e = fgetc ( stream) ; if (e == ' 1 ' ) printf (" Improper shutdown ! '. \n\n"); printf("Do you wish to continue where you left o (Y/N) ? " ) ; do { el = getch( ) ; ) while(el 1= 'Y' > if (el == ■ y ' 1 ! el == 'Y' ) { streaml = fopen ("pieces.dat", "a+" ) ; fscanf (stream, "7.5u 7.5u 7.5u\n" ,&cc ,&total_lc ,&total_pm) ; ) else C streaml = fopen ("pieces.dat" , "w" ) ; clsO; ) ) if (e == '2' ) { print( ) ; print1 ( ) ; _εetvideomode(_DEFAULTM0DE) ; exi (0) ; ) if(e == * 3' ! : e == EOF) streaml = fopen ("pieces.dat" , "w" ) ; ) */ /* _setvideomode(_HRESBW) ; _setvisualpage(0) ; */ /* stream = fopen ( "one.dat" ,"r" ) ; */ strea l = fopen( "pieces.dat" , "w" ) ; /* for( t=0; t<10; t++) bufferCtl = (char far *) al lo ((unsigned int)_imagesize(301 ,81 ,334, 104) ) ; cls( ) ; is = _imagesize(301 ,81 ,334, 104) ; for( t=0; t<=is; t++) *(bufferC 11+t) = fgetc (stream) for( t=0; t<=is; t++) *(bu ferC21+t) = fgetc (stream) for( t=0; t<=is; t++) * (bufferC31+t) = fgetc (stream) for( =0;t<=is; t++) *(bufferC41+t> = fgetc (strea ) for(t=0;t<=is;t++) *(bufferC51+t> = fgetc ( stream) for(t=0; t<=is;t++) *(bufferC63+t) = f etc (strea ) for(t=0; t<=is; t++) *(bufferC71+t) = f et (strea ) for(t=0; t<=is; t++) *(bufferCB3+t) = fgetc (strea ) for( t=0; t<=is; t++) *(bufferC93+t) = fget (stream) for(t=0; t<=is;t++) *(bufferC01+t) = fgetc(strea ) fclose(stream) ; */ get_zips( ) ; get_charges( ) ; cursαr_pff( ) ; screenO( ) ; /* check_date( ) ; */ /*cc = get_id_num( ) ;*/ /* screen1 ( ) ; */ champl ( ) ; tare = lbs; do . /* display_num(cc ) ; #/ conv_c (c ) ; bp = champl ( ) ; if (bp != 1) { lbsav = lbs; tare = lbs; c = getch( ) ; cc—; ) else { lbsl = (tare - 1bs) / ( float)715; lbs2 = lbsl; lbsl = lbsl * 1000; 1bs3 = (unsigned int) lbsl; if (lbsl-lbs3 > .5) lbs3++; lbs3 = lbs3/1000; lbsl = lbs3; lb = lbs2; oz = (lbsl - lb) * 16; oz2 = oz * 10; oz3 = oz * 10; if ( (oz3 - oz2) > .5) oz2++; oz3 = oz2; oz3 = αz3/10; oz1 = oz ; if (oz > ozl) ozl++; 16 .00 ) ozfinal oz 1 ; lbf nal lb; if (αzl > 11 ! ! lb > 0) c prior_label ( > ; for( t=0; t<26; t++) . *(v+1686+(t++) ) = priortCtl; *(v+16B6+t) = 0x8F; ) if((lb < 2) ! ! (lb==2 && ozl==0) ) . kl = 2; kαz = 0; ) else . if (αzl>0) kl=lb+l; else kl = lb; ) _settextpoΞition(24,2) ; printf ("7.2d Lb 7.3.2f Oz " , Ibfiπal ,oz) ; p = prior( lb,ozl , kl , koz ) ; ptype = 1; - if(ozl>0) . lb++; αzl=0; ) ) else firstc_label ( ) ; ptype = 0; if (ozl == 1) p = .35; 5 if (ozl == 2) P = -45; if (ozl == 3) p = .65; if (ozl == 4) 10 p = .85; if (ozl == 5) p = 1.05; if (ozl == 6) p = 1.25; 15 if (ozl == 7) p = 1.45; if (ozl == 8) p = 1.65; if (ozl == 9) 20 p = 1.85; if (ozl == 10) p = 2.05; if (ozl == 11) p = 2.25; 25 _settextposition ( 11 ,44 ) ; _αuttext("lst Class ") ; _settextposition (2 ,25) ; printf (" Charge 7.2.2f ",P>; ) 30 _settextposition(24,2) ; printf ("7.2dLb 7.3.2f Oz " , 1bfinal ,oz ) ; _strtime( time) ; if (bp == 1 ) /* no key hit */ C if ( lc == 0) header( ) ; if ( zone == 1 ) zone2 = ' X ' ; 40 else zone2 = zone 48: if ( ptype == 0) fprintf(stdprn, " 7.5d 7.s IC 7.2d lb 7.5.2-f oz $ 7.6.2f\n",cc,time,lbfinal,oz,p); else fprintf(stdprn, " 7.5d P7.c 7.2d lb 7.5.2-f oz * 7.6.2f\n" ,cc, time, zone2, lbfinal ,oz,p) ; lc++; if (lc > 50) i lc=0; fprintf(stdprn , " ! ! ! ! ; ! \n" ) ; fprintf(stdprn, "7. ~ " , 12) ; fflush(stdprn) ; ) ) else . if (c == 32) C total_pαst = total_post - p; tαtal_oz_lc = total_oz__lc - ozl; tσtal_lb_lc = total_lb_lc - lb; total_lc—; lb=l; ozl=0; kl=2; koz=0; p = prior( lb,ozl , kl , koz ) ; fprintf (stdprn , " 7.5d ***** Piece Changed to Priority Mail ***** $ 7.6.2f\n" ,cc , p) ; bp = 1; ptype = 1; /* now priority */ ) if (c == '+' ) C cc++; fprintf (stdprn , " ***** Manua ID Increase *****\n"); conv_cc ( cc ) ; ) if (c == '-' ) t c — ; fprintf (stdprn, " ****** Manual ID Decrease *****\n" ) ; tαtal_post = tαtal_post - p; if (ptype == 0) C total_σz__lc = total_oz_lc - ozl total_lb_lc = total_lb_lc - lb; total_lc—; ) else if ( ptype == 1 ) C total_αz_pm = total_oz_pm - ozl total_lb_pm - total_lb_pm - lb; total_p — ) conv_cc (cc ) ; if ( C == 0) . c = getch( ) ; if (c==61) C _setcolor( 15) ; _settextposition( 17,32) ; _outtext( " ?" ) ; _se te tposition ( 18,32) ; _outtext("3 ON HOLD 3"); _settextpositιon ( 19,32) ; _θuttext(" "); _setcolor(7) ; do C c = getch( ) ; t=0; if ( c==0 ) C t=l; c=getch( ) ; if (c==61) t=2; ) ) while(t==0 ! . t==l ) ; _settextposition( 17, 32) ; _αuttext( " " ) ; _settextposition ( IB , 32) ; _αuttext(" " ) ; _settextposition ( 19,32) ; _outtext(" " ) ; lbsav = 64000; bp = champl ( ) ; bp = 0; f lush(stdprn ) ; 10 if (bp == 1 ) C total_post = total_pαst if (ptype ==0) 15 tota1_oz_1c total_oz_l ozl ; total_lb_lc total lb lc lb; tαtal_lc++; 20 else if (ptype == 1) <_ total_αz_pm = total_oz_pm ozl ; total_lb_pm = total_lb_pm lb; total_pm++; 25 ) if ( tαtal_oz_lc > 16.0) C total_lb_lc++; total_oz_lc = total_oz_lc 16.0; 30 ) if ( total_αz_pm > 16.0) C total_1b_pm++; total_oz_pm = total_oz_pm - 16.0; 35 ) if (ptype == 0) wt = oz1 ; else wt = lb; fseek (stream,OL,SEEK_ΞET) ; fprintf (stream, "7.c7.5u 7.5u\n" , ' 1 ' , (cc+1 ) , total_lc , total_pm) ; fprintf (streaml ,"7.5d 7.Id 7.2d 7.1d" ,cc , zone,wt, ptype) ; if ( (float)lc/10 == (iπt)lc/10) fflush(stream) ; fflush(streaml ) ; ) f lush(stdprn ) ; ) zone = O; if(cc > 32000 ) cc=l; tare = lbs; _settextposition(9, 44) ; printf( "7.s" ,cc_buffer) ; _settextposition ( 14,44) ; printf ("7.u" , total_lc) ; _settextposition( 16,44) ; printf ( "7.u" , total_pm) ; ff lush(stdin ) ; if( c == 59) _setcolor( 15) ; _settextposition (16,18); _outtext(" || || " ) ; _settextposition( 17, 18) ; _outtext("|| Are You Sure You Want To Quit " ~ (Y/N) ||"); _sette tposition (18,18); _outtext("l' 'I" ) ; do C a = getch ( ) ; ) while (a ! = 'y' && a '. = 'Y' && a != ' n ' && N' ) if (a == a == N * ) C _settextposition( 16, 18) ; outtext( " " > settextposi ti on (17, 18); " outtextC " ) ; _settextposition( 18, 18) ; ~ outtext " ) ; c = 0; ) _setcolσr(7 ) ; ) ) while(c 1=59) ; fclose(streaml ) ; fprintf(stdprn , " ! \π" ) ; /* if (lc >40) fprintf (stdprn, "7.c", 12) ; */ /* fprintf (stdprn, "\n\" ) ; fprintf (strdprn , "7.6d - 1st Class Pieces \n\n" , total_lc) ; fprintf (stdprn , "7.6d - Priority Pieces \n" , total_pm) ; */ fprintf (stdprn, "7.c" , 12) ; fflus (stdprn ) ; fseek(stream,OL,SEEK_ΞET) ; fprintf (stream, "7.c" , '2 * ) ; print ( ) ; printlO; fseek(stream,OL,SEEK_SET) ; fprintf (stream, "7.c" , '3' ) ; _setvideomode(_DEFAULTMODE) ; ex i t ( O ) screeπO( ) i unsigned int g; char far *v; v = (char far * )OxBBOOOOOO; for (g=0; <106;g++) *(v+g) = 205; *(v+320+g) = 205; *(v+3842+g) = 205; *(v+3522+g) = 205; * (v+(++g) ) = 15; *(v+320+g) = 15; *(v+3B42+g) = 15; *(v+3522+g) = 15; or(g=l ;g<2 ;g++) *(v+(g*160)) = 1B6; *(v+(g*160)+l ) = 15; *(v+(g*160)+15B) = 186; *(v+(g*160)+159) = 15; ) *v = 201 ; *(v+l) = 15; *(v+15B) = 187; *(v+159) = 15; *(v+3998) = 188; *(v+3999) = 15; *(v+3840) = 200; *(v+3841) = 15; *(v+320) = 204; *(v+321) = 15; *(v+47B) = 185; *(v+479) = 15; *(v+3520) = 204; *(v+3521) = 15; *(v+367B) = 1B5; *(v+3679) = 15; /* _seta tivepage(2) ; _rectaπgle(_GFILLINTERIOR.0,0,639,3) ; _rectangle(_GFILLINTERIOR.O, 196,639, 199) ; _rectangle(_GFILLINTERIOR.O, 179,639, 1B1 ) ; _rectangle(_GFILLINTERIOR.O, 1 ,639,227) ; _settextposition (2,3) ; _αuttext( ' (c ) 1989 The Champ - Heaveyweight Mail Processor ver 1.0"); /* _rectangle(_GFILLINTERI0R.0,21 ,639,24) ; */ _settextposition(9,27) ; _outteκt(" Piece ID # :"); _settextposition(9,27) ; _outtext(" Piece Class :">; _settextposition (9,27) ; _αuttext("tt of 1st Class :"); _sette tposition (9,27) ; _outtext("U of Priority :"); ) header! ) C char *datel; _sette tposition (15,34) ; _strdate(datel ) ; fprintf (stdprn, "THE CHAMP TRANSACTION REPORT 7.s\π" ,datel ) ; fprintf (stdprn, " \n">; fprint (stdprn," ! ID tt ! Time-Stamp ! -Class- ! Weight ! Post age !\π" ) ; fprintf (stdprn, "\π" ) ; fflush(stdprn ) ; ) conv_c ( r) unsigned-int r; _ char *p; char temp; my_iota ( ,cc_buffer) ; /* convert in base 10 */ ) • my_iota ( i ,c ) unsigned int i ; char *c ; . unsigned int 11 , 12, 13, 14, 15, is ; is = i; 11 = is/lOOOO; c Z O l = 11+4B; 11 = 10000*11; 12 = (is-11 )/1000; cCi: = 12+4B; 12 = 12*1000; 13 = (is-ll-12)/100; cC23 = 13 + 48; 13 = 13*100; 14 = (is-ll-12-13)/10; cC33 = 11+48; 14 = 14+10; 15 = (is-11-12-13-14) ; cC43 = 15+4B; champl ( ) C char bp=0; do C gwt( > ; _settextposition (23, 1 ) ; ' if (stable == 1 ) . if ((bp == 0) && (lbs < lbsav-20)) C tonel ( ) ; bp = 1 ; lbsav = lbs; ) else if ((bp == 0) && (lbs > lbsav+20) ) . lbsav = lbs; tare = lbs; _settextposition(24,70) ; outtext( "Stable "); ) else bp = 0; _settextpαsition(24,70) ; _outtext( "Unstable" ) ; _settextposition( 12,35) ) while((bp '.= 1) && IkbhitO); return ( bp) ; open__com( ) unsigned char temp; temp = _biO5_serialcom(_C0M_INIT,C0M_NUM,_C0M_CHRB ! _C0M_N0PARITY ! _C0M_1200 ! _C0M_ST0P1 ) ; temp = _bios_serialcαm( _C0M_INIT , C0M_NUM2 , _C0M_CHR7 ! _C0M_EVENPARITY '. _C0M_4800 . _C0M_ΞT0P1 ) ; ) check_date ( ) C struct dosdate_t date; char c, k; _rectangle(_GB0RDER,248, 105,357, 125) ; _re tang1e(_GB0RDER,252,107,353,123); _dos_getdate(&date) ; _settextposition( 15,34) ; printf ( "7.2d-7.2d-7.4d" ,date.month,date.day,date .year) ; _settextposit on ( 11 ,24 ) ; printf("Is Today's Date Correct (Y/N) ? "); _settextposition ( 11 ,56) ; do c = getc ( ) ; ) while (c != 'Y' && c != 'y' && c 1 = 'N' && c != 'n' ) ; if ( c == 'n' ! ! c == 'N' ) { _settextposition( 15,34) ; _outtext(" "); get_cha( 10,34, 15) ; ) for(k=ll ;k<20;k++) < _settextposition ( ,5) ; _outtext( " " ) ; ) get_cha( t , loc , locay) char t; /* number of chars to get */ char locx, locay; { char c , 1=0; char loca , tl=0, t2; locax = locx; for( t2=0;t2<20; t2++) mCt23 = '\0' ; _settextposition( locay, locax) ; do { do { _set extposi on ( locay, locax ) ; _σuttext( "_" ) ; _sette tposition ( 1ocay, 1oca ) ; c = getch( ) ; if ( (( c >= '0' && c <= '9' ) ! ! c == '-' ) && tl < t) { printf ("7.c" ,c) ; mCtll = c; tl++; locax++; ) if ( c == 8 && tl > 0) . _αuttext(" "); _settextposi ion( locay, lαcax-1 ) ; _outtext(" "); _settextposition( locay, lαcax+tl ) ; tl—; locax—; mCtl3= ' \0' ; ) ) while( tl < t && c != 13); if (c != 13) . _settextposition( locay, locax ) ; _ uttext("_") ; c = getch( ) ; if (c == 13) 1 = 1; else if ( c ==8) ( _settextposition( locay, locax) ; _outtext(" " ) ; _settextposition( locay, locax-1 ) ; _outtext(" "); _settextpositiαn( locay, locax+tl ) ; tl--; loca —; • ) ) else i 1 = 1; _αuttext(" " ) ; ) ) whi l e ( 1 == 0 ) ; get_ id num ( ) char k; unsigned int i; _rectang1e(_GB0RDER,24B , 105,357 ,125); _rectang1e( _GB0RDER,252,107,353,123); do C _se te tposition ( 11 ,23) ; _outtext(" Enter Starting Label ID"); _settextposition ( 15,36) ; _outtext(" "); _settextposition ( 15,36) ; get_cha(5,36, 15) ; i = atαi ( ) ; if(i > 32000) tonel ( ) ; ) while (i > 3200) ; for(k=ll;k<20;k++) . __settextpositiσn(k,5) ; _outtext(" " ) ; ) return ( i ) ; float prior( lb,oz1 , k1 ,koz ) int lb,ozl; int kl , koz ; C char zonel ; float p; priority( ) ; zonel = zone; if (zonel==l ! ! zonel= ~ 2 ! ! zαnel==3) zσnel=3; if (kl==2) C lb = 2; _settextposition (24,25) ; _outtext(" "); ) else C _settextposition(2 ,25) ; printf("Zone 7.c" , zone+48) ; p = (zcCzonel-33Ckl3 ) ; p = p/100; _settextposition(24,34) ; printf ("Charge 7.2.2f ",p); return (p) ; init_label ( ) int g ; for(g=0;g<lπ_clear;++g ) _bios_serialcom(_C0M_SEND,C0M_NUM2, l_clearCgl ) ; for(g=0;g<ln_dl ;++g ) _bios_serialcom(_C0M_SEND,C0M_NUM2, l_dlCg3 ) ; prior_label ( ) int g; for(g=0;g<ln_d3;++g ) _bios_serialcom ( _C0M_SEND,C0M_NUM2, I_d3tg3 ) ; for(g=0;g<14;++g ) _bios_serialcom ( _C0M_SEND,C0M_NUM2, l_d4Cg3 ) ; _biαs_serialcom ( _C0M_SEND,C0M_NUM2,cc_bufferCOl ) ; _bios_serialcom ( _C0M_SEND,C0M_NUM2,cc_bufferCll ) ; _bios_serialcom ( _C0M_SEND,C0M_NUM2,cc_bufferC23 ) ; _bios_serialcom ( _C0M_SEND,C0M_NUM2,cc_bufferC33 ) ; _bios_serialcom(_C0M_SEND,C0M_NUM2,c _bufferC4] ) ; _bios_serialcom(_C0M_SEND,C0M_NUM2, 126) ; _bios_serialcom(_COM_ΞEND,C0M_NUM2, 49) ; _tios_serialcom(_C0M_SEND,C0M_NUM2, 13) ; firstc_label ( ) C int g; for(g=0;g<ln_d2;++g ) _bios_serialcom(_C0M_ΞEND,C0M_NUM2, l_d2Cg] ) ; for(g=0;g<14;g++) _bios_serialcom(_C0M_SEND,C0M_NUM2, l_d4Cg] ) ; _bios_serialcom(_C0M_SEND,C0M_NUM2,cc_bufferC03 ) _bios_serialcom(_C0M_SEND,C0M_NUM2,cc_bufferC 13 ) _bios_serialcom(_C0M_ΞEND,C0M_NUM2,cc_buf erC23 ) _bios_serialcom(_C0M_SEND,C0M_NUM2,cc_bu fer[3] ) _bios_serialcom(_C0M_SEND,C0M_NUM2,cc_bu- erC43 ) _bios_serialcom(_C0M_SEND,C0M_NUM2, 126) ; __bios_serialcσ ( _C0M_SEND, 0M_NUM2,49) ; _bios_serialcom(_C0M_SEND,C0M_NUM2, 13) ; ) cls( ) . unsigned int g; for(g=0;g<4000;g++) C *(v+g) = 32; * (v+g+1 ) = 07; g++; ) cursor_of ( ) union REGS inregs; inregs. h.ah = 1; inregs. .ch = OxOf; inregs.h.cl = 0x00; iπtB6(Ox10,&inregs ,&inregs ) ; #include <stdio.h> extern float ozfinal: extern unsigned int Ibfinal; extern char mC203; extern char zone; void sound ( ) ; FILE *stream3; char zipC10003; int ZCC63C713; unsigned int pcsC320013 , recC320013 ; char dateC9 ; int uz_tc,uz_tw; float uz_tp; int z3_tc,z3_tw; float z3_tp; int z4_tc,z4_tw; float z4_tp; int z5_tc,z5_tw; float z5_tp; int z6_tc,z6_tw; float z6_tp; int z7_tc,z7_tw; float z7_tp; int zB__tc, zB_tw; float z8_tp; int zt_tc; float zt_tp; priority( ) C char k; unsigned int i.il; if (dbfinal<2) ! ! ( lbfinal==2.00 && ozfinal==0.00) ) tone2( ) ; /* _settextposition(6,27) ; _outtext ( " || i ^ 1"1 "*' _settextposition(7,27) ; _outtext("|| PRI0RTY MAIL || \n"); _settextposition (8,27) ; _outtext("l' i|\n"); */ if ((lbfinal<2) ! ! ( 1bfinal==2.00 && oz inal==0.00) ) /* _settextposition( 16, 10) ; αuttext( " !________==_______________—, "f)f ' ii ; ' _sette posi ion (17,10); _outtext("|| This Priority Piece weighs between 12 ozs and 2 Lbs. || " ) ; _settextposition( 18, 10) ; _outtext("|| No ZIP Code or Zone is necessary . ||" ) ; _setteκtpositiσn( 19, 10) ; outtext( "U= ") ; for( il=0;il<2;++il ) for( i=0;i<64000;++i ) ; */ zone = 1 ; ) else /* need to enter SCF code */ C tone3(); do _settextposition( 18,21 ) ; αutte t ( _setteκtposition( 19,21 ) ; _αuttext("|| Enter 3 digit ZIP Code " ) ; _setteκtposition (20,21 ) ; _puttext("P M" ) ; get_cha(3,49, 19) ; i = atoi ( ) ; if (zipCil == 1) C _settextposition ( 19,22) ; _ uttext(" BAD ZIP CDDE ") ; sound (400) ; for(il=0;il<64000;il++) ; ) ) while (zipCil == 1 ) ; zone = zipCi3 ; ) _setcolor(0) ; _setcolor( 15) ; _settextposition (6,27) ; _outteκt(" " ) _setteκtposition(7,27) ; _outteκt( " " ) _settextposition(8,27) ; outtextt " " ) _settextposition ( 18,27 ) ; _outtext( " " ) ; _settextposition( 19,27) ; _outtext(" "); _settextposition(20,27) ; _αutteκt( " "); /* _settextposition( 19, 10) _outtext(" ") ;*/ tonel ( ) . sound (720) ; ) tone2( ) . sound ( 1100) ; ) tone3( ) t sound (400) ; sound ( 1 ) ; sound (400) ; ) void sound(freq) int freq; C unsigned i; union { long divisor; unsigned char cC23; ) count; unsigned char p; count.divisor = 1193280 / freq; outp(67, 182) ; outp(66,count.cC03) ; outp( 66,coun .cC 13 ) ; p=inp(97) ; outp(97 , p ! 3) ; or ( 1=0; i<19000;++i ) ; outp( 97 , p) ; get_zips( ) { int k ; char c; if ((strea-3 = fopen ("zones. ind","r" ) ) == NULL) C print ("FILE ACCESS ERROR: File zones. ind not found\n" ) ; exit( 1 ) ; ) for(k=0;k<=999;k++) C c = fgetc(stream3) ; c = c-48; if (c == EOF) C printf ("FILE ACCESS ERR0R:E0F found in zones . ind\n" ) ; exit( 1 ) : ) zipC 3 = ; ) /* zipE.03 = 1; */ f lose( streams) ; ) ge t_c harges ( ) in t k , k l , i ; c har c C 53 ; if ( (stream3 = fopen ("pmrtl .dat" , "r" ) ) == NULL) C printfC'FILE ACCESS ERROR: File pmrtl.dat not found\π" ) ; exit( 1 ) ; ) for(k1=2; kl<=70;kl++) for( k1=0; k1<=5; k++) C cC03=0;cC13=0;cC23=0;cC33=0; cC03 = fgetc (stream3) ; cC13 = fgetc(stream3) ; cC23 = fget (stream3) ; cC33 = fget (stream3) ; cC43 = '\0' ; cC13 == EOF I ! cC23 == EOF printfC'FILE ACCESS ERROR: EOF found in pmrtl .dat. \π" ) exit( 1 ) ; i = atoi ( ) ; zcCklCkll = i; fclose(stream3) ; print( ) unsigned int , ic , t, t1 , r, ic1 , tot_oz=0, temp_oz=0, temp_lb=0; int wt=0,rv=0; char zone, ptype,a, swap , lc , pc=l ; float pr=0,prt=0; unsigned int tc=0; cls( ) ; if((stream3 = fopen ("pieces.dat" ,"r" ) ) == NULL) C printfC'FILE ACCESS ERROR: File pieces.dat not found . \n" ) ; exit( 1 ) ; ) _settextposition (1,1); _outtext("Printing..."); ic = 0; icl = 0; fseek(stream3,0L,SEEK_ΞET) ; do { rv = fscanf (stream3,"7.5d 7.Id 7.2d 7.Id" ,&c ,&zone,&wt,&ptype) ; if (rv != 0 && rv '.= EOF) C ic++; if (ptype == 0 && c != pcsCicl) C ic++; pcsC-i l = c; recCi l = i l ; ) else if (ptype == 0 && c == pcsCicl) C pcsCicl = c; recCic3 = ic1 ; ) else if (ptype == 1 && c == pcsCicl) C ic—; /* if changed to priority, bac up one */ ) ) ) while ( rv != 0 && rv '.= EOF); tl = ic; for( r=l ; r<=ic ; r++) for( =l ;t<tl ;t++) C if(pcsCt+13 < pcst t3) /* then swap */ c = pcsC t3 ; pcsCt3 = pcsCt+13; pcsCt+13 = c; c = recCt ; recEt] = recCt+13; recCt+13 = c; swap = 1 ; tl—; if (swap == O) r=ic+l ; else swap = O; /****************************** done sorting _s trda te ( date ) ; headerlC( 1 ) ; rewind (s ream3) ; for( t=l; t<=ic; t++) { if(pcsCt+13 '.= pcsCtl) C /* for(r=l ;r<=< rec__t3 ;r++) C rv = fscanf (streams, "7.5d 7.Id 7.2d 7.Id" ,&c ,&zone,&wt,&ptype) ; )*/ fseek( stream3, ( long) ( ( recC t3*12)-12) ,ΞEEK_SET) ; rv = fscanf (stream3, "7.5d 7.Id X2d 7.1d" ,&c ,8zoπe,&wt,&ptype) ; i (wt == 1 ) pr = .35; if (wt == 2) lc++; tc++; if ( lc >= 45) C pc- fprintf (stdprn , \n" ) fprintf (stdprn, "Page\n" ) ; printf ( stdprn, "Total : 7.4d 7.5d\n" , lc, temp_oz) fprintf (stdprn, "7.c" , 12) ; lc=0; temp_oz = 0; header1C( pc ) ; tot_oz = tot_oz + wt; temp_oz = temp_oz +wt; prt = prt + pr; fprintf(stdprn, 7.5d 7.2d 7.5.2f 7.7.2f\n" ,c,wt, pr, prt) ; rewin (stream3) ; temp_lb = to _oz / 16; temp_oz = tot_oz - (temp_lb * 16); fprintf (stdprn, " \π" ) : fprintf (stdprn , "\nCUMULATIVE\n" ) ; fprintf (stdprn, "TOTALS 7.6d PIECES 7.5d lbs. 7.2doz\n" , tc , temp_lb , temp_oz ) ; fprintf (stdprn , "7.c" , 12) ; fclose(stream3) ; ps_3602( tc , temp_lb, temp_oz , prt) ; ) printl ( ) C unsigned int c,ic,t,tl ,r,icl,tot_oz=0, temp_oz=0, temp_l b=0; int wt=0,rv=0; char zon ,ptyp ,a, swap, l =0, pc=l ; float pr=0,prt=0; unsigned int tc=0; fprintf (stdprn, "7.c", IB) ; if(( stream3 = fopen ("pieces.dat" ,"r" ) ) == NULL) C printfC'FILE ACCESS ERROR: File pieces.dat not found . \n" ) ; eκitd ) ; ) ic = 0; icl = 0; fseek(stream3,0L,ΞEEK_ΞET) ; do C rv = fscaπf (stream3, "7.5d 7.1d 7.2d 7.1d" ,&c ,&zσne,&wt,&ptype) ; i ( rv != 0 U rv '.= EOF) < icl++; if(ptype == 1 && c 1= pcsCic3) C ic++; pcsCic3 = c ; recCic3 = icl; ) else if (ptype == 1 && c == pcsCic]) C pcsCic 3 = c ; recCic3 = icl ; ) else if (ptype == 0 && c == pcsϋicl) C i —; /* if changed to priority, back up one */ ) ) while (rv '.= 0 && rv != EOF); tl = ic; for(r=l : r<=i :r++) for( t=l ; <tl ; ++) C if(pcsCt+13 < pcsCt3) C /* then swa */ c = pcsCt3 ; pcsCtl = pcsCt+13; pcsCt+13 = c; c = recCt3 ; recCt3 = recCt+13; recCt+1 = c; swap = 1 ; ) ) tl—; if (swap == 0) r=ic+l ; else swap = 0; /****************************** done sorting headerpm( 1 ) ; rewind(stream3) ; for(t=l;t<=ic; t++) C if (pc=.t. t+13 '.= pcsCtl) C /* for ( r=l ; r<=( recCt3 ;r++ ) C rv = fscanf (stream3, "7.5d 7.1d 7.2d 7.Id" , &c ,&zone,& ,&ptype) ; )*/ fseek( stream3, ( long) ( ( re C t3* 12)-12) ,SEEKJ3ET) ; rv = fscanf (strea S, "7.5d 7.Id 7.2d 7.1d" ,δ<c ,&zone,&wt,&ptype) ; if (zone == 2) zone = 3; i-F ( W t == 1 I ! wt == 2) <_ pr = zcC03C23; pr = pr / 100: ) else pr = zcCzone-33Cwtl ; pr = pr / 100; ) lc++; t ++; if(lc >=45) pc++; fprintf(stdprn, " \n" ) fprint (stdprn, "Page\π" ) ; fprintf (stdprn, "Total : 7.4d 7.5d\π" , lc , temp_oz ) ; fprintf (stdprn, "7.c" , 12) ; lc=0; temp_oz = 0; headerpm(p ) ; tot_oz = tot_oz + wt; temp_αz = temp_αz +wt; if (zone == 1 ) C uz_tc++; uz_tp = uz_tp pr; uz tw = uz tw wt; ) if ( zone == 3) C z3_tc++; z3_tp = z3_tp + pr; z3 tw = z3 tw + wt; ) 10 if ( zone == ) z4_tc++; z4_tp = z4_tp pr ; z4 tw = z4 tw wt; 15 ) if ( zone == 5) _ z5_tc++; z5_tp = z5_tp + pr; 20 z5_tw = z5_tw + wt; if ( zone == ) C z6_tc++; 25 z6_tp = z6_tp Pr; z6_tw = z6_tw wt: ) if (zone == 7) 30 z7_tc++; z7_tp = z7_tp + pr; z7 tw = z7 tw + wt; if (zone == B) 35 zB_tc++; zB_tp = z8_tp + pr; zB_tw = z8_tw + wt; ) 40 prt = prt + pr; if ( zone == 1 ) zone = 32; else zone = zoπe+4B; 45 fprintf(stdprn, " 7.5d V.c 7.2d 7.5.2f 7.7.2f\n" , c , zone,wt,pr,prt) ; fflush(stdprn ) ; rewind (stream3) ) ) temp_lb = to _oz; fpriπtf(stdprn, ". \n" ) ; fprint (stdprn, "\nCUMULATIVE\ " ) ; fprintf (stdprn, "TOTALS 7.6d PIECES 7.6d lbs\n" , tc, temp_lb) ; fprintf (stdprn, "V.c" , 12) ; fclose(stream3) ; zt_tc = tc; zt_tp = prt; pm_summ( temp_lb> ; ps_3605( temp_lb) ; ) headerIC( pc ) int pc; C fprintf (stdprn, " MANIFEST LISTINGXn"); fprintf (stdprn," SINGLE PIECE FIRΞT-CLAΞS MAIL (1-11) OUNCES) Page 7.d\π" , pc ) fprintf (stdprn, "\n\n" ) ; fprintf (stdprn, "MAILER : D.M.S. INC. DATE PREPARED: 7.s\n" ,date) ; fprintf (stdprn , " : INDIANAPOLIΞ, IN 46202\n") fprintf (stdprn, "\n") ; fprintf (stdprn, "USPS ENTRY POINT: INDIANAPOLIΞ, IN 462 POSTAL PERMIT tt 7374\n") ; fprintf(stdprn, ". _\n" ) ; fprintf (stdprn, "\n" ) ; fprint (stdprn, " PIECE ID tt WEIGHT NOT POSTAGE CUMULATIVEXπ") ; fprintf (stdprn, " EXCEEDING (OZΞ) T0TAL\π" ) ; fprintf (stdprn, "\n" ) ; ) headerpm( pc ) int pc { fprintf(stdprn , MANIFEST LISTING\n"> fpriπtf(s dprn, PRIORITY MAIL Page 7.d\n" , pc ) fprintf(stdprn, "\π\n" ) ; fprintf(stdprn, "MAILER : D.M.Ξ. INC. DATE PREPARED: 7.s\n" ,date) ; fprintf(stdprn, " INDIANAPOLIΞ, IN 46202\n" ) fprintf (stdprn, "\π" ) fprintf (stdprn, "UΞPΞ ENTRY POINT: INDIANAPOLIΞ, IN 462 POΞTAL PERMIT 4t 737 \n") fprin f (stdprn \n" ) ; fprintf(stdprn, "\n" ) ; fprint (stdprn, " PIECE ID tt WEIGHT NOT POSTAGE CUMULATIVENn") ; fprintf(stdprn, " EXCEEDING (πZS) TOTALXn" ) ; fprintf (stdprn, "\n" ) ; ps_3602( tp, tlb, toz , tpost) unsigned int tp; int tlb; int toz; float tpost; fprintf (stdprn, "7.c" , 15) /* condensed EPSON */ fprint (stdprn, " PS FORM 3602, Apr. 198B\n"); line( ); fprintf (stdprn, " U.S. POSTAL SERVICE PERMIT N0.\n" ) ; fprintf(stdprn, " STATEMENT DF MAILING WITH ! \n" ) ; fpriπtf(stdprn, " PERMIT IMPRINTS H 7374\π" ) ; fprintf(stdprn, " (MANIFEST) i \n" ) ; 1ine( ) ; fprintf (stdprn, " POST OFFICE OF MAILING ! DATE ! RECEIPT NO. . MAILING ΞTATEMENT ΞEQUENCE NO.\n"); fprintf (stdprn , " INDI NAPOLI , IN 462 ! 7.s ! !\n",date); 1ine( ) ; fprintf (stdprn, " FIRΞT-CLASΞ (1-11 OUNCES) i WEIGHT OF A SINGLE PIECE RCA OFFICEΞXn" ) ; fprintf(stdprn, " ! NON IDENTICAL \n" ) line( ) ; fprintf (stdprn , " TOTAL IN MAILING \n"); printf (stdprn, " PIECEΞ ! TOTAL NET WT (POUNDS) ! SACKΞ . TRAYΞ ! PALLET8 ! OTHERNn"); fprintf (stdprn," 7.6u 75u lbs, 7.2u oz !\n" , tp, tlb, toz) ; line( ) ; fprintf (stdprn," NAME/ADDRESS of : TELEPHONE NO ! POΞTAGE COMPUTATIONS" ) ; fprint (stdprn, " PERMIT HOLDER . 317 634-3625 \n" ) f priπ tf ( s tdprn , " \n" ) fpriπtf(st prn, " ! RATE CLAΞΞ ! PIECEΞ TOTAL POSTAGE\n" ) ; fprintf (stdprn , " D.M.Ξ. Inc \n" ) fprintf (stdprn, " 806 N. SENATE AVE \n" ) ; fprint (stdprn, " INDI NAPOLIΞ, IN 46202 11. FULL 1ST POΞTAGE . 7.6u $7.8.2f\n" , tp, tpost) ; fpriπtf(stdprn, " \π" ) ; fpriπtf(stdprn," : : : \n" ) 1ine( ) ; fprint (stdprn, " 2. ADDITIONAL POΞTAGE PAYMENT (STAT REASON) NO. PCG RATE/PC 1 POΞTAGE $\n" ); fprintf (stdprn , " ! \n" ) ; 1ine( ) ; fprintf(stdprn," 3. TOTAL POSTAGE (1 PLUS 2) WHERE APPLICABLE 1 TOTAL POΞTAGE $\n" ) ; fprintf(stdprn, " ! \n" ) ; fprintf ( stdprn , " ! $7.8.2f\n" , tpost) ; line( ) ; fprintf (stdprn, " The submission of a false, fictitio or fraudulent statement may result in imprisonment of up t 5 years and a fine of up\n">; fprintf (stdprn," to $10,000. (IB U.Ξ.C. 1001) In addition, a civil penalty of up tα $5,000 and an additional assessment of twice the amount\π"); fprintf(stdprn," falsely claimed may be imposed. (31 U.Ξ.C. 3B02)\n M ) ; 1 ine( ) ; fprintf ( stdprn , " I hereby certify that all information furnished on this form is accurate and truthful and that this material preseπted\n" ) ; fprintf(stdprn, " qualifies for the rates of postage c 1aimed . \π" ) ; 1ine( ) ; fprintf (stdprn , " Signature of Permit Holder or Agent (Both principal and agent are liable of any postage deficiency incurred) ! Telephone No.\n") ; fprintf(stdprn, " ! \π" ) ; fpriπtf(stdprn, " ! \n" ) ; fprintf (stdprn, " ! \π" ) ; 1ine( ) ; fprintf (stdprn , " \n" ) ; fprintf(stdprn , " I CERTIFY that this mailing has been inspected to verify that it qualifies for the rate of postage ! Round Stamp (Required) !\n"); fprintf (stdprn , " being paid, and that it is properly prepared (and presorted where required) and that the statement . !\n"); fprintf (stdprn , " of mailing has been verified and the necessary annual fee has been paid. ! ! \n" ) ; fprintf(stdprn, " \π" ) fprintf (stdprn , " ! \n" ) ; fprintf (stdprn," Signature of Weigher Ti e '. \n") ; fprintf(stdprn," ! !\π"); fprintf(stdprn, " ! A.M. ! :\n"); fprintf (stdprn, " ! P.M. 1 '. \π"); fprintf (stdprn, " !\n"); line! ) ; fprintf (stdprn, "\π" ) ; fprintf (stdprn, " Computerized PS FORM 3602, Apr. 19B8\n") ; fprintf (stdprn, " FINANCIAL DOCUMENT - FORWARD TO FINANCE OFFICEW) ; fprintf (stdprn, "7.c", 12) ; ) ps_3605( tlb) int tlb: unsigned int tmp_int=0 , tmpl_int=0; unsigned long int tmp_long=0; fprintf (stdprn, "7.c7.c" , 15, ' \0' ) ; /* condensed EPSON */ strdate(date) fprint (stdprn , " PS FORM 3605, Apr. 1988\n") 1ine( ) ; fprintf (stdprn, " U.S. POSTAL SERVICE PERMIT N0.\n" ) ; fprintf (stdprn, " STATEMENT OF MAILING ! \n" ) ; fprintf (stdprn, " BULK ZONE RATES tt 7374\n" ) ; fprintf (stdprn," (MANIFEST) \n" ) ; 1ine( ) ; fprintf (stdprn, " POST OFFICE DF MAILING ! DATE ! RECEIPT NO. I MAILING STATEMENT SEQUENCE NO.\n"); fprint (stdprn, " INDIANAPOLIΞ, IN 462 ; 7. s ! ; \n" , date) ; line* ) : fprintf (stdprn," FIRST-CLASS PRIORITY MAIL ! WEIGHT DF A SINGLE PIECE : RCA OFFICEΞNn" ) ; fprintf (stdprn , " ! NON IDENTICAL . \n" ) ; 1 ine( ) ; fprintf(stdprn, " TOTAL IN MAILING \n"); fprintf (stdprn, " PIECEΞ TOTAL NET WT (POUNDΞ) ! SACKS ! TRAYΞ PALLETS ! DTHER\π" ); fpriπtf(stdprn, " 7.6u 7.5u 1 bs ! \n " , ∑ t_tc , t l b ) ; 1 ine ( ) ; f prin tf ( s tdprn , " NAME/ADDREΞΞ of TELEPHONE NO! \n" ) ? fprint (stdprn , " PERMIT HOLDER 317 634-3625! \n" ) ; fprintf (stdprn, " !\n"); fprintf(stdprπ, " D.M.Ξ. INC. PRIORITY MAIL\n") fprintf (stdprn , " 806 N. ΞEANATE AVE \n" ) ; fprin f (s dprn , " INDIANAPOLIΞ, IN 46202 \n" ) ; fprintf(stdprn, \n" ) fprintf (stdprn , " ZONES PIECEΞ ! WEIGHT ! \n" ) ; 1ine( ) ; fpriπtf (stdprπ, " UNZONED ( 12 oz-2 lb) 7.6d ! 7.7.2f '. \n" ,uz_tc ,uz_tp) ; fprintf(εtdprπ, " 1-2-3 7.6d ! 7.7.2f 1 \n" ,z3_tc,z3_tp) ; fprintf ( stdprn, " 7.6d ! 7.7.2f ! \n",z4_tc,z4_tp) ; fpriπtf(stdprn, " 7.6d ! 7.7.2f ! \π" ,z5_tc,z5_tp) ; fprintf (stdprn, " 7.6d : 7.7.2f ! \n" ,z6_tc,z6_tp) ; fprintf(stdprn, " 7.6d ! 7.7.2f ! \n" ,z7_tc,z7_tp) ; fprintf(stdprn, " 8 7.6d i 7.7.2f ! \n" ,zB_tc, z8_tp) ; line( ) ; fprintf(stdprn, " TOTALS 7.7u 7.7.2f ! \n" , zt_tc , zt_tp) ; 1ine( ) ; fprintf ( stdprn , " The submission of a false, fictitious or fraudulent statement may result in imprisonment of up to 5 years and a fine of up\n") ; fprintf ( stdprn, " to $10,000. (18 U.Ξ.C. 1001) In addition, a civil penalty of up tα $5,000 and an additional assessment of twice the amount\n") ; fprintf(std rn, " falsely claimed may be imposed. (31 U.Ξ.C. 3802)\n") : 1 ine( ) ; fprintf ( stdprn , " I hereby certify that all information furnished on this form is accurate and truthful , and that this material preseπted\n" ) ; fprintf(stdprπ, " qualifies for the rates of postage 1aimed . \n") ; Iine( ) ; fprintf ( stdprn , " Signature of Permit Holder or Agent (Both principal and agent are liable of any postage deficiency incurred) ! Telephone No.\n") ; fprintf(stdprn, " ! \π" ) ; fprintf(stdprn, " ! 317 634-3625\n" ) ; 1 ine( ) ; fprintf ( stdprn , " \ n" ) ; fprintf (stdprn , " I CERTIFY that this mailing has been inspected to verify that it qualifies for the rate of postage ! Round Stamp (Required) !\n"); fprintf (stdprn , " being paid, and that it is properly prepared (and presorted where required) and that the statement . ! \n" ) ; fprintf (stdprn , " of mailing has been verified and the necessary annual fee has been paid. ! _\n">; fprintf(stdprn, " ! \n" ) ; fprintf (stdprn, " ! l\n" ); fprintf ( stdprn , " Signature of Weigher ! Time ! i \n" ) ; fprintf (stdprn, " \π" ) fprintf (stdprn, A.M. ! \π" ) ; f prin t f ( std prπ , P.M, ! \n" ) ; f prin t f ( s tdprn , " \n" ) 1ine( ) ; fprintf (stdprn, "\n" ) ; fprintf (stdprn , " Computerized Facsimile PΞ FORM 3605, Apr. 198B\n"); fpriπtf(stdprn, " FINANCIAL DOCUMENT - FORWARD TO FINANCE OFFICEXn"); fprintf (stdprn, "7.c" , 12) ; fprintf (stdprn , "7.c" , 12) ; ) line( ) C fprintf (stdprn, " _\n" ) ; ) pm_sum ( tbl ) int tbl; i fpriπtf(stdprn, " MANIFEΞT SUMMARY PAGE\n"); fprintf(stdprn, " PRIORITY MAIL \n"); fprintf (stdprn, "\π\n" ) ; fprintf (stdprn, "MAILER : D.M.G. INC. DATE PREPARED: 7.s\π" .date) : fprintf (stdprn, " : INDIANAPOLIΞ, IN 46202 \n"); fprintf(stdprn,"\π") ; fprintf (stdprn, "UΞPΞ ENTRY POINT: INDIANAPDLIΞ, IN 462 POΞTAL PERMIT « 7374\π"); fprintf (stdprn, " \n") ; fprintf (stdprn, "\n" ) ; fprintf (stdprn, " ZONE NUMBER OF PIECEΞ WEIGHT PDSTAGE\n"); fprintf(stdprn, _\n" ) ; fprintf(stdprn , fprintf (stdprn , 7.6d $7.,7.2f\n fprintf(stdprn , 7.6d $7.,7.2f\n fprintf (stdprn , 7.6d $7.,7.2f\n fprintf (stdprn , 7. d $7.,7.2f\n fprintf (stdprn , 7.6d $7.,7.2f\π fprintf (stdprn , 7. d $7.,7.2f\n fprintf ( tdprn , 7.6d $7.,7.2f\π MANIFEΞT LISTING\n" ) ; fprintf(stdprn, _\n" ) ; fpriπtf(stdprn,"\n") ; fprintf (stdprn, " TOTALS 7. d 7.7d lbs $7.8.2f\n" ,zt_tc,tbl ,zt_tp) ; fprintf (stdprn, "7.c" , 12) ; Ξource Listing for "THE CHAMP" interfaced to an electronic meter. Files printed below are: meter1.c gwt.c trip.c Written by Christopher A. Baker, M.A. I.L.code Inc. "THE CHAMP", version 2.1 (Meter interfaced) (c) M. . I.L.code Inc. , 19B9 ALL RIGHTΞ RESERVED ******* PROPRIETARY SOFTWARE ******* THIS SOFTWARE IS THE CONFIDENTIAL PROPERTY OF M.A. I .L.code, Inc. IT MAY NOT BE DIΞCLOΞED, UΞED, REPRODUCED, DIΞTRIBUTED, RECREATED, MODIFIED OR DISPLAYED IN WHOLE, OR IN PART, WITHOUT THE EXPRESΞ WRITTEN AGREEMENT OF M.A. I .L. ode , Inc. MISAPPROPRIATION DF THIS SOFTWARE SHALL BE PROSECUTED TO THE FULLEST EXTENT OF THE LAW. (PRINTED 3/20/90 BY CAB) ttinclude <stdiσ.h> ^include <bios.h> ttinclude <graph.h> unsigned int 1bs , 1bsav, tare , 1b inal ; char stable; float lbsl,lbs3; float 1bs2, ozfinal ; char zone=0 , ptype=0; /* zone and piece type */ main ( ) unsigned int lb=0,oz1 ,oz2, koz , k1 ,ozsav=0; float oz,p,oz3; char bp; char time__203 ; char c = 1 , t; _setvideomode(_DEFAULTMODE) ; open__com( ) ; /* open and test communication */ cursor_off( ) ; screenO( ) ; bp = champl ( ) ; /* test scale amd gwt initial weight */ tare = lbs; do { bp = champl(); /* wait until piece removed */ lbsl = (tare - 1bs )/( f loat)715; lbs2 = lbsl ; lbsl = lbsl * 1000; lbs3 = (unsigned int) lbsl; if (lbsl-lbs3 > .5) lbs3++? Ibs3 = lbs3/1000; lbsl = lbs3; lb = lbs2; oz = (lbsl - lb) * 16; oz2 = oz * 10; oz3 = oz * 10; if ( (oz3 - σz2) > .5) αz2++; oz3 = αz2; oz3 = oz3/10; oz1 = oz ; if ( (oz - ( int)oz) >0> ozl++; if (o∑3 > 15.95 && oz3 <= 16.00 ) . σzl=0; oz3=0.00; oz = 0.00; lb++; ) ozfinal = oz1 ; /* calculate piece weight in */ Ibfinal = lb; /* in this section */ i-F.αzl == 16 ) C lb++; ozl = 0; if(σzl > 0 && ozl <= 11 && lb < 1) . trip(oz1 ) ; _settextposition ( 12,30) ; printf ("First Class, 7.u Ozs ",ozl ) ; _settextposition (20, 10) ; _puttext(" "); ) else if (lb == 1 _ . (lb == 2 && ozl ==0)) C _settextposition( 12,30) ; printf ("PRIORITY MAIL, 7.u Lb 7.u oz " , lb,ozl ) ; trip(lb); " ) tare = lbs; ) while ( '. kbhit( ) ) ; ) cha pl ( ) i char bp=0; do v gwt( ) ; __settextposition (23, 1 ) ; if (stable == 1 ) { if ((bp == 0) && (lbs < lbsav-20)) C wait_for_piece( ) ; sound ( 1200) ; bp = 1; lbsav = lbs; ) else if ((bp == 0) && (lbs > lbsav + 20) ) . lbsav = lbs; tare = lbs; ) _settextpoΞition(24,70) ; _outtext( "Stable "); ) else C bp = 0; _settextposition(24,70) ; _outtext( "Unstable" ) ; ) settextposition ( 12,35) ; ) while(( bp != 1) && _kbhit()); return (bp) ; sound ( freq ) int freq; uπsigned i ; union { long divisor; unsigned char cC23; ) count; unsigned char p; count.divisor = 1193280 / freq; outp(67,lB2) ; outp(66,count.cC03 ) ; outp( 6,couπt.cC 1 ) ; p=inp(97 ) ; outp(97, p ! 3) ; for( i=0; i<19000;++i ) ; outp(97,p) ; wait_ or_piece( ) { char c2; while(_biαs_serialcom(_COM_RECEIVE,0,0) '.= 01); while(_bios_serialcom(_COM_RECEIVE,0,0) '.= 'T' ) while(_bios__serialcom(_COM_RECEIVE,0,0) '= 04); cursor_of ( ) { union REGS inregs; inregs. h.ah = 1; inregs. h.ch = OxOf; inregs. h.cl = 0x00; int86(0xl0,&iπregs,&iπregs) ; screenO( ) unsigned int g; char far *v; v = (char far * )0xB8000000; fσr(g=0;g<160;g++) f *(v+g) = 205; *(v+320+g) = 205; *(v+3842+g) = 205; *(v+3522+g) = 205; *(v+(++g)) = 15; *(v+320+g) = 15; *(v+3842+g> = 15; *(v+3522+g) = 15; ) for(g=l ;g<24;g++) C * (v+(g*160) ) = 186; *(v+(g*160)+l ) = 15; *(v+(g*160)+158) = 1B6; *(v+(g*160)+159) = 15; ) *v = 201 ; *(v+l) = 15; *(v+15B) = 1B7; *(v+159) = 15; *(v+3998) = 188; *(v+3999) = 15; *(v+3840) = 200; *(v+3841) = 15; *(v+320) = 204; *(v+321) = 15; *(v+47B) = 185; *(v+479) = 15; *(v+3520) = 204; *(v+3521) = 15; *(v+3678) = 1B5; *(v+3679) = 15; __settextpositiσn (2, 3 ) ; _outtext ( "(c) 1989 The Champ - Heavyweight Mail Processor ver 2.0") ; ) ttinclude <stdio.h> ttinclude <bios.h> char messCl = "\00 1P\004"; char setmeterlCl = "\001S053000\004" char setmeter2 3 = "\001Ξ054000\004" char setmeter3 3 = "\001Ξ056000\004" char setmeter4C3 = "\001Ξ05B000\004" char setmeter5 3 = "\001Ξ050100\004" char setmeter6C3 = "\001S052100\00 " char setmeter7 = "\001S054100\004" char setmeter8C3 = "\001Ξ056100\004" char setmeter9C = "\001Ξ05B100\004" char setmeterl0C3 = "\001S050200\004 char setmeterllCl = "\001S052200\004 char setmeterpmC3 = "\001S054200\004 char hexd 3="01234567B9ABCDEF"; trip(n ) unsigned int π; char c; char bufC263; int t; int sum=0; bufC 103 = '\0' ; bufC113 = ' \0' ; switch(n ) C case 1: strncpy( buf ,setmeterl ,9) ; break ; case 2: strncpy( buf,setmeter2,9) ; break; case 3: strncpy(buf ,setmeter3,9) ; break; case 4: strncpy(buf ,setmeter ,9) ; break ; case 5: strncpy( buf , setmeter5,9) ; break; case 6: strncpy( buf ,setmeterό,9) ; break ; case 7: strncpy(buf ,setmeter7,9) ; break ; case 8: strncpy(buf ,setmeterB,9) ; break ; case 9: strncpy( buf , setmeter9,9) ; break ; case 10: strncpy(buf ,setmeter10,9) ; break ; case 11: strncpy( buf , εetmeter11 , ) ; break ; case 24: strncpy( buf ,setmeterp ,9) ; break ; for( t=0; t<9; t++> C _bios_serial om(_COM_SEND,0, bufCt3 ) ; sum += bufC t3 ; ) c = hexdCsum & OxOf ; _bios_serialcom(_COM_SEND,0,c) ; c = heκdC (sum>>4) & 0x0f3; _bios_serialcom(_COM_SEND,0,c) ; ttinclude <stdio.h> ttinclude <biαs.h> ttinclude <stdlib.h> ttinclude <graph.h> ttdefine C0M_NUM 1 /* com2 */ extern unsigned int 1bs , tare, 1bsav; eκtern char stable; char far *bufferC103; unsigned int cαm_errl ; float total_post_lc , total_post_pm; char scn_bufferC3000 ; char far *v; gwt( ) . unsigned int 1 , 1bh, lbl , t=0, r=0; unsigned int lsC3003; double lbt=0; get_weight( ) ; lbl = lbs; lbh = lbs; if ( ikbhit( ) ) C for( 1=0; 1<2; 1++) { get_weight( ) ; if (lbs < lbl) lbl = lbs; else lsCt++3 = lbs; if (lbs > lbh) lbh = lbs; else lsCt++3 = lbs; if ( ( lbh-lbl ) > 4) 1 = 5; if ( ( lbh - lbl ) <= 4) C stable = 1 for( r=0;r<t; r++) lbt += IsCr] ; lbs = lbt/t: ) else stable = 0; ) else stable = 0 ) get_weight( ) /* This routine requests the scale's weight with any character */ /* and returns it in a count */ unsigned char temp,com__err=0; unsigned int com_charC6 ,c=0, i ,j ,j 1 ; unsigned int cl,c2; fortj 1=0; jl<4; j 1++) fortj=0;j<21000;j++) ; /* for j=0;j<32000;j++) ; */ do C cl = _bios_serialcom(_C0M_ΞTATUΞ,C0M_NUM,0) ; if((cl & 0x0100) == 0x0100) c2 = _biσs_serialcσm(_CDM_RECEIVE,COM_NUM,0) ) while ( (cl & 0x0100) == 0x0100); com_charC13 = 0; com_charC2] = 0; do C temp = __bios_serialcom(_CDM_ΞEND.CDM_NUM,87 ) ; /* ' ' */ while(( (c2 = __bios_serialcαm( _CDM_ΞTATUΞ ,CDM_NUM , 0 ) ) & -B2- x0100) == 0x100) ; com_charC13 = _bios_serialcom(_C0M_RECEIVE,CDM_NUM,0) ; while(((c2 = _bios_serialcom(_COM_ΞTATUS,COMJMUM,0) ) & x0100) == 0x100) ; cαm_charC23 = _bios_serialcσm(_COM_RECEIVE,CDM_NUM,O) ; if ( ( (com_charC13 & OxFOOO) > 0) ! ! ( (cσrn__charC23 & OxFOOO) >0)) C cσm_prαblem( ) ; com_err = 1 ; com_errl = 2; ) else com_err = 0; if(com_errl > 1) C restore__from_error( ) ; ) ) while (cαm_err == 1); lbs = (com_charCl 3*256) + cσm_charC23 ; if (lbs < 32768) lbs = 32768 - lbs; if(com_errl > 0) C tare = lbs: lbsav = lbs; com_err1—; ) ) com_proble ( r) unsigned int r; _ char c ; save_for_errσr( ) ; _setcαlor( 15) ; _sette tposition (17,18) _αuttext( " " ) _settextpositioπ( 18, IB) ; printf (" SCALE ERROR ! (7.4x) " r ) ■ __settextpσsition ( 19 , 18 ) ; __outtext( " Press any key to continue ... " ) __settex tposi tion (20, 18) ; _outteκt( " " ) c = getch( ) ; _setcolor(7) ; ) save_f αr_error ( ) t int t,tl; fort t=15; t<22; t++) C fort tl=18; tl<126; tl+=2) C scπ_bufferC( ( t-15) * 160) +tl 3 = *(v+( t*160)+tl ) ; scn_buffer ( ( t-15) *160)+tl+13 = *(v+( t*160)+tl+l ) ; *(v+( t*160)+tl ) = 0; *(v+( t*160)+tl+l ) = 7; ) ) ) restore_from_error( ) C int t,tl; fort t=15; t<22; t++) t fort tl=18; tl<126; tl+=2) C *(v+( t*160)+tl ) = scn_bufferC ( ( t-15) *160)+tl 3 ; *(v+( t*160)+tl+l ) = scnJ-uffer ( ( t- 15 ) * 160 ) + t 1 + 13 ;

Claims: What is claimed is; 1. Λn apparatus for weighing mail pieces and producing a weight manifest, said apparatus comprising: means for weighing a plurality of mail pieces at one time; means for detecting in connection with said means for weighing an initial stabilized weight state, a first subsequent stabilized weight state in response to a change in the number of mail pieces, and a second subsequent stabilized weight state in response to a further change in the number of mail pieces; first difference means for calculating in response to the occurrence of said first subsequent stabilized weight state a first weight value equal to the absolute difference between said initial and said first subsequent stabilized weight state; second difference means for calculating in response to the occurrence of said second subsequent stabilized weight state a second weight value equal to the absolute difference between said first subsequent stabilized weight state and said second subsequent stabilized weight state; and means for producing a manifest including said first and second weight values. 2. The apparatus for weighing mail pieces of claim 1 wherein said means for producing a manifest includes means for generating and printing on said manifest a unique serial number for said first and second weight values and a postage cost corresponding to said first and second weight values. 3. The apparatus for weighing mail pieces of claim 2 wherein said means for weighing is a load cell. 4. The apparatus for weighing mail pieces of clai s wherein said means for detecting, said first difference means, ~ nd SUBSTITUTE SHEET said second difference means are components of a computer system having RAM, ROM, Λ/D converter, a printer, a display, and an operator input device. 5. The apparatus for weighing mail pieces of claim 2 including means for inputting a mail classification code when said first or second weight values are in excess of a predetermined weight, and printing means for printing said unique serial number and said mail classification code on a stick-on label. 6. The apparatus for weighing mail pieces of claim 2 including means for inputting an optional mail classification code for said first or second difference weights if said first or second weight values are in excess of a predetermined weight, and printing means for printing said unique serial number and said optional mail classification code on said mail piece. 7. An apparatus for producing a mail piece weight manifest comprising: a container containing said mail pieces; means from which said container containing mail pieces is readily remσveable, for producing a weight signal corresponding to the weight of said container containing mail pieces; means for producing piece weight connected to said means for producing a weight signal, said means for producing piece weight responding to said weight signal when said weight signal changes from an initial stable state to a successive stable state and producing a weight difference signal at an output in response to the occurrence of each successive stable state; and means responsive to said weight difference signg.1 for producing a manifest, said means responsive to said weight SUBSTITUTE SHEET difference signal responding to said weight difference signal and creating a manifest documenting the magnitude of each weight difference signal produced by said means for producing a piece weight. 0. The apparatus for producing a weight manifest of claim 7 wherein said means for producing a weight signal is a load cell. 9. The apparatus for producing a weight manifest of claim 8 wherein said means for producing piece weight and said means responsive to said weight difference signal are portions of a computer system including RAM, ROM, a CRT display, an operator interface, and a printer. 10. An apparatus for weighing mail pieces and producing a weight manifest including mail piece weight and corresponding postage charges, said apparatus comprising: means for supporting a plurality of mail pieces; a strain gage attached to said means for supporting, said strain gage producing at an output a weight signal corresponding to forces acting on said strain gage; digital analysis means connected to said strain gage output, said digital analysis means including means for monitoring said weight signal and means for detecting a first and subsequent stabilized weight states, said means for detecting producing at an output a weight difference signal and corresponding postage cost signal corresponding to the absolute difference between each subsequent stabilized weight state detected by said means for detecting and an immediately preceding stabilized weight state wherein each subsequent stabilized weight state corresponds to a change in the number of mail pieces situated on said means for supporting; and printer means responsive to said weight difference signal and said postage cost signal for printing a manifest entry SUBSTITUTE SHEET including said weight difference entry, a serial number and a postage cost entry. 11. An apparatus for weighing mail pieces and producing a weight manifest including mail piece weight, said apparatus comprising: a bin containing mail pieces; weighing means attached to said bin and producing at an output a weight signal proportional to the weight of said bin containing mail pieces; stable weight detecting means responsive to said weight signal and producing at an output in response to a change in the number of mail pieces contained in said bin a piece weight signal corresponding to the weight difference calculated between a present stabilized weight signal and an immediately preceding stabilized weight signal; and a printer responsive to said piece weight signal, said printer printing a mail piece weight corresponding to each piece weight signal as received thereby producing a weight manifest. 12. An apparatus for preparing an object weight manifest comprising: weighing means for weighing a bin containing objects, said weighing means producing at an output an analog weight signal proportional to the weight of said bin including objects contained within said bin; digital analysis means including an A/D converter means for converting said analog weight signal into digital values, memory means for storing said digital values, said digital analysis means producing at an output a difference signal for each occurrence of a subsequent stable weight signal, said difference signal corresponding to the absolute difference between a present stable weight signal and an immedi,ately preceding stable weight signal wherein said difference siqnαi SUBSTITUTE SHEET corresponds to a change in the number of mail objects in said bin; and first printer means connected to said digital analysis means and responsive to said difference signal for printing a weight manifest. 13. The apparatus of claim 12 wherein said digital analysis means is a digital computer including an A/D converter, RAM, ROM, and a printer interface. 1 . The apparatus of claim 12 including second printer means responsive to said print signal for printing a classification code and a serial number on a label. 15. The apparatus of claim 12 including second printer means responsive to said print signal for printing a classification code and a serial number on objects removed from said bin. 16. The apparatus of claim 13, 14, or 15 wherein said weighing means is a load cell having said bin attached thereto . 17. The apparatus of claim 16 wherein said bin is removably attached to said load cell. 18. The apparatus of claim 12 wherein said digital analysis means includes means for inputting a zone code, said digital analysis means requesting operator input by way of a visual signal produced when said weight signal changes by more than a predetermined limit. 19. A method for producing a weight manifest comprising the steps of: situating all objects to be weighed into a weighing bin connected to a weighing device, said weighing device SUBSTITUTE SHEET producing at an output a signal proportional to the weight of the bin including the objects therein; monitoring said signal until said signal stabilizes; removing an object from within the bin; monitoring said signal and detecting removal of a first one of said objects from said bin; determining the weight of the removed object and correlating it with a unique serial number; monitoring said signal and detecting removal of a second one of said objects in said bin; determining the weight of the second removed object and correlating it with a second unique serial number; and printing a manifest entry including the determined weights and correlated unique serial numbers. 20. The method of claim 19 including after each determining step, the step of printing said serial number on a label, and affixing said label to said removed object. 21. The method of claim 19 including the step of converting said signal into binary data with an A/D converter and converting said binary data into a weight value and printing said weight value and a corresponding postage cost for said weight value on a printer. 22. An apparatus for weighing mail pieces and determining postage cost for each mail piece comprising: means for weighing a plurality of mail pieces at one time; means for automatically detecting in connection with said means for weighing an initial stabilized weight state, a first subsequent stabilized weight state in response to a change in the number of mail pieces, and a second subsequent stabilized weight state in response to a further change in the number of mail pieces; first difference means for calculating in response to the occurrence of said first subsequent stabilized weight state a first weight value equal to the absolute difference between said initial and said first subsequent stabilized weight state and printing a postage label in response thereto; and second difference means for calculating in response to the occurrence of said second subsequent stabilized weight state a second weight value equal to the absolute difference between said first and said second subsequent stabilized weight state, said second difference means including means for determining postage cost in response to calculation of said second weight value and means for printing a postage label including a postage cost in response to determination of said postage cost. 23. The apparatus for weighing mail pieces of claim 22 wherein said means for weighing is a load cell. 24. The apparatus for weighing mail pieces of claim 23 wherein said means for detecting, said first difference means, and said second difference means are components of a computer system having RAM, ROM, A7D converter, a printer, a display, and an operator input device. 25. The apparatus for weighing mail pieces of claim 24 including means for changing postage rates for producing said postage label when said first or second difference weights are in excess of a predetermined weight. 26. The apparatus for weighing mail pieces of claim 22 including means for inputting an optional mail classification code for said first or second difference weights if said first or second difference weights are in excess of a predetermined weight. 27. An apparatus for weighing and determining postage for mail pieces comprising: a container containing mail pieces; means from which said container containing mail pieces is readily removeable, for continuously producing a weight signal corresponding to the weight of said container containing mail pieces; means for automatically producing piece weight connected to said means for producing a weight signal, said .means for automatically producing piece weight responding to said weight signal when said weight signal changes from an initial stable signal level to a successive stable signal level and producing a weight difference signal at an output in response to the occurrence of each successive stable signal level; and means responsive to said weight difference signal for determining a postage cost and producing a corresponding postage cost signal; and means for producing a mailing label including postage cost in response to said postage cost signal. 28. The apparatus of claim 27 wherein said means for producing a weight signal is a load cell. 29. The apparatus of claim 28 wherein said means for producing piece weight and said means responsive to said weight difference signal are portions of a computer system including RAM, ROM, a CRT display, an operator interface, and a printer. 30. An apparatus for weighing mail pieces and printing on each mail piece a postage cost for said mail piece, said apparatus comprising: means for supporting a plurality of mail pieces; a strain gage attached to said means for supporting, said strain gage producing at an output a weight signal - corresponding to forces acting on said strain gage; digital analysis means connected to said strain gage output, said digital analysis means including means for monitoring said weight signal and means for automatically detecting a first and subsequent stabilized weight states, said means for detecting producing at an output a series of postage cost signals, each postage cost signal- corresponding to the absolute difference between each subsequent stabilized weight state detected by said means for detecting and an immediately preceding stabilized weight state and wherein each subsequent stabilized weight state corresponds to a change in the number of mail pieces situated on said means for supporting; and postage cost means responsive to said postage cost signal for producing a postage label. 31. An apparatus for weighing mail pieces and producing a postage label for each of said mail pieces including appropriate postage charges, said apparatus comprising: a bin containing mail pieces; weighing means attached to said bin and producing at an output a weight signal proportional to the weight of said bin containing mail pieces; stable weight detecting means responsive to said weight signal and automatically producing at an output in response to a change in the number of mail pieces contained in said bin a piece weight signal corresponding to the weight difference between a present stabilized weight signal and an immediately preceding stabilized weight signal; and a printer responsive to said piece weight signal, said printer printing a postage label including postage costs corresponding to each piece weight signal received by said printer. 32. An apparatus for automatically producing postage, cost labels for objects of assorted weights comprising: weighing means for weighing a bin containing said objects, said weighing means producing at an output an analog weight signal proportional to the weight of said bin including said objects contained within said bin; digital analysis means including an A/D converter means for converting said weight signal into digital ' values, memory means for storing said digital values, said digital analysis means producing at an output a difference signal for each occurrence of a subsequent stable weight signal, said difference signal corresponding to the absolute difference between a present stable weight signal and an immediately preceding stable weight signal wherein said difference signal corresponds to a change in weight of said bin in response to a change in the number of mail objects contained in said bin; and first printer means connected to said digital analysis means and responsive to said difference signal for printing a postage cost label. 33. The apparatus of claim 32 wherein said digital analysis means is a digital computer including an A/D converter, RAM, ROM, and a printer interface. 34. The apparatus of claim 33 wherein said weighing means is a load cell having said bin attached thereto. 35. The apparatus of claim 34 wherein said bin is removably attached to said load cell. 36. A method for weighing objects and producing a postage label for each of said objects comprising the steps of: situating said objects to be weighed into a weighing bin connected to a weighing device, said weighing device producing at an output a signal proportional to the .weight of the bin including the weight of said objects; monitoring said signal until said signal stabilizes and storing said signal as an initial stable signal state; removing a first object from within said bin; monitoring said signal and automatically detecting removal of said first object from said bin by monitoring said signal and detecting a first stable signal state; automatically determining the weight of said first object and printing a postage label including postage cost for said first object based upon the difference between said initial stable signal state and said first stable signal state; removing a second object from said bin; monitoring said signal and detecting removal of a second object from within said bin by monitoring said signal and detecting a second stable signal state; and automatically determining the weight of said second object by determining the difference between first stable signal state and said second stable signal state and printing a postage label including postage cost for said second object based upon its weight. 37. The method of claim 36 including after each automatically determining step, the step of affixing said postage label to said removed object.

Inventors: BAKER CHRISTOPHER A, BAKER, CHRISTOPHER, A.
Applicants: MAIL CODE INC, M.A.I.L. CODE INC.
Application year: 1990
Main classification: G07B17
IPC codes: G07B17, G07G5