Тема: CITROEN-ARDUINO
Показать сообщение отдельно
Старый 04.02.2016, 19:13   #169
GASCHE
Старший Пользователь
 
Аватар для GASCHE
 
Регистрация: 01.04.2010
Регион: 35
Сообщений: 697
GASCHE is on a distinguished road
По умолчанию

Цитата:
Сообщение от T_r_D Посмотреть сообщение
Это длина буфера с пришедшим сообщением
Цитата:
Сообщение от T_r_D Посмотреть сообщение
мой лог в HEX
10 0D 10 1D 19 10 56 45
04 00 60
30 00 0A
10 00
21 53 54 49 20 46 4D 90
00 00 00 00 00 00 00 D0
00 FF FF 00 55 00 00 00
01 03 92 40 00 D0 00 10
00 00 02 6F 00 59 00 00
FF FF 00 50 00 00 00 00
01 00 00 00 00
00 FF FF 00 00 07 38 09
02 3F FF FF FF 00 FF FF
Если сообщение 10 0D 10 1D 19 10 56 45 то
buf[0] & 0x0F * 256 = 0
buf[1] = 0D
Length = (buf[0] & 0x0F * 256 + buf[1]) = 0D общая длина сообщения.
Теперь
First frame количество значащих байт 6
j = 0;
for (int i=2; 6;i++){
DataBuf[j] = buf[i];
j++;
}
Теперь судя по логу надо искать 21 и со следующего байта копировать 7 или (Length - 6) байт если (Length - 6) < 7 потом искать 22 если надо и так далее пока не скопируете Length байт.
В этом случае в DataBuf будет посылка без обрамления и DataBufSize = Length.
К сожалению я не знаю язык на котором вы пишите.
GASCHE вне форума   Ответить с цитированием