Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » FAQ по Bascom AVR и МК » преобразовать строку в байтовый массив


преобразовать строку в байтовый массив

Сообщений 1 страница 4 из 4

1

Здравствуйте, подскажите как быстро преобразовать строку string*20 в байтовый массив?
я сейцчас делаю так

Код:
 Dim Input_buffer_str As String * 20
 Dim Getstr As String * 1
 Dim Getbyteinstr(20) Byte

Dim Crcstr As Byte
Dim Crcstr1 As Byte
Dim Crcstr2 As Byte

.....................
        Tmp = Len(input_buffer_str)                 ' пакет не нулевой
        If Tmp > 0 Then
            Getstr = Mid(input_buffer_str , 1 , 1)
            Getbyteinstr(1) = Asc(getstr)                   'адрес устройства
               If Getbyteinstr(1) = 254 Or Getbyteinstr(1) = Табло_адрес Then
                  Getstr = Mid(input_buffer_str , 2 , 1)
                  Getbyteinstr(2) = Asc(getstr)             'длинна полезного пакета БЕЗ СРС8!!!
                  If Getbyteinstr(2) < Tmp Then
                     Crcstr = Getbyteinstr(2) + 1           ' если длинна пакета правильноя то идем дальше
                     For I = 3 To Crcstr
                        Getstr = Mid(input_buffer_str , I , 1)
                        Getbyteinstr(i) = Asc(getstr)       'загоняем пакет в массив    c CRC8
                     Next
                     Getstr = Mid(input_buffer_str , Crcstr , 1)
                     Crcstr2 = Asc(getstr)                  'получаем срс в покете
                     Input_buffer_str = Mid(input_buffer_str , 1 , Getbyteinstr(2))       ' обрезаем строку  без срс
                     Crcstr1 = Crc8(input_buffer_str , 3)       ' выщитываем срс

                     If Crcstr1 = Crcstr2 Then
....................

но это както громоздко

Отредактировано Penumbra (2016-12-13 19:09:40)

0

2

Да, что-то вы нагромоздили. ;)
Обычно принцип такой (в хелпе кстати говоря всё есть):

Код:
Dim Txt As String * 254
Dim Txt0 As Byte At Txt + 0 Overlay
Dim Txt1 As Word At Txt + 1 Overlay

И т.д., тут главное не запутаться в счёте размерности переменных.

0

3

Код:
dim строка_str as string * 20
dim строка_byte(20) as byte at строка_str overlay

Заполняя строку, сразу получаете байтовые значения, не недо ничего делать

http://sh.uploads.ru/t/ZGTgw.jpg

Отредактировано sasha_1973 (2016-12-13 19:39:22)

0

4

О! спасибо! я просто не думал что overlay будет работать со строкой

0


Вы здесь » Программирование ATMEL в BASCOM. » FAQ по Bascom AVR и МК » преобразовать строку в байтовый массив