Rövid bevezetés
A hőnyomtatók nagyon elterjedtek mindennapi életünkben, és vannak példák a hőnyomtatókra éttermekben, parkolókban és bevásárlásokban. Ez a cikk a hőnyomtatók parkolási rendszerekben történő alkalmazására összpontosít.
Felhasználandó anyagok
- STONE STWI101WT-01
- FTP termikus nyomtatófej
- Raspberry Pi pico
- Érmével működő gép
- Ennek a nyomtatófejnek nemzetközileg is elérhetőnek kell lennie, az alapelvek hasonlóak. A bal oldalon egy léptetőmotor található. Ekkor a középső fej 6 fűtőegység. Mindegyik fűtőegységen 64 fűtőpont található. Összesen tehát 384 hőpont. Aztán lent van egy retesz. A retesz alatt egy eltolási regiszter található. Végül egy órajelet kell biztosítani. Tehát a teljes működési elv az, hogy órajelet adunk a nyomtatófejnek, majd minden óraperiódusban küldünk egy adatot, 384 órajel és 384 adat elküldése után a váltóregiszterben lévő adatok a reteszben kerülnek tárolásra. Ezután a reteszt alacsony szintre állítják. Ezután a 384 fűtőpont választja, hogy fűt-e vagy sem, attól függően, hogy az egyes adatok 0 vagy 1. Ezzel egyidejűleg hagyja a léptetőmotort forogni, hogy a hőpapírt meghajtsa a kívánt karakter kialakításához. Miután megkaptam a hőnyomatot. fej, előre mentem és kértem egy adatlapot, és egy 30 tűs fpc kábel volt. Így nyilván nem túl kényelmes vele közvetlenül a pico-hoz csatlakozni. Ezért úgy gondoltam, jobb, ha tervezek egy hátlapi áramkört.Van egy STONE soros képernyő 12V-os táp, és akkor nézem a hőnyomtatófej nyomtatófej-nyomtatási feszültségét egy referencia értéknél 7.6v, a maximum értéke 8V, akkor kb 7.6V-os feszültséget biztosítunk. Logikai feszültsége is 3.3V, majd a Raspberry Pi pico maximálisan támogatja az 5V-os tápegységet és 3.3V-os kimeneti feszültsége van, akkor a tápegység kialakítása két dcdc-t használhat, 12V-os tápegységgel, egy dcdc kimenettel 7.6V a termikus nyomtatófej táplálásához a másik dcdc kimenet 5 V-ot a pico-hoz, majd használja a pico 3.3 V-át a termikus nyomtatófej logikai feszültségének táplálására. Ezután a 12 V közvetlenül a soros képernyőhöz vezet.
- Egyébként a hőnyomtatófej léptetőmotorját is meg kell hajtani. Van egy beépített Darlington csőintegrátorom. De túl nagy, és egyenes beépülő modul, úgyhogy csak vegyél egy illesztőprogram chipet. Akkor a hajtómotornak ez a szempontja is rendben van. A nyomtatáshoz font tervezésre van szükség, alapvetően mindenki spi flash-t használ betűkészlet tárolására, ami egy hatalmas projekt. Csak az ascii kód több mint 100, ezért kell venni egy másik SPF vakut. Akkor az egész tervezés nagyjából ilyen.
STONE Designer (GUI Designer szoftver)Tól től:https://www.stoneitech.com/support/download/software - Tervezze meg az áramkörtAztán a következők kezdték el tervezni az áramkört. Először keresse meg a tápegységet, sőt, az elején háromkapu feszültségszabályozót használtam, mert egyszerű az áramkör, elkészítése után a fűtési helyzet komolyabb volt hibakereséskor, nagyon meleg tapintású, ezért váltok használatra dcdc. Csak kövesse közvetlenül a chip adatlapját az áramköri diagram elkészítéséhez. Itt az mt2492-t választottam, de figyelmen kívül hagytam egy fontos paramétert a nyomtatófej üzemi árama, ennek a chipnek a maximális kimeneti árama 2A, de a nyomtatófej üzemi árama 2.3A, különbség 0.3A, ez is használható, de a hatásfok nem olyan magas, a konkrét hatásról később lesz szó.
- Aztán a motorvezérlő chip, amit vettem, az lv8548, lásd a nyomtatófej adatlapját, amiben van egy léptetőmotoros hajtás időzítési diagramja, az időzítésének megfelelően, hogy négyirányú pwm jelet biztosítson rajta.
- Aztán jön a flash chip, by25q32bs-sel, 32Mbit-es kapacitása elég nagy, és a pico-hoz csatlakozik, várja, hogy a pico hívja.
- Ezek után a teljes kapcsolási rajz így néz ki, a bal felső sarokban a kommunikációs aljzat és a tápcsatlakozó, alatta a berregő (valójában nem használt az áramkörben), a jobb oldalon egy fénykibocsátó dióda, ill. a jobb alsó sarokban egy 30 tűs fpc található a nyomtatófej csatlakoztatásához.
- Miután elkészült, és az alábbiak szerint használható, a táblán hagyva a Raspberry Pi pico számára egy tűfejes aljzatot, közvetlenül csatlakoztathatja.
A Raspberry Pi pico - Kapcsolja be a tápot, először ne csatlakoztassa a pico és nyomtatófejet, mérje meg a dcdc kimeneti feszültségét, normál esetben az egyik kb 7.5 V, a másik kb 5 V.
- Utána csatlakoztasd a nyomtatófejet, soros képernyőt és picot, mérd meg a logikai feszültséget kb 3.3v, gond nélkül írhatod a programot.
ProgramElőször a léptetőmotort szándékozom beállítani, ez a rész könnyen állítható, nézd meg az adatlapon lévő időzítési diagramot, 8 óra periódus, minden órajel periódus külön adjon logikai jelet a motor négy érintkezőjének, 8 periódus után a motor tekerje fel, majd állítsa be a sebességet, de a közepén késleltetést kell hozzáadni a terhelhetőség beállításához, különben túl gyorsan forog, az általam beállított késleltetési idő kb 5 ms, majd miután hagyta fordulni, meg kell adnia a szintet alacsony, különben a motor nem forog, sőt a belső tekercs még mindig áram alatt van, hosszú idő után érezni az égett szagot. Majd írd be a függvényt, tedd hurokba a testet, a ciklusok száma reprezentálja a A motor forgási hossza, a funkció kissé hosszúnak tűnik, tedd máshová egyedül, és várd a hívást. - Ez a funkció néhány változtatás után, a sebesség és az időtartam a főprogramban kerül átvitelre. Sok optimalizálást igényel még.Akkor a nyomtatófej beállításának a lényege, ez a rész nekem nehéz, órajel kell hozzá, az adatlap maximum 8M-ban van írva, azt hittem kb 8M jel kell hozzá frekvencia, nehéz, először io flip level-el mértem a frekvenciát, túl nagy a különbség. Aztán szeretném használni a pio-t, és egy egész napot kutattam, de az eredmény nem jó, a személyes képességeim korlátozottak, valószínűleg alaposan át kell tanulmányoznom az rp2040 chip kézikönyvét. Ezután fordítsa meg a 384-es szintet, hogy megpróbálja, ez egy ehhez hasonló munkafolyamat, inicializálja az adatbevitelt 1 tű, retesz 1 tű, órajel 1 érintkező, 6 nyomtatóegység érintkező, majd a retesz mellett az összes többi húzza alacsonyra , majd küldjön egy adatot egy órajel perióduson belül, ciklus után 384 alkalommal, hogy a reteszt 0-ra állítsa, a 6 nyomtatóegységet 1-re állítsa, majd melyik ponton vannak adatok, hogy melyik pont melegszik. A készlet megvalósítása után húzd vissza a szintet. Aztán a program megírása és a tesztelés megkezdése után tényleg nem működött, igazából mert túl sok nyomtatási egység volt vezérelve, de az áram nem volt elég, majd változtasd meg, hogy kevesebbet adjon két magas szintű nyomtatóegységet, és tesztelje újra.
- Tényleg működik! Vízszintes vonalat nyomtatott. Ez azt jelenti, hogy az órajel frekvenciájának nincs alsó határa, akkor a léptetőmotort futtatva függőleges vonalat nyomtathat. pico kétszálas, majd hagyja, hogy a másik szál szinkronban futtassa a motort, majd írja meg a programot és futtassa. Kijön a függőleges vonal.
- A vízszintes és függőleges vonalakkal, majd kapjon egy átlós vonalat, figyeljen arra, hogy egy nyomtatási egységnek 64 pontja van, amely meghatározza a hosszt, például 32, majd ciklus 32-szer 384 periódusban, minden periódusban csak az első 64 adatot állítsa 1-re. és állítsa be a következő 320 adatot 0-ra, majd minden alkalommal 32-szer csak az első egységben egy pont kinyomtatásához, majd növekményes ciklushoz, kombinálva a léptetőmotor sebességével a beállításhoz, és végül ki kell igazítani a 64 * 32-es átlós vonalat, először ki is írhat egy Z betűt.
- Ekkor ott van a program körvonala, ha ki akarjuk nyomtatni a szót, először meg kell csinálni a betűtípust. Először készítsen egy nagybetűt A, 32 * 32 méretben, a definíciók listájával, amit itt tervezek a pin.value () segítségével, tehát készítse el a betűtípust, majd használjon 32 sort és 32 oszlopot a hívandó bináris értékekből, vegye ki, hogy eltolást hajtson végre, majd adja át a pin.value (), tehát ez a megvalósítás folyamata.
- Ha a 0 a háttér és az 1 az előtér, akkor a tényleges megvalósítási folyamat így néz ki.
- A legkülső 32-es nagy ciklus a 32 sorból álló ciklust reprezentálja, vagyis 32 sort nyomtat, majd az első 32 ciklus belül az első fűtőegység felét melegíti, majd a maradék 352 periódus 0-ra lesz állítva, és majd mínusz 1 31-től minden alkalommal 0-ig, megszámolhatja a fűtendő pontok első sorát balról jobbra, majd 384 periódusonként, amelyet be kell fejezni, ha a reteszt 0-ra és a fűtőegység készletet 1-re állítja, majd kinyomtathatja, majd egy A szót ismét 32 ismétlés után.
- Még mindig félkövér, ez a fajta pontmátrix szó, vannak online eszközök közvetlenül is megtehető, az elülső plusz 0b, majd vesszővel a hátoldalon, majd játszunk a saját elképzeléseink szerint, a betűtípust eredetileg úgy tervezték, hogy tárolt a flash chip, de igazítani sokáig még mindig nem lehet kinyitni.
- Nem tudom hol a probléma, ha lesz időm újra beállítom, az a jó, hogy magában a picoban van 16mbit méretű flash, tárolni egy ascii könyvtárat még elég, akkor annyira raktáros vagyok.
- Határozza meg szótárral, tegye külön darabba, és hívja vissza a főprogramban. Then after debugging, the available version looks like this.from machine import Pinfrom time import sleepimport _threadimport rp2from array import arrayimport ascii_kuimport speed_motor#import sysdelaytime = 0.0000001 # Printer clock delaymotor = speed_motor.motor_control(2, 3, 4, 5) # Initialize the printer’s internal stepper motor pins, corresponding to the a+/a-/b+/b- of the stepper motormov_bit = 0PRINTER_DIN = Pin(20, Pin.OUT)PRINTER_CLK = Pin(19, Pin.OUT)PRINTER_LAT = Pin(18, Pin.OUT, Pin.PULL_UP)STB1 = Pin(6, Pin.OUT, Pin.PULL_DOWN)STB2 = Pin(7, Pin.OUT, Pin.PULL_DOWN)STB3 = Pin(8, Pin.OUT, Pin.PULL_DOWN)STB4 = Pin(9, Pin.OUT, Pin.PULL_DOWN)STB5 = Pin(14, Pin.OUT, Pin.PULL_DOWN)STB6 = Pin(15, Pin.OUT, Pin.PULL_DOWN)lock = _thread.allocate_lock()ascii_code = ascii_ku.ascii_code() # Importing an ascii character libraryshuru = input(“Please enter text:”)line_word = []for item in range(len(shuru)): line_word.append(shuru[item])# line_num = len(shuru)# bottom_line_num = len(shuru)%# global motor_speed = 0# global line = 0# if len(shuru) > 12:# motor_speed = len(shuru) % 6# if (len(shuru) % 6) == 0:# motor_speed = 12# else:# motor_speed = len(shuru)# print(motor_speed)motor_speed = len(shuru)line = (len(shuru) // 12) + 1if (len(shuru) % 12) == 0: line -= 1lins = 0supper = 0slower = 0# _thread.start_new_thread(motor.run_stop, (0.005*motor_speed, 26*line))_thread.start_new_thread(motor.run_stop, (motor_speed, 1))# _thread.start_new_thread(motor.run_stop, (0.03, 56))def last_word_size32 (word_line, linss, lins, supper, slower): for mov_bit in range((supper*32)+(slower*24)): PRINTER_CLK.value(0) sleep(delaytime) PRINTER_DIN.value(0) PRINTER_CLK.value(1) sleep(delaytime) for mov_bit in range(31, -1, -1): word_bit = (word_line[linss] >> mov_bit)&0b00000000000000000000000000000001 PRINTER_CLK.value(0) sleep(delaytime) PRINTER_DIN.value(word_bit) PRINTER_CLK.value(1) sleep(delaytime) for mov_bit in range(352-((supper*32)+(slower*24))): PRINTER_CLK.value(0) sleep(delaytime) PRINTER_DIN.value(0) PRINTER_CLK.value(1) sleep(delaytime) if (supper*32)+(slower*24) < 192: PRINTER_LAT.value(0) STB1.value(1) STB2.value(1) STB3.value(1) sleep(0.005) STB1.value(0) STB2.value(0) STB3.value(0) PRINTER_LAT.value(1) else: PRINTER_LAT.value(0) STB4.value(1) STB5.value(1) STB6.value(1) sleep(0.005) STB4.value(0) STB5.value(0) STB6.value(0) PRINTER_LAT.value(1)def word_size24 (word_line, linss, lins, supper, slower): for mov_bit in range((supper*32)+(slower*24)): PRINTER_CLK.value(0) sleep(delaytime) PRINTER_DIN.value(0) PRINTER_CLK.value(1) sleep(delaytime) for mov_bit in range(23, -1, -1): word_bit = (word_line[linss] >> mov_bit)&0b000000000000000000000001 PRINTER_CLK.value(0) sleep(delaytime) PRINTER_DIN.value(word_bit) PRINTER_CLK.value(1) sleep(delaytime) for mov_bit in range(360-((supper*32)+(slower*24))): PRINTER_CLK.value(0) sleep(delaytime) PRINTER_DIN.value(0) PRINTER_CLK.value(1) sleep(delaytime) if (supper*32)+(slower*24) < 192: PRINTER_LAT.value(0) STB1.value(1) STB2.value(1) STB3.value(1) sleep(0.005) STB1.value(0) STB2.value(0) STB3.value(0) PRINTER_LAT.value(1) else: PRINTER_LAT.value(0) STB4.value(1) STB5.value(1) STB6.value(1) sleep(0.005) STB4.value(0) STB5.value(0) STB6.value(0) PRINTER_LAT.value(1)for linss in range(32): supper=slower=0 if linss < 32: for lins in range(len(line_word)):# if lins//12:# break if (line_word[lins].isupper() or line_word[lins].isdigit() or line_word[lins].isspace()): last_word_size32 (ascii_code.code.get(line_word[lins]), linss%32, lins%12, supper, slower) supper += 1 elif (line_word[lins].islower()): word_size24 (ascii_code.code.get(line_word[lins]), linss%32, lins%12, supper, slower) slower += 1 else: if linss == 32: sleep(5.8) for lins in range(motor_speed): if (line_word[lins].isupper()): last_word_size32 (ascii_code.code.get(line_word[12]), linss%32, lins%12, len(line_word))# elif:# _thread.start_new_thread(motor.run_stop, (motor_speed, line))# for linss in range(32):# for lins in range(len(line_word)):# if (line_word[lins].isupper()):# last_word_size32 (ascii_code.code.get(line_word[lins]), linss, lins, len(line_word))line_word.clear()I am separate control printing unit, because the current is not enough so like this, but in order to print clear, making my printing speed becomes particularly slow, the more words the slower, and then the lowercase letters is 24 * 32 dot matrix, that it is less print points to use, but can not give it to leave 32 heating points of space then the character spacing is large, so the capital letters and lowercase letters are separated, the numbers are still 32 * 32.
- Finally, the whole program is attached.from machine import UART,Pinfrom time import sleepimport _threadimport rp2from array import arrayimport ascii_kuimport speed_motorfrom os import uname#import sysuart1 = UART(0, baudrate = 115200, tx =Pin(0), rx = Pin(1))floor1 = [‘f’, ‘l’, ‘o’, ‘o’, ‘r’,’1′]floor2 = [‘f’, ‘l’, ‘o’, ‘o’, ‘r’,’2′]floor3 = [‘f’, ‘l’, ‘o’, ‘o’, ‘r’,’3′]button_cmd = [16,1]selector_cmd = [16,129]print(uname()[0])delaytime = 0.0000001 # Printer clock delaycoin = Pin(22, Pin.IN,Pin.PULL_UP)coin_num = 0motor = speed_motor.motor_control(2, 3, 4, 5) # Initialize the printer’s internal stepper motor pins, corresponding to the a+/a-/b+/b- of the stepper motormov_bit = 0PRINTER_DIN = Pin(20, Pin.OUT)PRINTER_CLK = Pin(19, Pin.OUT)PRINTER_LAT = Pin(18, Pin.OUT, Pin.PULL_UP)STB1 = Pin(6, Pin.OUT, Pin.PULL_DOWN)STB2 = Pin(7, Pin.OUT, Pin.PULL_DOWN)STB3 = Pin(8, Pin.OUT, Pin.PULL_DOWN)STB4 = Pin(9, Pin.OUT, Pin.PULL_DOWN)STB5 = Pin(14, Pin.OUT, Pin.PULL_DOWN)STB6 = Pin(15, Pin.OUT, Pin.PULL_DOWN)lock = _thread.allocate_lock()ascii_code = ascii_ku.ascii_code() # Importing an ascii character library# shuru = ‘aa’# line_word = []# for item in range(len(shuru)):# line_word.append(shuru[item])# line_num = len(shuru)# bottom_line_num = len(shuru)%# global motor_speed = 0# global line = 0# if len(shuru) > 6:# motor_speed = len(shuru) % 6# if (len(shuru) % 6) == 0:# motor_speed = 12# else:# motor_speed = len(shuru)# # print(motor_speed)# # line = (len(shuru) // 12) + 1# if (len(shuru) % 12) == 0:# line -= 1lins = 0supper = 0slower = 0danjia = 0# _thread.start_new_thread(motor.run_stop, (0.005*motor_speed, 26*line))# _thread.start_new_thread(motor.run_stop, (motor_speed, line))# _thread.start_new_thread(motor.run_stop, (0.03, 56))def pay(pay): global coin_num line_word = {‘line_word1’:[‘s’,’i’,’t’,’e’,’:’,’F’,’1′,’-‘,’0′],’line_word2’:[‘0′,’d’,’a’,’y’,’2′,’h’,’o’,’u’,’r’],’line_word3′:[‘t’,’o’,’t’,’a’,’l’,’:’,’4′,’.’,’0′],’line_word4′:[‘T’,’o’,’t’,’a’,’l’,’:’,’4′,’.’,’0′]} line_wors = {‘line_word1’:[‘U’,’n’,’i’,’t’,’:’,’2′,’.’,’0′,’0′],’line_word2′:[‘T’,’o’,’t’,’a’,’l’,’:’,’4′,’.’,’0′], ‘line_word3’:[‘U’,’n’,’i’,’t’,’:’,’2′,’.’,’0′,’0′],’line_word4′:[‘T’,’o’,’t’,’a’,’l’,’:’,’5′,’.’,’0′]}# line_word1 = [‘S’,’i’,’t’,’e’,’:’,’F’,’1′,’-‘,’0’]# line_word2 = [‘1′,’D’,’a’,’y’,’1′,’H’,’o’,’u’,’r’]# line_word3 = [‘U’,’n’,’i’,’t’,’:’,’2′,’.’,’0′,’0′]# line_word4 = [‘T’,’o’,’t’,’a’,’l’,’:’,’5′,’.’,’0′]# line_word1[8]=str(pay[0])# line_word2[0]=str(pay[1])# line_word2[4]=str(pay[2])# line_word4[6]=str(pay[3]) (line_word[‘line_word1’])[8]=str(pay[0])# (line_word[‘line_word2’])[0]=str(pay[1])# (line_word[‘line_word2’])[4]=str(pay[2])# (line_word[‘line_word4’])[6]=str(pay[3]) sleep(1) uart1.write(‘ST<{“cmd_code”:”set_value”,”type”:”image_value”,”widget”:”image_value4″,”value”:’+str(pay[3])+’}>ET’)# sleep(2)# print(line_word.get(‘line_word’+str(1))[0])# print(‘zfdszfz’,line_word)# sleep(2)# uart1.write(‘ST<{“cmd_code”:”set_text”,”type”:”edit”,”widget”:”message5″,”text”:”F1 – ‘+pay[0]+'”}>ET’)# uart1.sendbreak()# sleep(1)# uart1.write(‘ST<{“cmd_code”:”set_text”,”type”:”edit”,”widget”:”message6″,”text”:”‘+str(pay[1])+'”}>ET’)# uart1.sendbreak()# sleep(1)# # uart1.write(‘ST<{“cmd_code”:”set_text”,”type”:”edit”,”widget”:”message22″,”text”:”‘+str(pay[2])+'”}>ET’)# uart1.write(‘ST<{“cmd_code”:”set_text”,”type”:”edit”,”widget”:”message8″,”text”:”‘+str(pay[3])+'”}>ET’) while True: if coin.value()==0: coin_num += 1 print(“Number of coins deposited:”,coin_num) sleep(0.1) uart1.write(‘ST<{“cmd_code”:”set_value”,”type”:”image_value”,”widget”:”image_value2″,”value”:’+str(coin_num)+’}>ET’) if coin_num == pay[3]: uart1.write(‘ST<{“cmd_code”:”set_visible”,”type”:”widget”,”widget”:”image37″,”visible”:true}>ET’) if uart1.any()>1: rx2 = [] data_name2 = ” bin_data = uart1.read(40) uart1.sendbreak() rx1 = list(bin_data) for item in rx1: rx2.append(chr(item)) print(rx2) if rx1[3:5:1] == button_cmd: data_name_len = rx1[6] – 1 data_name = rx2[7:data_name_len+6:1] data_name2 = ”.join(data_name) print(data_name2) if data_name2 == ‘back’: break elif data_name2 == ‘print’ and coin_num == pay[3] and rx1[13] == 2: data_name2=” _thread.start_new_thread(motor.run_stop, (9, 4)) for iii in range(1,3): for linss in range(32): supper=slower=0 for lins in range(9):# temp_list=ascii_code.code.get((‘line_word’+str(iii))[lins])# print(temp_list,type(temp_list)) if (line_word.get(‘line_word’+str(iii))[lins]).islower(): word_size24 (ascii_code.code.get(line_word.get(‘line_word’+str(iii))[lins]), linss%32, lins%12, supper, slower) slower += 1 else: last_word_size32 (ascii_code.code.get(line_word.get(‘line_word’+str(iii))[lins]), linss%32, lins%12, supper, slower) supper += sleep(6)# for iii in range(1,2):# for linss in range(32):# supper=slower=0# for lins in range(9):# # temp_list=ascii_code.code.get((‘line_word’+str(iii))[lins])# # print(temp_list,type(temp_list))# if (line_wors.get(‘line_word’+str(iii))[lins]).islower():# word_size24 (ascii_code.code.get(line_wors.get(‘line_word’+str(iii))[lins]), linss%32, lins%12, supper, slower)# slower += 1# else:# last_word_size32 (ascii_code.code.get(line_wors.get(‘line_word’+str(iii))[lins]), linss%32, lins%12, supper, slower)# supper += 1# sleep(6)# for iii in range(1,2):# for linss in range(32):# supper=slower=0# for lins in range(9):# # temp_list=ascii_code.code.get((‘line_word’+str(iii))[lins])# # print(temp_list,type(temp_list))# if (line_wors.get(‘line_word’+str(iii))[lins]).islower():# word_size24 (ascii_code.code.get(line_wors.get(‘line_word’+str(iii))[lins]), linss%32, lins%12, supper, slower)# slower += 1# else:# last_word_size32 (ascii_code.code.get(line_wors.get(‘line_word’+str(iii))[lins]), linss%32, lins%12, supper, slower)# supper += 1def floor1def(): day_jia = 0 hour_jia = 0 day_flag = False hour_flag = False price_flag = False posltion = False zongjia = 0 pay1 = [0,0,0,0] print(“floor1 now”)# uart1.write(‘ST<{“cmd_code”:”set_text”,”type”:”edit”,”widget”:”message3″,”text”:”2.00$/H”}>ET’) uart1.sendbreak() while True: if uart1.any()>1: rx2 = [] data_name2 = ” bin_data = uart1.read(40) uart1.sendbreak() rx1 = list(bin_data) for item in rx1: rx2.append(chr(item)) print(rx2) if rx1[3:5:1] == button_cmd: data_name_len = rx1[6] – 1 data_name = rx2[7:data_name_len+6:1] data_name2 = ”.join(data_name) print(data_name2) if data_name2 == ‘back’: break elif data_name2 == ‘position’: posltion = True pay1[0]=rx2[15] write1(rx2[15]) elif data_name2 == ‘pay’ and posltion and price_flag: uart1.write(‘ST<{“cmd_code”:”open_win”,”type”:”window”,”widget”:”window7″}>ET’) pay(pay1)# if data_name2 == ‘pay’ and posltion = True and (day_flag or hour_flag):# posltion = True# uart1.write(‘ST<{“cmd_code”:”open_win”,”type”:”window”,”widget”:”window7″}>ET’) if rx1[3:5:1] == selector_cmd: data_name_len = rx1[6] – 4 data_name = rx2[7:data_name_len+7:1] data_name2 = ”.join(data_name) print(data_name2) if data_name2 == ‘time_day1’: pay1[1]=rx2[19] write2(ord(rx2[19])) day_jia = ord(rx2[19]) day_flag = True elif data_name2 == ‘time_hour1’: pay1[2]=rx2[20] write3(ord(rx2[20])) hour_jia = ord(rx2[20]) hour_flag = True if hour_flag or day_flag: price_flag = True zongjia = (day_jia*48) + (hour_jia*2) pay1[3]=zongjia print(str(zongjia)) uart1.write(‘ST<{“cmd_code”:”set_text”,”type”:”edit”,”widget”:”message4″,”text”:”‘+str(zongjia)+'”}>ET’) hour_flag = day_flag = Falsedef floor2def(): passdef floor3def(): passdef write1(num): #print(ss) for item in range(49,55): uart1.write(‘ST<{“cmd_code”:”set_image”,”type”:”image”,”widget”:”image1_’+chr(item)+'”,”image”:”nocar_bg”}>ET’) uart1.write(‘ST<{“cmd_code”:”set_image”,”type”:”image”,”widget”:”image1_’+num+'”,”image”:”selectedcar_bg2″}>ET’) uart1.write(‘ST<{“cmd_code”:”set_text”,”type”:”edit”,”widget”:”message1″,”text”:”F1 – ‘+num+'”}>ET’)def write2(num):# danjia = 1 uart1.write(‘ST<{“cmd_code”:”set_text”,”type”:”edit”,”widget”:”message2″,”text”:”‘+str(num)+'”}>ET’)# if danjia == 1:# uart1.write(‘ST<{“cmd_code”:”set_text”,”type”:”edit”,”widget”:”message3″,”text”:”2.00$/H”}>ET’)def write3(num):# danjia = 1 uart1.write(‘ST<{“cmd_code”:”set_text”,”type”:”edit”,”widget”:”message22″,”text”:”‘+str(num)+'”}>ET’)# if danjia == 1:# uart1.write(‘ST<{“cmd_code”:”set_text”,”type”:”edit”,”widget”:”message3″,”text”:”2.00$/H”}>ET’)def last_word_size32 (word_line, linss, lins, supper, slower): for mov_bit in range((supper*32)+(slower*24)): PRINTER_CLK.value(0) sleep(delaytime) PRINTER_DIN.value(0) PRINTER_CLK.value(1) sleep(delaytime) for mov_bit in range(31, -1, -1): word_bit = (word_line[linss] >> mov_bit)&0b00000000000000000000000000000001 PRINTER_CLK.value(0) sleep(delaytime) PRINTER_DIN.value(word_bit) PRINTER_CLK.value(1) sleep(delaytime) for mov_bit in range(352-((supper*32)+(slower*24))): PRINTER_CLK.value(0) sleep(delaytime) PRINTER_DIN.value(0) PRINTER_CLK.value(1) sleep(delaytime) if (supper*32)+(slower*24) < 192: PRINTER_LAT.value(0) STB1.value(1) STB2.value(1) STB3.value(1) STB4.value(1) sleep(0.005) STB1.value(0) STB2.value(0) STB3.value(0) STB4.value(0) PRINTER_LAT.value(1) else: PRINTER_LAT.value(0) STB4.value(1) STB5.value(1) STB6.value(1) sleep(0.005) STB4.value(0) STB5.value(0) STB6.value(0) PRINTER_LAT.value(1)# PRINTER_LAT.value(0)# STB1.value(1)# STB2.value(1)# STB3.value(1)# STB4.value(1)# STB5.value(1)# STB6.value(1)# sleep(0.005)# STB1.value(0)# STB2.value(0)# STB3.value(0)# STB4.value(0)# STB5.value(0)# STB6.value(0)# PRINTER_LAT.value(1) def word_size24 (word_line, linss, lins, supper, slower): for mov_bit in range((supper*32)+(slower*24)): PRINTER_CLK.value(0) sleep(delaytime) PRINTER_DIN.value(0) PRINTER_CLK.value(1) sleep(delaytime) for mov_bit in range(23, -1, -1): word_bit = (word_line[linss] >> mov_bit)&0b000000000000000000000001 PRINTER_CLK.value(0) sleep(delaytime) PRINTER_DIN.value(word_bit) PRINTER_CLK.value(1) sleep(delaytime) for mov_bit in range(360-((supper*32)+(slower*24))): PRINTER_CLK.value(0) sleep(delaytime) PRINTER_DIN.value(0) PRINTER_CLK.value(1) sleep(delaytime) if (supper*32)+(slower*24) < 192: PRINTER_LAT.value(0) STB1.value(1) STB2.value(1) STB3.value(1) sleep(0.005) STB1.value(0) STB2.value(0) STB3.value(0) PRINTER_LAT.value(1) else: PRINTER_LAT.value(0) STB4.value(1) STB5.value(1) STB6.value(1) sleep(0.005) STB4.value(0) STB5.value(0) STB6.value(0) PRINTER_LAT.value(1)# PRINTER_LAT.value(0)# STB1.value(1)# STB2.value(1)# STB3.value(1)# STB4.value(1)# STB5.value(1)# STB6.value(1)# sleep(0.005)# STB1.value(0)# STB2.value(0)# STB3.value(0)# STB4.value(0)# STB5.value(0)# STB6.value(0)# PRINTER_LAT.value(1)while True: if uart1.any()>1: rx2 = [] data_name2 = ” bin_data = uart1.read(40) uart1.sendbreak() rx1 = list(bin_data) for item in rx1: rx2.append(chr(item)) print(rx2) if rx2[7:13:1] == floor1: floor1def() elif rx2[7:13:1] == floor2: floor2def() elif rx2[7:13:1] == floor3: floor3def()for linss in range(32): supper=slower=0 if linss < 32: for lins in range(len(line_word)):# if lins//12:# break if (line_word[lins].isupper() or line_word[lins].isdigit() or line_word[lins].isspace()): last_word_size32 (ascii_code.code.get(line_word[lins]), linss%32, lins%12, supper, slower) supper += 1 elif (line_word[lins].islower()): word_size24 (ascii_code.code.get(line_word[lins]), linss%32, lins%12, supper, slower) slower += 1 else: if linss == 32: sleep(5.8) for lins in range(motor_speed): if (line_word[lins].isupper()): last_word_size32 (ascii_code.code.get(line_word[12]), linss%32, lins%12, len(line_word))# elif:# _thread.start_new_thread(motor.run_stop, (motor_speed, line))# for linss in range(32):# for lins in range(len(line_word)):# if (line_word[lins].isupper()):# last_word_size32 (ascii_code.code.get(line_word[lins]), linss, lins, len(line_word)line_word.clear()
- Forrás: Plato Data Intelligence