Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Алгоритм перебора кодов ошибок. Как лучше?
|
|||
|---|---|---|---|
|
#18+
Застрял казалось бы на ровном месте. Есть четыре установки, в каждой 19 каналов, в каждом канале 64 бита - каждый бит - флаг номера ошибки то есть всего 64 ошибки. То есть Код: plaintext 1. 2. 3. 4. 5. 6. И если пришло unit_failure_code[3].channel_fail_codes[1] = 0x24; ..(0010 0100) То значит в установке номер 3 в канале номер 1 есть два кода ошибки - №2 и №5 И все бы хорошо но мне нужно показать коды ошибок на дисплее в форме UNIT_NUM CHANNEL_NUM FAILURE_CODE и кнопками вверх вниз перебирать коды ошибок. допустим пришли данные УСТАНОВКА 0 КАНАЛ 1 ОШИБКИ 2 И 5 УСТАНОВКА 0 КАНАЛ 2 ОШИБКИ 3 И 4 УСТАНОВКА 1 КАНАЛ 7 ОШИБКИ 1 И 6 и 7 на каждое нажатие на кнопку *вверх* я должен увидеть UNIT CHAN CODE 00 01 02 00 01 05 00 02 03 00 02 04 01 07 01 01 07 06 01 07 07 Вопрос как сохранить коды ошибок? В какой структуре? На каждый канал в каждой установке открыть 64 переменных - по количеству ошибок на канал? Но тогда получается 4(установки) * 19(каналов) * 64(ошибки) = 4864 байт. Монструозный размерчик. А если отображать динамически. Нужно перебрать в одной установке все каналы со всеми присутствующими кодами а потом перейти к следующей установке и там повторить то же самое и так далее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 08:40 |
|
||
|
Алгоритм перебора кодов ошибок. Как лучше?
|
|||
|---|---|---|---|
|
#18+
jenya7на каждое нажатие на кнопку *вверх* я должен увидеть UNIT CHAN CODE 00 01 02 00 01 05 00 02 03 00 02 04 01 07 01 01 07 06 01 07 07 Храни в таком виде, всего 21 байт. Чем такой формат не нравится? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 08:53 |
|
||
|
Алгоритм перебора кодов ошибок. Как лучше?
|
|||
|---|---|---|---|
|
#18+
Dima Tjenya7на каждое нажатие на кнопку *вверх* я должен увидеть UNIT CHAN CODE 00 01 02 00 01 05 00 02 03 00 02 04 01 07 01 01 07 06 01 07 07 Храни в таком виде, всего 21 байт. Чем такой формат не нравится? это же переменная величина. а если придут все коды по всем каналам по всем четырем установкам? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 08:58 |
|
||
|
Алгоритм перебора кодов ошибок. Как лучше?
|
|||
|---|---|---|---|
|
#18+
Ну ты сам на свой вопрос и ответил - делай массив для каждой установки именно для такого случая. 4 массива по 64 бита. Коллега чтоли? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 09:07 |
|
||
|
Алгоритм перебора кодов ошибок. Как лучше?
|
|||
|---|---|---|---|
|
#18+
В смысле 4*19*64. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 09:08 |
|
||
|
Алгоритм перебора кодов ошибок. Как лучше?
|
|||
|---|---|---|---|
|
#18+
jenya7это же переменная величина. а если придут все коды по всем каналам по всем четырем установкам? Если все, то 14,5 кб потребуется. Насколько вероятна такая ситуация? Сколько ошибок обычно бывает? Исходи из того что в исходном виде требуется 4864 бит или 608 байт. Все что меньше - приемлемо. Если обычно ошибок немного, то тот формат подходит. Эту запись можно немного соптимизировать. Если всегда установок не более 8, а каналов не более 32, то их можно уместить в 1 байт, плюс байт под номер ошибки, т.е. 2 байта на хранение одной ошибки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 09:09 |
|
||
|
Алгоритм перебора кодов ошибок. Как лучше?
|
|||
|---|---|---|---|
|
#18+
АСУ ТПшникНу ты сам на свой вопрос и ответил - делай массив для каждой установки именно для такого случая. 4 массива по 64 бита. Коллега чтоли? :) 4(установки) * 19(каналов) * 64(ошибки) = 4864 байт. И если учесть что с кодом ошибки нужно хранить номер установки и номер канала - 9728 байт!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 09:10 |
|
||
|
Алгоритм перебора кодов ошибок. Как лучше?
|
|||
|---|---|---|---|
|
#18+
jenya7Но тогда получается 4(установки) * 19(каналов) * 64(ошибки) = 4864 байт. Монструозный размерчик.А цель-то какая? Если цель в хранении и отображении - то приоритетом будет полнота хранения и эффективность доступа. А тогда 5 кбайт- это тьфу, и растереть... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 09:13 |
|
||
|
Алгоритм перебора кодов ошибок. Как лучше?
|
|||
|---|---|---|---|
|
#18+
jenya7 4(установки) * 19(каналов) * 64(ошибки) = 4864 байт. Почему байт? У тебя же 1 бит - 1 ошибка. 4864 бит - это 608 байт. jenya7И если учесть что с кодом ошибки нужно хранить номер установки и номер канала - 9728 байт!!! Вроде как номер установки уже уже учли. Или еще есть какой-то другой номер о котором ты не упомянул? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 09:14 |
|
||
|
Алгоритм перебора кодов ошибок. Как лучше?
|
|||
|---|---|---|---|
|
#18+
Dima Tjenya7 4(установки) * 19(каналов) * 64(ошибки) = 4864 байт. Почему байт? У тебя же 1 бит - 1 ошибка. 4864 бит - это 608 байт. jenya7И если учесть что с кодом ошибки нужно хранить номер установки и номер канала - 9728 байт!!! Вроде как номер установки уже уже учли. Или еще есть какой-то другой номер о котором ты не упомянул? unit_failure_code[3].channel_fail_codes[1] = 0x00000024; это значит нужно сохранить unit=3 channel=1 code=2 unit=3 channel=1 code=5 каждый бит это номер ошибки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 09:21 |
|
||
|
Алгоритм перебора кодов ошибок. Как лучше?
|
|||
|---|---|---|---|
|
#18+
имена путают, правильней так unit[3].channel[1] = 0x00000024 - коды ошибок на первом канале ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 09:24 |
|
||
|
Алгоритм перебора кодов ошибок. Как лучше?
|
|||
|---|---|---|---|
|
#18+
jenya7каждый бит это номер ошибки Почему нельзя хранить в исходном виде? jenya7 Код: plaintext 1. 2. 3. 4. 5. 6. unit_failure_code[4] это 608 байт Откуда появилось 4864 байт ? Если ошибок обычно немного, то 21647595 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 09:28 |
|
||
|
Алгоритм перебора кодов ошибок. Как лучше?
|
|||
|---|---|---|---|
|
#18+
Dima Tjenya7каждый бит это номер ошибки Почему нельзя хранить в исходном виде? jenya7 Код: plaintext 1. 2. 3. 4. 5. 6. unit_failure_code[4] это 608 байт Откуда появилось 4864 байт ? Если ошибок обычно немного, то 21647595 откуда 608 байт? 4 установки по 19 каналов это 76 каналов - а в каждом канале 64 бита - а каждый бит это номер ошибки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 09:32 |
|
||
|
Алгоритм перебора кодов ошибок. Как лучше?
|
|||
|---|---|---|---|
|
#18+
jenya7откуда 608 байт? 4 установки по 19 каналов это 76 каналов - а в каждом канале 64 бита - а каждый бит это номер ошибки. Для справки: в одном байте 8 бит. Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 09:35 |
|
||
|
Алгоритм перебора кодов ошибок. Как лучше?
|
|||
|---|---|---|---|
|
#18+
Посмотри sizeof(unit_failure_code) - это общий размер массива в байтах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 09:41 |
|
||
|
Алгоритм перебора кодов ошибок. Как лучше?
|
|||
|---|---|---|---|
|
#18+
Dima Tjenya7откуда 608 байт? 4 установки по 19 каналов это 76 каналов - а в каждом канале 64 бита - а каждый бит это номер ошибки. Для справки: в одном байте 8 бит. Код: sql 1. а почему делить? каждый бит из 64 - это номер ошибки тут 1000000000000000000000000000000000000000000000000000000000100100 мы имеем коды ошибок 2, 5 , 63 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 09:42 |
|
||
|
Алгоритм перебора кодов ошибок. Как лучше?
|
|||
|---|---|---|---|
|
#18+
ааа. понял где мы не понимаем друг друга - на каждый код я должен выделить байт - так как максималбный код - 63 - это 6 бит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 09:45 |
|
||
|
Алгоритм перебора кодов ошибок. Как лучше?
|
|||
|---|---|---|---|
|
#18+
jenya7ааа. понял где мы не понимаем друг друга - на каждый код я должен выделить байт - так как максималбный код - 63 - это 6 бит Зачем хранить 1 бит в одном байте? Для чего? Почему нельзя хранить в исходном виде? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 09:51 |
|
||
|
Алгоритм перебора кодов ошибок. Как лучше?
|
|||
|---|---|---|---|
|
#18+
Dima Tjenya7ааа. понял где мы не понимаем друг друга - на каждый код я должен выделить байт - так как максималбный код - 63 - это 6 бит Зачем хранить 1 бит в одном байте? Для чего? Почему нельзя хранить в исходном виде? потому что я не могу показать на экране автор1000000000000000000000000000000000000000000000000000000000100100 я должен показать автор03 01 02 03 01 05 03 01 63 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 09:57 |
|
||
|
Алгоритм перебора кодов ошибок. Как лучше?
|
|||
|---|---|---|---|
|
#18+
jenya7я должен показать Одно другому не мешает. Хранить не обязательно в том формате, в котором показывать. Показать можно так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 10:18 |
|
||
|
Алгоритм перебора кодов ошибок. Как лучше?
|
|||
|---|---|---|---|
|
#18+
Dima Tjenya7я должен показать Одно другому не мешает. Хранить не обязательно в том формате, в котором показывать. Показать можно так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. это интересно. но тут есть проблема - каждый последующий код нужно показывать по нажатию кнопки - и нужно перескакивать - последняя ошибка (63) - следующий канал - последний какнал (19) - следующая установка - и так далее. я тут просимулировал в шарпе Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. работает но уж очень криво. и только вверх. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 10:37 |
|
||
|
Алгоритм перебора кодов ошибок. Как лучше?
|
|||
|---|---|---|---|
|
#18+
Если C# то почитай про yield ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 10:44 |
|
||
|
Алгоритм перебора кодов ошибок. Как лучше?
|
|||
|---|---|---|---|
|
#18+
Dima TЕсли C# то почитай про yield это только для отладки алгоритма. а работать он должен в голом С. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 10:52 |
|
||
|
Алгоритм перебора кодов ошибок. Как лучше?
|
|||
|---|---|---|---|
|
#18+
jenya7Dima TЕсли C# то почитай про yield это только для отладки алгоритма. а работать он должен в голом С. Вынеси индексы циклов в отдельную структуру. Пример Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 11:56 |
|
||
|
Алгоритм перебора кодов ошибок. Как лучше?
|
|||
|---|---|---|---|
|
#18+
Dima Tjenya7пропущено... это только для отладки алгоритма. а работать он должен в голом С. Вынеси индексы циклов в отдельную структуру. Пример Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. понял. спасибо. попробую. выглядит красиво ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 12:17 |
|
||
|
|

start [/forum/topic.php?fid=16&tid=1340067]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
186ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
| others: | 13ms |
| total: | 306ms |

| 0 / 0 |
