В чем ошибка?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
vrodo
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 09.10.2003 (Чт) 18:45
Откуда: Дубна МО, Москва

В чем ошибка?

Сообщение vrodo » 29.01.2004 (Чт) 11:23

Код: Выделить всё
Public Function CRC16(DataArray() As Byte, Optional wInitCRC As Long = 0) As Long
Dim crc As Integer, j As Byte, size As Integer, i As Long
crc = wInitCRC
For i = 0 To DataArray(1) - 3
    crc = crc Xor PDL((DataArray(i)), 8)
    For j = 0 To 7
        If crc And &H8000 Then
            crc = PDL(crc, 1) Xor &H1021
        Else
            crc = PDL(crc, 1)
        End If
    Next j
Next i
CRC16 = crc
End Function


в строчке
Код: Выделить всё
For i = 0 To DataArray(1) - 3
немогу понять что такое DataArray(1) он как правило равен "0" и вся функция не выполняется и вообще почему &H8000 и &H1021 могут ли быть другие числа?
DataArray = "[string]"
PDL это функция сдвига (если надо могу тоже прислать)
Последний раз редактировалось vrodo 29.01.2004 (Чт) 18:12, всего редактировалось 1 раз.
Чтобы понять свои ошибки их достаточно написать (c)
Интернет большой, ему видней
С наилучшими Пожеланиями и Всех Благ :D

Vasya
Обычный пользователь
Обычный пользователь
 
Сообщения: 69
Зарегистрирован: 23.04.2002 (Вт) 16:49
Откуда: Togo

Re: В чем ошибка?

Сообщение Vasya » 29.01.2004 (Чт) 14:44

vrodo писал(а):[DataArray = "[string]"

Ну какой же это string, если в заголовке функции написано - Byte??

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 29.01.2004 (Чт) 14:52

DataArray(1) это первый элемент массива DataArray.

А почему &H8000 и &H1021 это надо спросить у авторов алгоритма.



ЗЫ: раскопал-таки что то по CRC UART? ;)

vrodo
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 09.10.2003 (Чт) 18:45
Откуда: Дубна МО, Москва

Сообщение vrodo » 29.01.2004 (Чт) 17:35

2Vasia

попробуй сделать
Код: Выделить всё
dim Bytearr() as byte
dim strText as string
strText = "abcdefg"
Bytearr = strText

а уж тогда и рассказывай про типы данных :lol:

2ОЛЛ
Объясните мне на пальцах алгоритм расчета плз
со сдвигом я вроде разобрался а вот сам алгоритм от меня ускользает :evil:
ну зациклило меня :roll:
Чтобы понять свои ошибки их достаточно написать (c)
Интернет большой, ему видней
С наилучшими Пожеланиями и Всех Благ :D

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 29.01.2004 (Чт) 18:49

вот тут про алгоритмы можно почитать: http://algolist.manual.ru/
а еще... вот что выдал Яndex
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

XPraptor
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 02.12.2003 (Вт) 18:13
Откуда: Minsk

Сообщение XPraptor » 29.01.2004 (Чт) 19:04

Тут у тебя алгоритм проверки контрольной суммы.
For i = 0 To DataArray(1) - 3 скорее всего должна быть записана как:
For i = 0 To Len(DataArray(1)) - 3 или вообще как For i = 0 To Len(DataArray()) - 3
и потом идет проверка каждого символа на предмет соответствия.
При встрече символа &H8000 алгоритм сдвига должен завершиься позицией &H1021 (скорее всего переход на начальный адрес строки)
во всех остальных случаях сдвигается на единицу вправо.
Если руки кривые, то не надо ругать разработчиков.

vrodo
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 09.10.2003 (Чт) 18:45
Откуда: Дубна МО, Москва

Сообщение vrodo » 29.01.2004 (Чт) 20:53

а попроще никак нельзя?
или
как это сделать через таблицы?
скиньте код плиз
в инете ссылок много но нужного не нашел
Чтобы понять свои ошибки их достаточно написать (c)
Интернет большой, ему видней
С наилучшими Пожеланиями и Всех Благ :D


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot и гости: 13

    TopList