当前页面:技术资料
ну раз в свободном, значит можно сделать дополнение еще одним камментом. ==== Более доступным языком... В общих чертах, алгоритм следующий: Передача данных начинается с первого блока (нулевой передается самым последним). 1. Синхронизация. 2. Синхронизация 3. Передача номера блока 4. Передача самого блока 5. Синхронизация 6. Передача старшего байта контрольной суммы блока 7. Передача младшего байта контрольной суммы блока 8. Чтение байта подтверждения (0х6 – если накопитель принял корректно данные и КС их совпадает, 0х15 – если ошибка) 9. Если конец файла не достигнут – передается следующий блок -> пункт 2 10. Передача номера блока (0) 11. Передача самого блока. 12. Синхронизация 13. Передача старшего байта КС блока 14. Передача младшего байта КС блока 15. Чтение байта подтверждения (0х6 – если накопитель принял корректно данные и КС их совпадает, 0х15 – если ошибка) 16. Передача старшего байта контрольной суммы всего передаваемого файла 17. Передача младшего байта контрольной суммы всего передаваемого файла Принцип подсчета КС блока: sCRC=sCRC+((sCRC AND 0xAA) XOR cByteForSend); Плюс в конце после подсчета по всем байтам блока добавляем и номер блока sCRC=sCRC+((sCRC AND 0xAA) XOR iNumberBlock); Принцип подсчета КС файла: sCRCCommon=sCRCCommon+((sCRCCommon AND 0xAA) XOR cByteForSend); Общую КС начинать считать от начала файла! Синхронизация: 这是来自俄文网站的资料. 1: 发送CC 返回77 2. 发送 33 返回88 3. 发送CC33 返回7788 4. 数据块编号如:01-7F 5. 数据块内容 6. 发送CC33 返回7788 7. 发送数据块校验 sCRC=sCRC ((sCRC AND 0xAA) XOR cByteForSend); 发送字节 sCRC=sCRC ((sCRC AND 0xAA) XOR iNumberBlock); 数据块编号 sCRC取后4位 8. 校验返回正确06 错误15 9. 继续发送,返回到第3步。 如果已发送到最后一个数据块。则最后发送0数据块。进入第10步。 10. 发送CC33 返回7788 11. 数据块编号:00 12. 发送内容 13. 发送CC33 14. 发送数据块校验方法同7 15. 校验返回值正确06 错误15 16. 发送整个文件的校验 sCRCCommon=sCRCCommon ((sCRCCommon AND 0xAA) XOR cByteForSend) cByteForSend所有发送的字节。 补充说明: 如果我们发送一个APP文件。 共80个数据块。它的发送顺序是: 01 02 03 。。。7B 7E 7F 00 这是希捷维修软件的核心技术。自己研究了好久才得出的心得。供大家参考。 参考自俄文网站。