|
|
  |
Как можно кратко переписать приведенный код? |
|
|
|
Aug 18 2012, 12:57
|
Гуру
     
Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446

|
Код unsigned char buf_rx[256];
struct dataexchange_t { unsigned char b1; unsigned char b2; unsigned char b3; unsigned char b4; unsigned char b5; unsigned char b6; unsigned char b7; unsigned char b8; unsigned char b9; unsigned char b10; unsigned char b11; unsigned char b12; unsigned char b13; unsigned char b14; unsigned char b15; unsigned char b16; unsigned char b17; unsigned char b18; unsigned char b19; unsigned char b20; unsigned char b21; unsigned char b22; unsigned char b23; unsigned char b24; unsigned char b25; unsigned char b26; unsigned char b27; unsigned char b28; unsigned char b29; unsigned char b30; unsigned char b31; unsigned char b32; unsigned char b33; unsigned char b34; unsigned char b35; unsigned char b36; unsigned char b37; unsigned char b38; unsigned char b39; unsigned char b40; unsigned char b41; unsigned char b42; unsigned char b43; unsigned char b44; unsigned char b45; unsigned char b46; unsigned char b47; unsigned char b48; unsigned char b49; unsigned char b50; unsigned char b51; unsigned char b52; unsigned char b53; unsigned char b54; unsigned char b55; unsigned char b56; unsigned char b57; unsigned char b58; unsigned char b59; unsigned char b60; unsigned char b61; unsigned char b62; unsigned char b63; unsigned char b64; unsigned char b65; }; Собственно код: Код buf_rx[0] = pdata.b1; buf_rx[1] = pdata.b2; buf_rx[2] = pdata.b3; buf_rx[3] = pdata.b4; buf_rx[4] = pdata.b5; buf_rx[5] = pdata.b6; buf_rx[6] = pdata.b7; buf_rx[7] = pdata.b8; buf_rx[8] = pdata.b9; buf_rx[9] = pdata.b10; buf_rx[10] = pdata.b11; buf_rx[11] = pdata.b12; buf_rx[12] = pdata.b13; buf_rx[13] = pdata.b14; buf_rx[14] = pdata.b15; buf_rx[15] = pdata.b16; buf_rx[16] = pdata.b17; buf_rx[17] = pdata.b18; buf_rx[18] = pdata.b19; buf_rx[19] = pdata.b20; buf_rx[20] = pdata.b21; buf_rx[21] = pdata.b22; buf_rx[22] = pdata.b23; buf_rx[23] = pdata.b24; buf_rx[24] = pdata.b25; buf_rx[25] = pdata.b26; buf_rx[26] = pdata.b27; buf_rx[27] = pdata.b28; buf_rx[28] = pdata.b29; buf_rx[29] = pdata.b30; buf_rx[30] = pdata.b31; buf_rx[31] = pdata.b32; buf_rx[32] = pdata.b33; buf_rx[33] = pdata.b34; buf_rx[34] = pdata.b35; buf_rx[35] = pdata.b36; buf_rx[36] = pdata.b37; buf_rx[37] = pdata.b38; buf_rx[38] = pdata.b39; buf_rx[39] = pdata.b40; buf_rx[40] = pdata.b41; buf_rx[41] = pdata.b42; buf_rx[42] = pdata.b43; buf_rx[43] = pdata.b44; buf_rx[44] = pdata.b45; buf_rx[45] = pdata.b46; buf_rx[46] = pdata.b47; buf_rx[47] = pdata.b48; buf_rx[48] = pdata.b49; buf_rx[49] = pdata.b50; buf_rx[50] = pdata.b51; buf_rx[51] = pdata.b52; buf_rx[52] = pdata.b53; buf_rx[53] = pdata.b54; buf_rx[54] = pdata.b55; buf_rx[55] = pdata.b56; buf_rx[56] = pdata.b57; buf_rx[57] = pdata.b58; buf_rx[58] = pdata.b59; buf_rx[59] = pdata.b60; buf_rx[60] = pdata.b61; buf_rx[61] = pdata.b62; buf_rx[62] = pdata.b63; buf_rx[63] = pdata.b64; Спасибо
--------------------
Живи днем так, чтобы ночью ты спал спокойно.
|
|
|
|
|
Aug 18 2012, 13:14
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Код memcpy(buf_rx, &pdata, sizeof(pdata)); Ой, во если в стркутуре таки есть .b65, а втором фрагменте он таки не копируется, то Код memcpy(buf_rx, &pdata, sizeof(pdata)-1);
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Aug 18 2012, 13:17
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(smk @ Aug 18 2012, 15:57)  Код unsigned char buf_rx[256];
struct dataexchange_t { unsigned char b1; unsigned char b2; unsigned char b3; unsigned char b4;
unsigned char b64; unsigned char b65; }; Собственно код: Код buf_rx[0] = pdata.b1; buf_rx[1] = pdata.b2;
buf_rx[62] = pdata.b63; buf_rx[63] = pdata.b64; Спасибо Код struct dataexchange_t { unsigned char Buffer[65]; };
buf_rx[0] = pdata.Buffer[0];
|
|
|
|
|
Aug 18 2012, 13:28
|
Гуру
     
Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446

|
Огромное спасибо. А обратная задача? Код pdata.b1 = buf_tx[0]; pdata.b2 = buf_tx[1]; pdata.b3 = buf_tx[2]; pdata.b4 = buf_tx[3]; pdata.b5 = buf_tx[4]; pdata.b6 = buf_tx[5]; pdata.b7 = buf_tx[6]; pdata.b8 = buf_tx[7]; pdata.b9 = buf_tx[8]; pdata.b10 = buf_tx[9]; pdata.b11 = buf_tx[10]; pdata.b12 = buf_tx[11]; pdata.b13 = buf_tx[12]; pdata.b14 = buf_tx[13]; pdata.b15 = buf_tx[14]; pdata.b16 = buf_tx[15]; pdata.b17 = buf_tx[16]; pdata.b18 = buf_tx[17]; pdata.b19 = buf_tx[18]; pdata.b20 = buf_tx[19]; pdata.b21 = buf_tx[20]; pdata.b22 = buf_tx[21]; pdata.b23 = buf_tx[22]; pdata.b24 = buf_tx[23]; pdata.b25 = buf_tx[24]; pdata.b26 = buf_tx[25]; pdata.b27 = buf_tx[26]; pdata.b28 = buf_tx[27]; pdata.b29 = buf_tx[28]; pdata.b30 = buf_tx[29]; pdata.b31 = buf_tx[30]; pdata.b32 = buf_tx[31]; pdata.b33 = buf_tx[32]; pdata.b34 = buf_tx[33]; pdata.b35 = buf_tx[34]; pdata.b36 = buf_tx[35]; pdata.b37 = buf_tx[36]; pdata.b38 = buf_tx[37]; pdata.b39 = buf_tx[38]; pdata.b40 = buf_tx[39]; pdata.b41 = buf_tx[40]; pdata.b42 = buf_tx[41]; pdata.b43 = buf_tx[42]; pdata.b44 = buf_tx[43]; pdata.b45 = buf_tx[44]; pdata.b46 = buf_tx[45]; pdata.b47 = buf_tx[46]; pdata.b48 = buf_tx[47]; pdata.b49 = buf_tx[48]; pdata.b50 = buf_tx[49]; pdata.b51 = buf_tx[50]; pdata.b52 = buf_tx[51]; pdata.b53 = buf_tx[52]; pdata.b54 = buf_tx[53]; pdata.b55 = buf_tx[54]; pdata.b56 = buf_tx[55]; pdata.b57 = buf_tx[56]; pdata.b58 = buf_tx[57]; pdata.b59 = buf_tx[58]; pdata.b60 = buf_tx[59]; pdata.b61 = buf_tx[60]; pdata.b62 = buf_tx[61]; pdata.b63 = buf_tx[62]; pdata.b64 = buf_tx[63]; memcpy( &pdata, buf_tx, sizeof(pdata)); так?
--------------------
Живи днем так, чтобы ночью ты спал спокойно.
|
|
|
|
|
Aug 18 2012, 13:31
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(smk @ Aug 18 2012, 16:28)  Огромное спасибо. А обратная задача? Код pdata.b1 = buf_tx[0]; memcpy( &pdata, buf_tx, sizeof(pdata)); так? А не лень было структуру с таким количеством байт городить? Это ж замучатся можно? И зачем она такая?
|
|
|
|
|
Aug 18 2012, 19:09
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(smk @ Aug 18 2012, 20:49)  Чет не получается обратно. Делал так: memcpy(&pdata, buf_tx, sizeof(buf_tx)); Вроде работает, но при выходе из программы выдает ошибку. Может кто вкурсе что не так и как правильно? buf_tx - это что? Это: Код unsigned char buf_rx[256]; ? Тогда вы 256 байт копируете. Может так: Код memcpy(&pdata, buf_tx, sizeof(dataexchange_t)); , или так: Код memcpy(&pdata, buf_tx, sizeof(pdata)); ?
|
|
|
|
|
Aug 19 2012, 09:39
|
Гуру
     
Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446

|
Цитата(_Артём_ @ Aug 18 2012, 22:09)  buf_tx - это что? Это: Код unsigned char buf_rx[256]; ? Тогда вы 256 байт копируете.Может так: Код memcpy(&pdata, buf_tx, sizeof(dataexchange_t)); , или так: Код memcpy(&pdata, buf_tx, sizeof(pdata)); ? Точно! Я и забыл что он больше... Спасибо.
--------------------
Живи днем так, чтобы ночью ты спал спокойно.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|