|
Протокол обмена
|
|||
---|---|---|---|
#18+
Уважаемые старейшины, не могли вы мне помочь разобраться с "протоколом обмена" с прибором... Вот документация: Код: 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. 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.
При отправке команды: #150248024F000089., получаю ответ: %15498CE5AE7E8D8EA021. так вот я не понимаю 1) откуда такой адрес памяти (0248 - 024F)??? Может это из-за "двоично-шеснадцетиричный вид" см. команду 5 2) как перевести 498CE5AE7E8D8EA021 в нормальные десятичные данные??? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2008, 08:11 |
|
Протокол обмена
|
|||
---|---|---|---|
#18+
Ilhom_uz 1) откуда такой адрес памяти (0248 - 024F)??? Может это из-за "двоично-шеснадцетиричный вид" см. команду 5 Команда #150248024F000089 запрашивает 7 байт из ОЗУ: 1-й байт с адресом 0248 Hex (584 decimal) 2-й байт с адресом 0249 Hex (585 decimal) 3-й байт с адресом 024A Hex (586 decimal) 4-й байт с адресом 024B Hex (587 decimal) 5-й байт с адресом 024C Hex (588 decimal) 6-й байт с адресом 024D Hex (589 decimal) 7-й байт с адресом 024E Hex (590 decimal) Содержимое первых 4-х байт в представленной документации не описано. Байты 5-7 содержат часть информации о температуре газа, но не хватает еще одного байта. Потому что СССС – адрес докуда будем читать ( исключительно ) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2008, 13:33 |
|
Протокол обмена
|
|||
---|---|---|---|
#18+
авторВ ответ на команду чтение всегда присылается минимум 1 пакет (8 байт). Все таки, независимо от конечного адреса возвращается 8 байт. Т.е. в байтах 5-8 содержится температура. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2008, 13:43 |
|
Протокол обмена
|
|||
---|---|---|---|
#18+
автор2) как перевести 498CE5AE7E8D8EA021 в нормальные десятичные данные??? 498CE5AE – первые 4 байта данных 7E8D8EA0 – температура 21 – контрольная сумма CR, видимо, просто не отображается. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2008, 13:48 |
|
Протокол обмена
|
|||
---|---|---|---|
#18+
авторБ1Б2 – ASCII – коды содержимого 1-го байта читаемого ОЗУ в формате – Б1 – ASCII – код старшей тетрады байта Б2 – ASCII – код младшей тетрады байта Видимо, имеется в виду ASCII представление шеснадцетиричного вида. Тогда для температуры: 7E = 126 (дес) 8D = 141 (дес) 8E = 142 (дес) A0 = 160 (дес) Т.е. для примера преобразования во float: авторПреобразование во float вид. if X(s) > 127 then znak = 1 X(s)=X(s) or 128 Flt=2^(X(s+1)-127)*(X(s)*2^16+X(s+3)*2^8+X(s+2))/2^24 If znak=1 then flt= - flt X(s) = 126 X(s+1) = 141 X(s+2) = 142 X(s+3) = 160 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2008, 14:01 |
|
|
start [/forum/topic.php?fid=41&tid=1587438]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
64ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 154ms |
0 / 0 |