Lyhyt johdanto
Lämpötulostimet ovat hyvin yleisiä jokapäiväisessä elämässämme, ja esimerkkejä lämpötulostimista on ravintoloissa, parkkipaikoilla ja ostoksilla. Tämä artikkeli keskittyy lämpötulostimien käyttöön pysäköintijärjestelmissä.
Käytettävät materiaalit
- STONE STWI101WT-01
- FTP lämpötulostinpää
- Raspberry Pi pico
- Kolikkokäyttöinen kone
- Tämän tulostuspään pitäisi olla saatavilla kansainvälisesti, perusperiaatteet ovat samanlaiset. Vasen puoli on askelmoottori. Sitten keskipää on 6 lämmitysyksikköä. Jokaisessa lämpöyksikössä on 64 lämpöpistettä. Yhteensä siis 384 lämpöpistettä. Sitten alla on salpa. Salvan alla on siirtorekisteri. Lopuksi on annettava kellosignaali. Joten koko toimintaperiaate on antaa kellosignaali tulostuspäälle ja lähettää sitten data joka kellojakso, 384 kellosignaalin ja 384 datan lähettämisen jälkeen siirtorekisterin tiedot tallennetaan salpaan. Sitten salpa asetetaan matalalle tasolle. Sitten 384 lämpöpistettä valitsevat lämmittävätkö vai eivät sen mukaan, ovatko kukin data 0 vai 1. Anna samalla askelmoottorin pyöriä lämpöpaperin ohjaamiseksi halutun luonteen suunnittelemiseksi. Kun sain lämpötulosteen pää, menin eteenpäin ja pyysin datalehteä, ja se oli 30-pinninen fpc-kaapeli. Joten ei tietenkään ole kovin kätevää muodostaa yhteyttä pikoon suoraan sillä. Joten ajattelin, että minun on parempi suunnitella taustalevypiiri. Minulla on a STONE-sarjan näyttö on 12v virtalähde, ja sitten katson lämpötulostuspään tulostusjännitteen, jonka viitearvo on 7.6 V, maksimiarvo on 8 V, ja anna sen jälkeen noin 7.6 V:n jännite. Siinä on myös logiikkajännite 3.3 V, ja sitten Raspberry Pi picon maksimituki 5 V virtalähdettä ja sen lähtöjännite on 3.3 V, sitten virtalähteen suunnittelussa voidaan käyttää kahta dcdc:tä, 12 V virtalähteellä, yksi dcdc-lähtö 7.6 V antaa virran lämpötulostuspäälle, toinen dcdc-lähtö 5v picoon ja käyttää sitten picon 3.3v jännitettä lämpötulostuspään logiikkajännitteen tehostamiseen. Sitten 12v johtaa suoraan sarjanäytölle.
- Muuten, sen lämpötulostuspään askelmoottoria on myös käytettävä. Minulla on integroitu Darlington-putkiintegraattori. Mutta se on liian iso ja se on suora plug-in, joten osta vain ohjainsiru. Sitten tämä käyttömoottorin puoli on myös OK. Tulostaminen vaatii fontin suunnittelua, periaatteessa kaikki käyttävät spi flashia fonttien tallentamiseen, mikä on valtava projekti. Vain ascii-koodi on yli 100, joten sinun on ostettava toinen SPF-salama. Sitten koko suunnittelu on melkein tällaista.
STONE Designer (GUI Designer -ohjelmisto)Lähettäjä:https://www.stoneitech.com/support/download/software - Suunnittele piiriSitten seuraavat alkoivat suunnitella piiriä. Etsi ensin virtalähde, itse asiassa aluksi käytin kolminapaista jännitteensäädintä, koska piiri on yksinkertainen, valmistuksen jälkeen lämmitystilanne oli vakavampi virheenkorjauksen aikana, erittäin kuuma koskettaa, joten vaihdan käyttämään dcdc. Seuraa vain sirun tietolehteä suoraan tehdäksesi piirikaavio. Valitsin tähän mt2492, mutta jätin huomioimatta tärkeän parametrin on tulostuspään käyttövirta, tämän sirun suurin lähtövirta on 2A, mutta tulostuspään käyttövirta 2.3A, ero 0.3A, sitä voidaan myös käyttää, mutta tehokkuus ei ole niin korkea, puhumme erityisestä vaikutuksesta myöhemmin.
- Sitten ostamani moottoriohjainsiru on lv8548, katso tulostuspään tietolehti, jossa on askelmoottorin ajoituskaavio sen ajoituksen mukaan, jotta se saa nelisuuntaisen pwm-signaalin.
- Sitten on flash-siru, jossa by25q32bs, 32Mbit:n kapasiteetti on melko suuri ja kytketty picoon, odottaa picon kutsumista.
- Sen jälkeen kokonaispiirikaavio on tällainen, vasemmassa yläkulmassa on tietoliikennepistoke ja virtalähde, alla on summeri (ei varsinaisesti käytössä piirissä), oikealla on valodiodi ja oikeassa alakulmassa on 30-pinninen fpc tulostuspään liittämistä varten.
- Kun se on valmis ja sitä voidaan käyttää, on alla kuvatulla tavalla, jättäen taululle tapin otsikkoliittimen Raspberry Pi picolle, voit kytkeä sen suoraan siihen.
Raspberry Pi pico - Kytke virta päälle, ensin ei ole kytketty pico- ja tulostuspäähän, mittaa dcdc:n lähtöjännite, normaalissa tapauksessa toinen on noin 7.5v, toinen noin 5v.
- Liitä sitten tulostuspää, sarjanäyttö ja pico, mittaa logiikkajännite noin 3.3 V, kun ongelmaa ei ole, voit kirjoittaa ohjelman.
OhjelmaAion ensin säätää askelmoottorin, tämä osa on helppo säätää, katso datalehdestä ajoituskaavio, 8 kellojaksoa, jokaisen kellojakson tulisi erikseen antaa moottorin neljälle nastalle logiikkasignaali, 8 jakson jälkeen moottori käännä ylös ja säädä sitten nopeutta, mutta väliin pitää lisätä viive tehosuhteen säätämiseksi muuten se kääntyy liian nopeasti, asettamani viiveaika on noin 5ms ja sitten kun annat sen kääntyä, pitää antaa taso alhainen, muuten moottori ei näytä pyörivän, itse asiassa sisäinen kela on edelleen päällä, pitkän ajan kuluttua voit haistaa palavan hajun. Kirjoita sitten funktio, laita runko silmukkaan, jaksojen lukumäärä edustaa Moottorin pyörimispituus, toiminto näyttää hieman pitkältä, laita se muualle yksin ja odota puhelua. - Tämä on toiminto muutaman muutoksen jälkeen, nopeus ja kesto lähetetään pääohjelmassa. Se vaatii vielä paljon optimointia. Sitten on tulostuspään säätö, tämä osa on minulle vaikea, se tarvitsee kellosignaalin, tietolehti on kirjoitettu enintään 8M, luulin, että se tarvitsi signaalin noin 8M taajuus, se on vaikeaa, ensin mittasin taajuuden io flip-tasolla, ero on liian suuri. Ja sitten haluan käyttää pioa, ja tutkin koko päivän, mutta tulos ei ole hyvä, henkilökohtaiset taitoni ovat rajalliset, luultavasti minun on tutkittava syvällisesti rp2040-sirun käsikirjaa. Sitten käännä taso 384 jaksoja kokeillaksesi, se on näin työnkulku, alusta tiedonsyöttö 1 nasta, salpa 1 nasta, kellosignaali 1 nasta, 6 tulostusyksikön nastaa ja sitten salvan lisäksi kaikki muut vedä alhaalla ja lähetä sitten yksi data yhden kellojakson aikana, pyöräilyn jälkeen 384 kertaa asettaaksesi salvan arvoon 0, asettaaksesi 6 tulostusyksikön arvoon 1 ja sitten missä kohdassa on tiedot, mikä piste lämmitetään. Sarjan toteutuksen jälkeen vedä tasoa taaksepäin. Sitten kun ohjelma oli kirjoitettu ja testaus aloitettu, se ei todellakaan toiminut, itse asiassa koska liian monta tulostusyksikköä ohjattiin, mutta virta ei riittänyt, muuta se sitten antamaan vähemmän kaksi tulostusyksikköä korkealla tasolla ja testaa uudelleen.
- Se todella toimii! Se tulostaa vaakasuuntaisen viivan. Se tarkoittaa, että kellotaajuudella ei ole alarajaa, joten voit käyttää askelmoottoria pystysuoran viivan tulostamiseksi. pico-kaksoissäike, anna toisen säikeen ajaa moottoria synkronisesti, kirjoita sitten ohjelma ja suorita. Pystyviiva tulee ulos.
- Kun vaaka- ja pystyviivat, hanki sitten vinoviiva, kiinnitä huomiota siihen, että yksi tulostusyksikkö on 64 pistettä, joka määrittää pituuden, kuten 32, ja kierrä sitten 32 kertaa 384 jaksoa, jokainen jakso aseta vain ensimmäiset 64 dataa 1:ksi. ja aseta seuraavat 320 dataa arvoon 0 ja sen jälkeen 32 kertaa joka kerta vain ensimmäisessä yksikössä tulostaaksesi pisteen ja sitten syklin inkrementaalisesti, yhdistettynä askelmoottorin nopeuden säätämiseen ja lopuksi säädettävä 64 * 32 kokoa vinoviiva, voit myös kirjoittaa ensin Z-kirjaimen.
- Sitten ohjelman ääriviivat ovat siellä, jos haluat tulostaa sanan, sinun on ensin tehtävä fontti. Tee ensin iso kirjain A, koko 32 * 32, luettelo määritelmistä, aion tehdä tässä pin.value:lla (), joten tee fontti ja käytä sitten kutsuttavia binääriarvoja 32 riviä ja 32 saraketta, ota pois tehdäksesi vaihdon ja siirrä sitten pin.value (), joten tämä on toteutusprosessi.
- Kun 0 on taustalla ja 1 etualalla, varsinainen toteutusprosessi näyttää sitten tältä.
- Ulkoisin suuri jakso 32 edustaa 32 rivin jaksoa, eli tulosta 32 riviä, ja sitten ensimmäiset 32 jaksoa sisällä lämmittävät puolet ensimmäisestä lämmitysyksiköstä, sitten loput 352 jaksoa asetetaan nollaan ja sitten miinus 0 arvosta 1 aina 31:aan asti, voit laskea ensimmäisen rivin pisteistä, jotka on lämmitettävä vasemmalta oikealle, ja sitten joka 0 jakso, joka suoritetaan loppuun, kun salpa on asetettu 384 ja lämmitysyksikkö 0 ja sitten voit tulostaa ja sitten yhden sanan silmukan jälkeen 1 kertaa uudelleen.
- Edelleen rohkea, tällainen pistematriisi sana, on työkaluja verkossa voidaan tehdä suoraan, edessä plus 0b ja sitten lisää pilkku taakse, ja sitten pelaat omien ideoiden mukaan, fontti on itse asiassa alun perin tarkoitettu tallennettu flash-siru, mutta säädän pitkään sitä ei silti voi avata.
- En tiedä missä vika on, kun on aikaa, säädän taas, hyvä asia on, että picossa itsellään on 16mbit kokoinen flash, tallentaa ascii-kirjastoa vielä riittää, sitten olen niin tallessa.
- Määrittele se sanakirjalla, laita se erilliseksi kappaleeksi ja kutsu se takaisin pääohjelmassa. 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()
- Lähde: Platon Data Intelligence