вторник, 31 декабря 2013 г.
понедельник, 30 декабря 2013 г.
Цитата
Лучший путь к написанию эффективного кода — не усложнять его без необходимости.
Бьерн Страуструп
воскресенье, 29 декабря 2013 г.
Релиз reup-1.3.2
Изменения:
- Timestamp в имени файла при архивировании репозитория заменен на дату_время;
- Проведена некоторая оптимизация кода.
Исходный код доступен ЗДЕСЬ.
вторник, 10 декабря 2013 г.
Релиз reup-1.3.0
Добавлена возможность автоматического обновления таблицы, описывающей модификации двигателей и соответствующие им файлы "прошивок".
Исходный код доступен ЗДЕСЬ.
Исходный код доступен ЗДЕСЬ.
воскресенье, 8 декабря 2013 г.
суббота, 7 декабря 2013 г.
Релиз reup-1.2.1
Изменения:
- Устранена ошибка в функции очистки каталога утилиты trimmhex (функция удаляла не все указанные файлы);
- Добавлен вывод уведомлений о выполняемых операциях и их завершении;
- Оптимизирована обработка пользовательского ввода.
Исходный код доступен ЗДЕСЬ.
понедельник, 2 декабря 2013 г.
Релиз reup-1.2.0
Главным новшеством в этой версии является функционал автоматического обновления идентификационной информации в hex-файлах.
Исходный код доступен ЗДЕСЬ.
Исходный код доступен ЗДЕСЬ.
воскресенье, 1 декабря 2013 г.
C++. Intel hex. Checksum calculation
#include <iostream>
#include <string>
#include <vector>
#include <sstream>
#include <algorithm>
#include <cstdint>
using namespace std;
vector<size_t> hexToNumBS(const string &srcStr) {
vector<size_t> v;
if ( srcStr.size() < 2 ) {
return v;
}
stringstream ss;
size_t code = 0;
for ( size_t i=1; i<srcStr.size(); i+=2 ) {
ss << hex << srcStr.substr(i-1, 2);
ss >> code;
v.push_back(code);
ss.clear();
}
return v;
}
string checksum(const string &str) {
vector<size_t> v = hexToNumBS(str);
u_int8_t cs = 0;
for ( size_t i=0; i<v.size(); i++ ) {
cs -= v[i];
}
stringstream ss;
ss << hex << static_cast<size_t>(cs);
string ret;
ss >> ret;
if ( ret.size() < 2 ) {
ret = "0" + ret;
}
else if ( ret.size() > 2 ) {
return "";
}
transform(ret.begin(), ret.end(), ret.begin(), ::toupper);
return ret;
}
int main() {
string fullOrigStr("102AE0007C0803A6382100084E8000209421FFE8CE");
cout << "Full original string: "
<< fullOrigStr << "\n";
string origStr = fullOrigStr.substr(0, fullOrigStr.size()-2);
cout << "Original string w/o checksum byte: " << origStr << "\n";
cout << "Calculated checksum: "
<< checksum(origStr) << "\n";
return 0;
}
Подписаться на:
Сообщения (Atom)