Найти - Пользователи
Полная версия: Нужна помощь, переписать на С++
Начало » Флейм » Нужна помощь, переписать на С++
1 2
Kasta_neda
Есть код взаимодействия с железкой на порту, на 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'              
JOHN_16
Один из вариантов: посмотрите на Nuitko
Другой вариант - у вас не так много кода , к тому же не специфичного, вы сможете осилить основы С и переписать самостоятельно
Третий вариант - раз это бизнес задача (на хобби купюрниками ну не занимаются), а вы как исполнитель , ну скажем аккуратно, не очень - то наймите того кто сможет написать код по ТЗ на С. Имея код на питоне вы самостоятельно сможете оформить ТЗ.
P.S. Ну знаете ли, попытка решить вашу задачу как предложили вы выглядит забавно. Типа вам платят деньги за решение задачи, а фактически вы просите нас за бесплатно ее решить. Вполне возможно что найдутся люди готовые сделать это за бесплатно, но чаще нет.
Kasta_neda
JOHN_16
Третий вариант - раз это бизнес задача (на хобби купюрниками ну не занимаются), а вы как исполнитель , ну скажем аккуратно, не очень - то наймите того кто сможет написать код по ТЗ на С. Имея код на питоне вы самостоятельно сможете оформить ТЗ. P.S. Ну знаете ли, попытка решить вашу задачу как предложили вы выглядит забавно. Типа вам платят деньги за решение задачи, а фактически вы просите нас за бесплатно ее решить. Вполне возможно что найдутся люди готовые сделать это за бесплатно, но чаще нет.
Это , скажу честно, не ТЗ, имею купюрник, имею raspbery pi и arduino, на распбери давно написал код на питоне все работает, но купюрник все равно валяется, теперь хочу на ардуино прикрутить, с С++ туго но напишу…. пусть не сразу.
Я и не думал что кинуться помогать. Меркантильность нынче в моде.
Прекрасно знаю этот форум и людей на нем. Поэтому и написал. Есть еще люди.
Спасибо за советы.
Rodegast
Четвёртый вариант - Присмотреться к MicroPython.
Kasta_neda
Rodegast
Четвёртый вариант - Присмотреться к MicroPython.
Вроде не портировали на ардуино, но в самом МК я уже заинтересовался. Спасибо за наводку.
vic57
инфы в сети куча
https://yandex.ru/search/?text=arduino%20ccnet&clid=1955453&win=252&lr=47
Kasta_neda
vic57
инфы в сети кучаhttps://yandex.ru/search/?text=arduino%20ccnet&clid=1955453&win=252&lr=47
Эту инфу я уже перелопатил 100 раз, обрывки собрал, использую. Там либо автор обрывки выложил либо автор говорит о pulse. Я уже заливаю код на ардуину, шлю команды в том виде какой и нужен, но почему то ответа пока нет, хотя такие же команды с компа вышеуказанным скриптом отсылаю и работает.
Kasta_neda
Разобрался вроде, команды понимает, теперь логику дорабатываю.
Kasta_neda
P.S. Купюрники, картридеры, сканеры, депозиторы и диспенсеры, банкоматы и терминалы лежат на складе, работа у меня с ними связанна, а когда есть время то занимаюсь маленько программированием и железками для души.
Rodegast
> Вроде не портировали на ардуино

Но это смотря на какой https://create.arduino.cc/projecthub/AdiK/arduino-due-micropython-enabled-717dd9 А вообще откуда взялась привязка к arduino? По мне так Raspberry Pi более интересная плата.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB