Visual Basic???

  • к сожалению не нашёл на форуме раздел дляа программистов, по этому пишу вопрос здесь.


    Мне нужно произвести CRC-проверку длыа управлениыа кассовым аппаратом но информации очень мало. Нашёл только готовую програмку на VB, а сам в нём не бум-бум, мне нужно это в другом язике реализовать.
    Может, кто знает, и может разместить в этом фaiле
    Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.
    раз'яснения и коментировать команды.


    Заранее спасибо
    gennadi@vaisman.de

  • Язык думаю для почти всех малоизвестен, называется MUMPS,
    Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу. но на нём сидят 90% мебельных, аптеки, парфюмерии больницы и архивы, - вообщем работа с базами данных, правда уже отмирает потихоньку из-за чёрно-белых терминалов или емул.программ. Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.
    И системы (маркт) разрывают сейчас оракл, САП или Каше...

  • For i = 0 To 255
    CRC = i
    For j = 1 To 8
    If (CRC And 1) = 1 Then
    CRC = Fix(CRC / 2) Xor 33800
    Else
    CRC = Fix(CRC / 2)
    End If
    Next j
    CRCT(i) = CRC
    Next i


    кароче тут смысыл такой.
    заполнить переменную СРСТ
    две шлайфы.
    CRC = Fix(CRC / 2) Xor 33800


    Fix убирает всё что после запитой
    Xor выбор по байтам тоесть если справо больше то
    берет правыю часть если с лева то берёт 3380
    ну и закидывает это в СРСТ.


    ну далше смысыл такойже. только еше используется
    длина данных. Не понятно правдо откуда они берутся.
    (Daten$)

  • XOR это побитовое исключающее ИЛИ
    ели бы было XOR 0 или XOR 65535 то получлся бы инверт от целочисленного деления на 2

  • я читаю с serialport RS232 из кассового аппарата, и оно (значение) может быть например "20AFBCAE...9578", конечно в hex. A Daten$ - мой ответ например Daten$="426574726167203930303020455552" (это "Betrag 9000 EUR") - hex42-B,hex65-e...и т.д. и кассовый аппарат понимает его, ответ, только с правильно высчитанным CRC.

  • Der Operator Xor führt sowohl als logischer als auch als bitweiser Operator einenbitweisen Vergleich zweierAusdrücke durch und verwendet dabei die Exklusives-ODER-Logik, um das Ergebnis, wie in der folgenden Tabelle dargestellt, zu bestimmen:


    Bit in Ausdruck1 Bit in Ausdruck2 Ergebnis
    0 0 0
    0 1 1
    1 0 1
    1 1 0

  • блин типа я не в курсе...
    а это чего значит? цитирую: 8o
    Xor выбор по байтам тоесть если справо больше то
    берет правыю часть если с лева то берёт 3380

  • Цитата

    По словам пользователя Eduard-X ...
    блин типа я не в курсе...
    а это чего значит? цитирую: 8o
    Xor выбор по байтам тоесть если справо больше то
    берет правыю часть если с лева то берёт 3380



    Ну ты кадр. Тебе та это зачем??? а значит это то что.
    CRC = Fix(CRC / 2) Xor 33800
    CRC = Fix(5000 / 2) Xor 33800
    CRC = 2500 Xor 33800
    тоесть в данном случий
    CRC = 33800


    а так
    CRC = Fix(CRC / 2) Xor 33800
    CRC = Fix(9000 / 2) Xor 33800
    CRC = 4500 Xor 33800
    CRC = 4500


    Если тебе это нафиг не надо х.и лезиш?

  • грмотей, научись поначалу без ошибок писать и изъясняться.
    а уж потом задавай вопросы, в которых ты допускаешь в одном слове три ошибки, просек?
    пыхти дальшее, смотри на проблему ширшее и ходи ходьмя или бегьмя

  • Eduard - X никогда не признается, что он -мудр. Eduard - X никогда не поймет, что он - глуп. Eduard - X понимает, что путь к мудрости бесконечен, а Eduard - Y считает себя мудрейшим.


    Твой слова да богу в уши. Открой тему как выучить русский язык. И давай там уроки где проблема? Я тоже зайду подучить.

  • чё, подпись глаз колет? бывает... вот у bux тоже такой приступ был. Бывает. Порой.
    ты только представь, если GennyV777 начнёт неправильные формулировки или недосказанности в описание своего решения этого задания всандаливать.
    хотя можешь и дальше распальцовкой чиста заниматься. чиста по-пацански.

  • Так вот и давай по теме писать.
    При чём тут русский язык.
    Граматика здесь не кчему.

  • вот конструктивный диалог мне больше нравиться. замечания. про XOR с примером очень наглядным можешь почитать здесь:
    Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.


    есть два вида этого оператора:
    - побитовый
    - условный
    в первом побитно ксорятся две переменных/костанты и не больше того
    во втором ксорятся два условия, например:
    If ((X > 10) Xor (Y > 10)) Then
    ...
    End If
    то есть первое условие (X > 10 = true/false) ксорится со вторым (Y > 10 = true/false) по данной тобой таблице. в вышеприведённом же коде с CRC имеет место быть работа с переменными и константами (а не с условиями!!!), а значит и побитовое ксорирование этих величин.


    что имеем?


    CRC = 2500 xor 33800
    CRC в этом случае будет 36300


    если не веришь, можешь вызвать calc.exe у себя на виндах, врубить его в научный модус и порверить сей факт.


    кроме того, CRCT является массивом, а не переменной! первый участок кода есть создание таблицы из 256 элементов для последующего вычисления CRC. а само вычисление CRC проводится во второй части программы, на основе данных, которые записаны в строке Daten$


    CRC = 0
    For i = 1 To Len(Daten$)
    HB = Fix(CRC / 256)
    LB = CRC - (256 * HB)
    CRC = CRCT(LB Xor Asc(Mid$(Daten$, i, 1))) Xor HB
    Next i
    HB = Fix(CRC / 256) ' CRC-High-Byte
    LB = CRC - (256 * HB) ' CRC-Low-Byte


    Только вот на все эти "факты на лицо" гражданину wlpnfast сказать уже нечего будет.


    Тут уж как говорит Задорнов: "Не говори "гоп", пока не увидишь, во что вляпался..."


    ну а русский язык... порой количество ошибок (тем более намеренных) говорит о показателе уважения к собеседникам.

  • Всем большое спасибо. Я нашёл функцыю, которая расчитывает разные CRC, правда с ней ещё надо поработать... Вот виды CRC, которые она делает:


    Type Checksum
    0 Exclusive OR
    1 ASCII summation
    5 16-bit CRC (DTM-compatible)
    6 16-bit CRC (DSM-compatible)
    7 XOR the internal byte-stream
    32 32-bit CRC
    в моём случае нужен тип "5"
    А EC/Kredit аппарат, который я должен "обуздать" ;) , общается на этом языке с кассой: Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.
    Ещё раз всем спасибо.