Вверх ↑
Ответов: 36
Рейтинг: 7
#1: 2011-10-31 21:13:07 ЛС | профиль | цитата
Леонид писал(а):
неужели так трудно представить незнающего Ваших проблем и обрисовать задачу для него, чтобы было "необходимо и достаточно"


попробую еще раз.
В угловых скобках стоит один байт информации. Первым байтом в пакете всегда идет STX (Start of Text). Последним - ETX (End of Text):

Dec Oct Hex Binary Value
--- --- --- -------- --------------------------
002 002 002 00000010 STX (Start of Text)
003 003 003 00000011 ETX (End of Text)

Вторым байтом всегда идет позиция, где стоит чексумма, но она всегда на предпоследнем месте (перед ETX), поэтому из нее легко узнается длина пакета, или количество полезных байт. Все что между вторым и предпоследним байтом - полезная информация. Ее длина может варьироваться. Никаких строк, ASCII, все в цифре.

Короче все вышесказанное выглядит так:
<02><n><data_byte_0><...><data_byte_n><crc><03>

Проблема в том, что при считывании с ком-порта строки могут обрываться (тогда часть пакета переносится в следующую строку), или два пакета следующие друг за другом могут склеиваться в один. Поэтому желательно все сначала свалить в одну кучу, а потом уже разделять по принципу - каждый пакет в отдельную строку. Как это сделать, пока не соображу, поэтому прошу помощи.

Надеюсь щас стало немного понятней
------------ Дoбавленo в 20.13:
1nd1g0, все правильно, так я себе в уме и представляю, но в дескретных элементах - напряг. В сях бы без проблем...
карма: 0

0