Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 25, 2017 14:37:29

Kasta_neda
Зарегистрирован: 2014-06-08
Сообщения: 210
Репутация: +  6  -
Профиль   Отправить e-mail  

Нужна помощь, переписать на С++

Есть код взаимодействия с железкой на порту, на python написал, пока тестирую, но потом предстоит залить скетч в ардуино, там только на сях, в С++ не силен.
Железка купюроприемник, протокол CCNET, особо в протокол не лез, только по минимуму команды.
Если кому не сложно, был бы очень признателен.

 import serial
import time
#serialPort = serial.Serial('\\\\.\\COM12',  9600)
def getCRC16(data, is_hex=True):
    if is_hex:
        data = bytearray.fromhex(data)
    else:
        data = bytearray(data)
    CRC = 0
    for byte in data:
        CRC ^= byte
        for j in range(0, 8):
            if (CRC & 0x0001):
                CRC >>= 1
                CRC ^= 0x8408
            else:
                CRC >>= 1
    CRC = format(CRC, '02x')
    return CRC[2:4] + CRC[0:2]
    
cmd = ('02030630', '02030633',  '02030633', '02030633', '02030633', '02030633', '02030633', '02030633', '02030633', '02030633', '02030633', '02030633', '02030637','02030641', '02030C34FFFFFFFFFFFF', '02030633', '02030600', '02030633', '02030600', '02030633')
one = '02030600'
two = '02030633'
with serial.Serial('COM12', 9600, timeout=0.001) as ser:
    for i in cmd:
        print i
        time.sleep(.03)
        ser.write((i + getCRC16(i)).decode('hex'))
    while True:
       
        ser.write((one + getCRC16(one)).decode('hex'))
        time.sleep(.03)
        ser.write((two + getCRC16(two)).decode('hex'))
        line1 = ser.read(4)
        line2 = ser.read(5)
        #print line1.encode('hex')
        #print line2.encode('hex')
        
        patern = "02030780"
        if line1.encode('hex') == patern:
            time.sleep(.03)
            ser.write(('02030635' + getCRC16('02030635')).decode('hex'))
            print 'opredelil'
            print line2.encode('hex')
            if line2.encode('hex') == "04a875":
                ser.write(('02030600' + getCRC16('02030635')).decode('hex'))
                print '100rub'
            elif line2.encode('hex') == "031701":
                ser.write(('02030600' + getCRC16('02030635')).decode('hex'))
                print '50rub'              

Офлайн

#2 Ноя. 25, 2017 22:44:58

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Нужна помощь, переписать на С++

Один из вариантов: посмотрите на Nuitko
Другой вариант - у вас не так много кода , к тому же не специфичного, вы сможете осилить основы С и переписать самостоятельно
Третий вариант - раз это бизнес задача (на хобби купюрниками ну не занимаются), а вы как исполнитель , ну скажем аккуратно, не очень - то наймите того кто сможет написать код по ТЗ на С. Имея код на питоне вы самостоятельно сможете оформить ТЗ.
P.S. Ну знаете ли, попытка решить вашу задачу как предложили вы выглядит забавно. Типа вам платят деньги за решение задачи, а фактически вы просите нас за бесплатно ее решить. Вполне возможно что найдутся люди готовые сделать это за бесплатно, но чаще нет.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Ноя. 25, 2017 23:14:52

Kasta_neda
Зарегистрирован: 2014-06-08
Сообщения: 210
Репутация: +  6  -
Профиль   Отправить e-mail  

Нужна помощь, переписать на С++

JOHN_16
Третий вариант - раз это бизнес задача (на хобби купюрниками ну не занимаются), а вы как исполнитель , ну скажем аккуратно, не очень - то наймите того кто сможет написать код по ТЗ на С. Имея код на питоне вы самостоятельно сможете оформить ТЗ. P.S. Ну знаете ли, попытка решить вашу задачу как предложили вы выглядит забавно. Типа вам платят деньги за решение задачи, а фактически вы просите нас за бесплатно ее решить. Вполне возможно что найдутся люди готовые сделать это за бесплатно, но чаще нет.
Это , скажу честно, не ТЗ, имею купюрник, имею raspbery pi и arduino, на распбери давно написал код на питоне все работает, но купюрник все равно валяется, теперь хочу на ардуино прикрутить, с С++ туго но напишу…. пусть не сразу.
Я и не думал что кинуться помогать. Меркантильность нынче в моде.
Прекрасно знаю этот форум и людей на нем. Поэтому и написал. Есть еще люди.
Спасибо за советы.

Офлайн

#4 Ноя. 25, 2017 23:15:02

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2679
Репутация: +  182  -
Профиль   Отправить e-mail  

Нужна помощь, переписать на С++

Четвёртый вариант - Присмотреться к MicroPython.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#5 Ноя. 25, 2017 23:40:35

Kasta_neda
Зарегистрирован: 2014-06-08
Сообщения: 210
Репутация: +  6  -
Профиль   Отправить e-mail  

Нужна помощь, переписать на С++

Rodegast
Четвёртый вариант - Присмотреться к MicroPython.
Вроде не портировали на ардуино, но в самом МК я уже заинтересовался. Спасибо за наводку.

Офлайн

#6 Ноя. 26, 2017 10:15:18

vic57
Зарегистрирован: 2015-07-07
Сообщения: 893
Репутация: +  126  -
Профиль   Отправить e-mail  

Нужна помощь, переписать на С++

Офлайн

#7 Ноя. 26, 2017 12:15:58

Kasta_neda
Зарегистрирован: 2014-06-08
Сообщения: 210
Репутация: +  6  -
Профиль   Отправить e-mail  

Нужна помощь, переписать на С++

vic57
инфы в сети кучаhttps://yandex.ru/search/?text=arduino%20ccnet&clid=1955453&win=252&lr=47
Эту инфу я уже перелопатил 100 раз, обрывки собрал, использую. Там либо автор обрывки выложил либо автор говорит о pulse. Я уже заливаю код на ардуину, шлю команды в том виде какой и нужен, но почему то ответа пока нет, хотя такие же команды с компа вышеуказанным скриптом отсылаю и работает.

Офлайн

#8 Ноя. 26, 2017 13:37:27

Kasta_neda
Зарегистрирован: 2014-06-08
Сообщения: 210
Репутация: +  6  -
Профиль   Отправить e-mail  

Нужна помощь, переписать на С++

Разобрался вроде, команды понимает, теперь логику дорабатываю.

Офлайн

#9 Ноя. 26, 2017 16:14:59

Kasta_neda
Зарегистрирован: 2014-06-08
Сообщения: 210
Репутация: +  6  -
Профиль   Отправить e-mail  

Нужна помощь, переписать на С++

P.S. Купюрники, картридеры, сканеры, депозиторы и диспенсеры, банкоматы и терминалы лежат на складе, работа у меня с ними связанна, а когда есть время то занимаюсь маленько программированием и железками для души.

Офлайн

#10 Ноя. 27, 2017 10:00:10

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2679
Репутация: +  182  -
Профиль   Отправить e-mail  

Нужна помощь, переписать на С++

> Вроде не портировали на ардуино

Но это смотря на какой https://create.arduino.cc/projecthub/AdiK/arduino-due-micropython-enabled-717dd9 А вообще откуда взялась привязка к arduino? По мне так Raspberry Pi более интересная плата.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version