C++ chat 0. Простые вопросы, лабы и о IDE — в чат новичков @supapro 1. No Ads, offtop, flood 2. Полные правила тут https://t.me/ProCxx/259155 Объявления о вакансиях,эвентах - в лс @AlexFails или @MasterZiV канал вакансий https://t.me/ProCxxJobs
По-идее всё, по крайней мере я так когда работал с девайсами делал
Читать полностью…(buf[k]&0xff);
и
(pcBlock[k] & 0xFFFF);
немного отличается не?
Я не говорю на столь странном наречии. Позовите переводчика.
Я про функцию из скинутой вами пдф-ки
word CRC16(word crc, byte *buf, word len)
{
word bits, k;
word accumulator, temp;
for( k = 0; k<len; k++ )
{
accumulator = 0;
temp = (crc>>8)<<8;
for( bits = 0; bits < 8; bits++ )
{
if( (temp ^ accumulator) & 0x8000 )
accumulator = (accumulator << 1) ^ 0x1021;
else
accumulator <<= 1;
temp <<= 1;
}
crc = accumulator^(crc<<8)^(buf[k]&0xff);
}
return crc;
Тэк. А что вы в качестве первого параметра в ту функцию передаете?
Читать полностью…https://massa.ru/upload/iblock/2ef/pprotocol-vpm.doc1.r1.pdf функция расчета crc здесь в конце файла
Читать полностью…Один из двух ведущих производителей станков с числовым программным управлением
Читать полностью…можно ещё оптимизации в релизе не включать, а то получается на дебаге переполнение оно как бы и не уб(на практике), а на релизе уб, но очевидно что это некорректно
А вот заменять assert на assume в релизе было бы хорошо
если разобраться по формату команды, то первые 3 байта f8 55 c9 это заголовок, след. 2 байта 05 00 - длинна данных команды, еще 1 байт 41 - код команды, остальное данные команды (т.е. входные параметры команды). Что из этого надо пропускать через crc точно не сказано. По логике надо полностью пакет. Но, я пробовал по разному.
Читать полностью…unsigned short Crc16_2(const unsigned char* pcBlock, unsigned short len)
{
unsigned short crc = 0;
unsigned short acc = 0;
unsigned short temp = 0;
unsigned short k, bits;
for (k = 0; k < len; k++)
{
acc = 0;
temp = ((crc >> 8) << 8);
for (bits = 0; bits < 8; bits++)
{
if ((temp ^ acc) & 0x8000) {
acc = (acc << 1) ^ 0x1021;
}
else {
acc = (acc << 1);
}
temp = (temp << 1);
}
crc = acc ^ (crc << 8) ^ (pcBlock[k] & 0xFFFF);
}
return crc;
}
этот вопрос точно соответствует пункту 0 из описания чата?
Читать полностью…0000 f8 b5 4d 3f 5a 75 00 1e fc a8 00 c8 08 00 45 00 ..M?Zu........E.
0010 00 34 04 41 00 00 ff 06 34 a3 c0 a8 00 c8 c0 a8 .4.A....4.......
0020 00 c7 13 89 14 e0 19 bc de 02 b8 fb 53 8d 50 18 ............S.P.
0030 06 00 f1 57 00 00 f8 55 ce 05 00 41 ff 01 00 00 ...W...U...A....
0040 43 39 C9
Приветствую коллеги. Пишу библиотеку связи с устройством по сети протокол tcp. Для устройства есть файл описывающий формат tcp пакетов, которые являются командами для устройства. Любой пакет по этому описанию содержит crc16 в последних двух байтах. Есть даже код функции расчета crc16 которую предлагается использовать. Устройство в ответ отправляет пакет аналогичного формата, тоже с crc. Для проверки работы функции я пропустил полученные от устройства данные через предложенную crc функцию. Но, как результат я получил совсем не то, что пришло от устройства. Вот данные которые пришли от устройства "f8 55 ce 05 00 41 ff 01 00 00 43 39". Здесь 43 39 это crc данных. Но, у меня crc этого пакета по описанной функции получается e4 e0. И crccalc.com ничего похожего на тот crc который пришел в пакете не выдает. В чем подвох? Может кто сталкивался?
Читать полностью…далее посмотреть если в проекте используются динлибы свои, то возможно выгружается динлиба содержащая вирт таблицы каких-то еще используемых объектов
Читать полностью…Это если вообще есть этап тестирования:) Вообще да, согласен.
Читать полностью…