У меня есть соединение через сокет TCP, где я пытаюсь ответить на сообщение с запросом. Моя спецификация гласит, что ответ на запрос должен иметь формат:
![Header Data](https://i.stack.imgur.com/3CToM.png)
Где заголовок содержит длину данных в шестнадцатеричном формате из двух цифр. Мои данные ответа "202000000000000TEST0_OK "
.
Поскольку ответ имеет длину 25 символов, я предположил, что заголовок будет шестнадцатеричным представлением 25, поэтому 0x19. Однако при отправке этого сообщения я получаю неизвестную ошибку от устройства, на которое отвечаю.
Используя библиотеку BlueSocket
, я отправляю свой ответ, используя:
if(message.contains("00000000000000001")) {
reply = "202000000000000TEST0_OK "
var header: UInt8 = 0x19
try socket.write(from: Data.init(bytes: &header, count: MemoryLayout<UInt8>.size))
try socket.write(from: reply)
}
К сожалению, у меня нет дополнительной информации об ошибке. Я вполне уверен, что мое понимание того, как рассчитать и отправить заголовок, неверно ...
Редактировать: Я также попробовал следующие ответы, которые все не удалось:
"25XXXXXXXXXXXXXXXXXXXXXXXXX"
Начинается с десятичной длины строки данных (25).
"27XXXXXXXXXXXXXXXXXXXXXXXXX"
С добавлением всей длины данных и строки заголовка (27).
"19XXXXXXXXXXXXXXXXXXXXXXXXX"
С добавлением шестнадцатеричного представления длины строки данных (25 символов и 0x19).
"1BXXXXXXXXXXXXXXXXXXXXXXXXX"
С добавлением шестнадцатеричного представления всей длины данных и строки заголовка (27 символов, 0x1B).