[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 XMOBLOCK()
 Generates a block for XMODEM transmission
------------------------------------------------------------------------------
 Syntax

     XMOBLOCK(<cString>,<nBlockNumber>,[<lCRC>],
        [<nMode>]) --> cXModemBlock

 Arguments

     <cString>  Designates a character string of 128 or 1024 (depending
     on <nMode>) characters.  Excess characters are cut off; missing
     characters are filled with CHR(0).

     <nBlockNumber>  Designates the related block number.

     <lCRC>  Designates whether an XMODEM block is to be formed with a
     checksum (.F.) or with a 16-bit CRC (.T.).  The default value (.F.) is a
     checksum.

     <nMode>  Designates different block types.  Mode 1 designates a 128
     byte block with start character CHR(1).  Mode 2 designates a 1kByte
     block with start character CHR(2).  The default value is a mode 1, 128
     byte block.

 Returns

     This function returns an XMODEM block that is "ready to go".

 Description

     This function generates a data block according to XMODEM conventions,
     which can then be output directly using COM_SEND().  The block number
     and the packet verification procedure that you choose can be designated.
     The function automatically takes into account the fact that after block
     number 255, XMODEM waits for 0 again (block number %256).  So you can go
     as high as you like with your variables.

     An X-MODEM block has the following construction:

     SOH+<BN>+<Complement of BN>+128 data bytes+1 byte CS
     or:
     SOH+<BN>+<Complement of BN>+128 data bytes+2 byte CRC


     This is the construction for a 1k byte block:

     STX+<BN>+<Complement of BN>+1024 data bytes+1 byte CS
     or:
     STX+<BN>+<Complement of BN>+1024 data bytes+2 byte CRC

     BN = Block number, CS = checksum, and CRC = Cyclic Redundancy Check.

 Notes

     .  Verification of the 8-bit checksum corresponds to the
        NUMLOW(ASCII-SUM(Data)) function call.

     .  A programming sample using XMODEM protocols under CA-Clipper
        can be found in the following example program.

 Example

     This is an example of a simplified XMODEM transfer.  Initialization of
     the port is assumed:

     nBlockNum := 0                       // 1st block
     lChkMode  := .T.                     // Use CRC
     nBlkSize  := 128                     // XMODEM block size
     nPointer  := 0                       // Start point in file

     cData  := FILESTR("TEST.TXT", nBlkSize, nPointer)// Read data

     DO WHILE LEN(cData) > 0
        COM_SEND;
        (1, XMOBLOCK(cData, nBlockNum, lChkMode))   // Send block
        nBlockNum := nBlockNum +1                   // Next block
        nPointer  := nPointer  +nBlkSize            // File pointer
        cData     := FILESTR;
        ("TEST.TXT", nBlkSize, nPointer)            // Read data
     ENDDO


See Also: COM_CRC()
This page created by ng2html v1.05, the Norton guide to HTML conversion utility. Written by Dave Pearson