Железка купюроприемник, протокол 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'