IOT

Toplotna tiskalna glava za sistem upravljanja parkiranja na osnovi Raspberry Pi pico in STONE TFT LCD

Kratek uvod

Termični tiskalniki so zelo pogosti v našem vsakdanjem življenju in obstajajo primeri termalnih tiskalnikov v restavracijah, na parkiriščih in v trgovinah. Ta članek se bo osredotočil na uporabo termalnih tiskalnikov v parkirnih sistemih.

Thermal print head for a parking management system based on Raspberry Pi pico and STONE TFT LCD IOT PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Materiali za uporabo

  • STONE STWI101WT-01
  • Glava termičnega tiskalnika FTP
  • Raspberry Pi pico
    • Stroj na kovance
    funkcijaNadzorna funkcija je prikazana na serijskem zaslonu, glavni vmesnik izbere nadstropje, po vstopu v glavni vmesnik izbere parkirno mesto, hkrati prikaže številko parkirnega mesta v besedilnem polju zgoraj desno, nato izbere čas bivanja, sta dva drsna izbirnika besedila, nato pa bo isti prikazal tudi informacije o naročilu v besedilnem polju zgoraj desno, glede na fiksno ceno na enoto, ki se pomnoži s časom bivanja, da dobimo skupno ceno. Šele ko sta izbrana parkirno mesto in čas bivanja, lahko greste na gumb za plačilo, sicer je neveljaven. Po vstopu v plačilni zaslon bo uporabljen sprejemnik kovancev. Nato bo na zaslonu prikazano število kovancev, ki jih je treba vložiti, in število že vloženih kovancev. Ko so kovanci vloženi, se prikaže sporočilo o uspešnem plačilu. Nato se lahko odločite za tiskanje majhne vstopnice za tiskanje številke kraja in časa na termo papir.Postopek oblikovanjaSprva sem želel uporabiti Raspberry Pi pico narediti majhen tiskalnik. Potem v procesu izbire komponent menim, da je toplotni tiskalnik bolj primeren za doseganje, po določitvi programa sem začel kupovati strojno opremo. Pravzaprav sem v postopku spletnega naročanja ugotovil, da obstaja veliko termalnih tiskalnikov z dobrimi gonilniškimi vezji, večina jih je izdelanih z uporabo stm-ovega čipa in so zasnovani z lastnim nizom navodil. Na primer, z uporabo njegovih navodil, naj tiskalnik tiska znake ali papir, vendar je ta tiskalnik zelo praktičen, vendar ni vrednosti učenja. To je pošiljanje navodil prek serijskih vrat na liniji, lahko upravljate s tiskalnikom. Zato sem pomislil, da bi kupil tiskalno glavo in jo sam razvil. Glede tiskalne glave sem izbral termalno tiskalno glavo ftp.FTP toplotna tiskalna glava
  • Thermal print head for a parking management system based on Raspberry Pi pico and STONE TFT LCD IOT PlatoBlockchain Data Intelligence. Vertical Search. Ai.
  • Ta tiskalna glava bi morala biti na voljo mednarodno, osnovna načela so podobna. Leva stran je koračni motor. Nato je srednja glava 6 grelnih enot. Vsaka kurilna enota ima na sebi 64 toplotnih točk. Skupaj torej 384 ogrevalnih točk. Nato je spodaj zapah. Pod zapahom je preklopni register. Končno je treba zagotoviti signal ure. Celotno načelo delovanja je torej zagotavljanje signala ure tiskalni glavi in ​​nato pošiljanje podatkov vsako časovno obdobje, po pošiljanju 384 signalov ure in 384 podatkov bodo podatki v registru premika shranjeni v zapahu. Nato je zapah nastavljen na nizko raven. Nato se bo 384 ogrevalnih točk odločilo za ogrevanje ali ne za ogrevanje glede na to, ali je vsak podatek 0 ali 1. Istočasno pustite, da se koračni motor vrti, da poganja termalni papir za oblikovanje želenega značaja. Ko sem dobil termalni tisk glavo, sem šel naprej in prosil za podatkovni list in bil je 30pin fpc kabel. Tako da očitno ni zelo priročno, da bi se neposredno z njim povezal na pico. Zato sem pomislil, da bi bilo bolje oblikovati vezje hrbtne plošče. Imam STONE serijski zaslon je 12v napajanje, nato pa pogledam tiskalno napetost toplotne tiskalne glave, referenčna vrednost je 7.6v, največja vrednost je 8v, nato pa ji zagotovite napetost približno 7.6v. Ima tudi logično napetost 3.3 V, nato pa Raspberry Pi pico največ podpira napajanje 5 V in ima izhodno napetost 3.3 V, potem lahko zasnova napajanja uporablja dva dcdc, z napajanjem 12 V, en izhod dcdc 7.6 V za napajanje termične tiskalne glave, drugi dcdc izhod 5 V na pico, nato pa uporabite 3.3 V iz pico za napajanje logične napetosti termalne tiskalne glave. Nato 12v vodi neposredno do serijskega zaslona.
  • Thermal print head for a parking management system based on Raspberry Pi pico and STONE TFT LCD IOT PlatoBlockchain Data Intelligence. Vertical Search. Ai.
  • Mimogrede, poganjati je treba tudi koračni motor za tisto termično tiskalno glavo. Imam integriran integrator Darlingtonove cevi. Vendar je prevelik in je preprost vtičnik, zato preprosto kupite gonilniški čip. Potem je tudi ta vidik pogonskega motorja v redu. Tiskanje zahteva oblikovanje pisave, v bistvu vsi uporabljajo spi flash za shranjevanje pisav, kar je ogromen projekt. Samo ascii koda je večja od 100, zato morate kupiti še en SPF flash. Potem je celotno načrtovanje skoraj tako.
    STONE Designer (Programska oprema GUI Designer)Od:https://www.stoneitech.com/support/download/software
  • Thermal print head for a parking management system based on Raspberry Pi pico and STONE TFT LCD IOT PlatoBlockchain Data Intelligence. Vertical Search. Ai.
  • Thermal print head for a parking management system based on Raspberry Pi pico and STONE TFT LCD IOT PlatoBlockchain Data Intelligence. Vertical Search. Ai.
  • Oblikujte vezjeNato so začeli načrtovati vezje. Najprej poiščite napajalnik, pravzaprav sem na začetku uporabljal regulator napetosti s tremi priključki, ker je vezje preprosto, po izdelavi je bila situacija segrevanja resnejša med odpravljanjem napak, zelo vroča na dotik, zato sem prešel na uporabo dcdc. Za izdelavo diagrama vezja preprosto sledite podatkovnemu listu čipa. Tukaj sem izbral mt2492, vendar sem prezrl pomemben parameter, to je delovni tok tiskalne glave, največji izhodni tok tega čipa je 2 A, vendar je delovni tok tiskalne glave 2.3 A, razlika 0.3 A, lahko se tudi uporablja, vendar učinkovitost ni tako visoka, o specifičnem učinku bomo govorili kasneje.
  • Thermal print head for a parking management system based on Raspberry Pi pico and STONE TFT LCD IOT PlatoBlockchain Data Intelligence. Vertical Search. Ai.
  • Nato je čip gonilnika motorja, ki sem ga kupil, lv8548, glejte podatkovni list tiskalne glave, ki ima časovni diagram pogona koračnega motorja glede na njegovo časovno razporeditev, da se na njem zagotovi štirismerni signal pwm.
  • Thermal print head for a parking management system based on Raspberry Pi pico and STONE TFT LCD IOT PlatoBlockchain Data Intelligence. Vertical Search. Ai.
  • Nato je bliskovni čip z by25q32bs, zmogljivost 32 Mbit je precej velika, povezan s pico in čaka, da ga pokliče pico.
  • Thermal print head for a parking management system based on Raspberry Pi pico and STONE TFT LCD IOT PlatoBlockchain Data Intelligence. Vertical Search. Ai.
  • Po tem je celoten diagram vezja takšen, zgornji levi kot je komunikacijska vtičnica in vtičnica za napajanje, spodaj je brenčalo (dejansko se ne uporablja v vezju), na desni je svetleča dioda in spodnji desni kot je 30pin fpc za povezavo tiskalne glave.
  • Thermal print head for a parking management system based on Raspberry Pi pico and STONE TFT LCD IOT PlatoBlockchain Data Intelligence. Vertical Search. Ai.
  • Ko je končano in ga je mogoče uporabiti, kot je prikazano spodaj, na plošči pustite vtičnico za glavo za pine za Raspberry Pi pico, ki jo lahko neposredno priključite.
    Pico Raspberry Pi
  • Thermal print head for a parking management system based on Raspberry Pi pico and STONE TFT LCD IOT PlatoBlockchain Data Intelligence. Vertical Search. Ai.
  • Vklopite napajanje, najprej ne priključite na pico in tiskalno glavo, izmerite izhodno napetost dcdc, v normalnem primeru je ena približno 7.5 V, druga pa približno 5 V.
  • Thermal print head for a parking management system based on Raspberry Pi pico and STONE TFT LCD IOT PlatoBlockchain Data Intelligence. Vertical Search. Ai.
  • Thermal print head for a parking management system based on Raspberry Pi pico and STONE TFT LCD IOT PlatoBlockchain Data Intelligence. Vertical Search. Ai.
  • Thermal print head for a parking management system based on Raspberry Pi pico and STONE TFT LCD IOT PlatoBlockchain Data Intelligence. Vertical Search. Ai.
  • Nato povežite tiskalno glavo, serijski zaslon in pico, izmerite logično napetost približno 3.3 V, potem ko ni težav, lahko napišete program.
    ProgramNajprej nameravam prilagoditi koračni motor, ta del je enostavno prilagoditi, poglejte časovni diagram v podatkovnem listu, 8 taktnih obdobij, vsaka urna doba mora ločeno dati štirim zatičem motorja logični signal, po 8 obdobjih bo motor povečajte in nato prilagodite hitrost, vendar moramo na sredini dodati zakasnitev, da prilagodimo razmerje vklopa, sicer se obrne prehitro, čas zakasnitve, ki sem ga nastavil, je približno 5 ms in potem, ko pustite, da se obrne, morate dati raven nizko, drugače se zdi, da se motor ne vrti, v resnici je notranja tuljava še vedno napajana, po dolgem času lahko zavohate vonj po zažganem. Nato napišite funkcijo, postavite telo v zanko, število ciklov predstavlja dolžina vrtenja motorja, funkcija izgleda malo dolga, postavite jo kam drugam in počakajte na klic.
  • Thermal print head for a parking management system based on Raspberry Pi pico and STONE TFT LCD IOT PlatoBlockchain Data Intelligence. Vertical Search. Ai.
  • Thermal print head for a parking management system based on Raspberry Pi pico and STONE TFT LCD IOT PlatoBlockchain Data Intelligence. Vertical Search. Ai.
  • To je funkcija po nekaj spremembah, hitrost in trajanje se preneseta v glavni program. Še vedno potrebuje veliko optimizacije. Potem je bistvo prilagoditve tiskalne glave, ta del je težak zame, potrebuje signal ure, podatkovni list je napisan v največ 8M, mislil sem, da potrebuje signal približno 8M frekvenca, težko je, najprej sem izmeril frekvenco z io flip levelom, razlika je prevelika. In potem želim uporabiti pio in sem raziskoval cel dan, vendar rezultat ni dober, moje osebne sposobnosti so omejene, verjetno moram temeljito preučiti priročnik za čip rp2040. Nato obrnite nivo 384 obdobij, da poskusite, to je potek dela, kot je ta, inicializirajte vnos podatkov 1 zatič, zapah 1 zatič, signal ure 1 zatič, 6 zatičev tiskalne enote in nato poleg zapaha vse druge potegnite nizko in nato po ciklu 384 pošljite en podatek v enem časovnem obdobju. krat, da nastavite zapah na 0, da nastavite tiskalno enoto 6 na 1, nato pa katera točka ima podatke, katera točka bo ogrevana. Po uvedbi niza povlecite raven nazaj. Potem, ko je bil program napisan in začel s testiranjem, res ni delovalo, pravzaprav zato, ker je bilo nadzorovanih preveč tiskalnih enot, tok pa ni bil dovolj, nato pa ga spremenite, da daje manj dve tiskalni enoti na visoki ravni in znova preizkusite.
  • Thermal print head for a parking management system based on Raspberry Pi pico and STONE TFT LCD IOT PlatoBlockchain Data Intelligence. Vertical Search. Ai.
  • Res deluje! Natisnil je vodoravno črto. To pomeni, da ni spodnje omejitve frekvence ure, potem lahko zaženete koračni motor, da natisnete navpično črto. pico dual thread, nato pustite drugi niti, da sinhrono zažene motor, nato napišite program in ga zaženite. Izstopi navpična črta.
  • Thermal print head for a parking management system based on Raspberry Pi pico and STONE TFT LCD IOT PlatoBlockchain Data Intelligence. Vertical Search. Ai.
  • Z vodoravnimi in navpičnimi črtami, nato dobite diagonalno črto, bodite pozorni na to, da ima ena tiskalna enota 64 točk, ki določajo dolžino, na primer 32, in nato 32 krat 384 obdobij, vsako obdobje nastavi samo prvih 64 podatkov na 1. in nastavite naslednjih 320 podatkov na 0, nato pa 32-krat vsakič samo v prvi enoti, da natisnete točko in nato postopoma krožite, v kombinaciji s hitrostjo koračnega motorja za prilagoditev in končno prilagodite velikost 64 * 32 diagonalno črto, lahko tudi najprej črkujete črko Z.  
  • Thermal print head for a parking management system based on Raspberry Pi pico and STONE TFT LCD IOT PlatoBlockchain Data Intelligence. Vertical Search. Ai.
  • Potem je tam oris programa, če želite natisniti besedo, morate najprej narediti pisavo. Najprej naredite veliko črko A, velikosti 32 * 32, s seznamom definicij, kar nameravam narediti tukaj s pin.value (), torej naredite pisavo, nato pa uporabite 32 vrstic in 32 stolpcev binarnih vrednosti, ki jih želite poklicati, vzemite ven, da naredite premik in nato preidete na pin.value (), tako da je to postopek implementacije.
  • Thermal print head for a parking management system based on Raspberry Pi pico and STONE TFT LCD IOT PlatoBlockchain Data Intelligence. Vertical Search. Ai.
  • Z 0 kot ozadjem in 1 kot ospredjem je dejanski postopek implementacije videti takole.
  • Thermal print head for a parking management system based on Raspberry Pi pico and STONE TFT LCD IOT PlatoBlockchain Data Intelligence. Vertical Search. Ai.
  • Najbolj zunanji veliki cikel 32 predstavlja cikel 32 vrstic, to je tiskanje 32 vrstic, nato pa prvih 32 ciklov v notranjosti je za ogrevanje polovice prve grelne enote, nato pa bo preostalih 352 obdobij nastavljenih na 0 in nato minus 1 od 31 vsakič do 0, lahko štejete prvo vrstico točk, ki jih je treba ogreti od leve proti desni, in nato vsakih 384 obdobij, ki jih je treba dokončati, ko je zapah nastavljen na 0 in grelna enota nastavljena na 1 in nato lahko natisnete in nato eno besedo A po ponovnem 32-kratnem zankanju.
  • Thermal print head for a parking management system based on Raspberry Pi pico and STONE TFT LCD IOT PlatoBlockchain Data Intelligence. Vertical Search. Ai.
  • Še vedno krepko, ta vrsta pikčaste matrične besede, na spletu so orodja, ki jih je mogoče narediti neposredno, spredaj plus 0b in nato dodajte vejico na zadnji strani, nato pa igrate v skladu s svojimi zamislimi, pisava je pravzaprav prvotno namenjena shranjen v čipu flash, vendar ga dolgo prilagajam, še vedno ga ni mogoče odpreti.
  • Thermal print head for a parking management system based on Raspberry Pi pico and STONE TFT LCD IOT PlatoBlockchain Data Intelligence. Vertical Search. Ai.
  • Ne vem, kje je problem, ko bom imel čas, se bom spet prilagodil, dobra stvar je, da ima sam pico flash velikosti 16 Mbit, shranjevanje knjižnice ascii je še dovolj, potem sem tako shranjen.
  • Thermal print head for a parking management system based on Raspberry Pi pico and STONE TFT LCD IOT PlatoBlockchain Data Intelligence. Vertical Search. Ai.
  • Definirajte ga s slovarjem, postavite v ločen del in prikličite nazaj v glavni program. 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.
  • Thermal print head for a parking management system based on Raspberry Pi pico and STONE TFT LCD IOT PlatoBlockchain Data Intelligence. Vertical Search. Ai.
  • 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()
  • Vir: Plato Data Intelliegence