请问“带进位累加和”的有关问题,分不够再加

请教“带进位累加和”的问题,急,分不够再加
最近开发雅讯个人定位设备的管理系统,在分析其通信协议时遇到“带进位累加和”的问题,还望各位大侠帮忙解决,谢谢。

我收到来自设备的一组登录数据,数据如下:
7E-03-0C-04-01-31-31-31-31-31-31-01-01-0F-31-33-38-36-33-38-38-34-34-34-38-20-20-20-20-7E
按照通信协议中写的数据结构分解为:
数据结构为:[0x7E|版本号(1)|校验(1)|优先级(1)|类型(1)|数据(n)|0x7E]

数据头:7E
版本号:03
校验和:0C
优先级:04
类型     :01
数据     :31-31-31-31-31-31-01-01-0F-31-33-38-36-33-38-38-34-34-34-38-20-20-20-20
数据尾:7E

在协议中校验和的计算方法如下:
---------------------------------------------------
从版本号到数据字段的各个字节的带进位累加和,累加完后将该字节最高位清零,如最终结果为0,则转义为7FH。计算时,先将校验和字段填0x00,计算后,再将校验和写入该字段。
---------------------------------------------------

但是我死活计算不出这个数值为0C的校验和来,还请大家帮忙。
下面是我计算校验和的代码:
                ' ' '   <summary>
                ' ' '   获取校验和
                ' ' '   </summary>
                ' ' '   <param   name= "Data "> </param>
                ' ' '   <returns> </returns>
                ' ' '   <remarks> </remarks>
                Public   Shared   Function   GetCheckSum(ByVal   Data   As   Byte(),   Optional   ByVal   StartIndex   As   Integer   =   0,   Optional   ByVal   Length   As   Integer   =   -1,   Optional   ByVal   CheckIndex   As   Integer   =   -1)   As   Byte
                        If   Data   Is   Nothing   Then   Return   0
                        Dim   chk   As   Byte
                        Dim   cj   As   Long
                        For   i   As   Integer   =   StartIndex   To   Math.Min(Data.Length,   Length   +   StartIndex)   -   1
                                If   i   <>   CheckIndex   Then
                                        cj   =   (cj   +   Data(i))   And   &HFF
                                End   If
                        Next
                        cj   =   cj   And   &HFF
                        chk   =   CByte(cj)
                        Return   chk
                End   Function

------解决方案--------------------
沙发,帮忙顶
------解决方案--------------------