Procesory PIC a tisk na tiskárnu přes LPT

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Jirka
Příspěvky: 2031
Registrován: 01 črc 2005, 02:00
Bydliště: zbídačený kraj
Kontaktovat uživatele:

Procesory PIC a tisk na tiskárnu přes LPT

#1 Příspěvek od Jirka »

Zdravím,

Mám takový teoretický dotaz. :)

Zkoušel jste někdo tisknout z procesoru PIC přes LPT port na jehličkové tiskárny nebo termotiskárny? Je to vůbec reálné, případně byly by nějaké odkazy na tuto problematiku?

Zamýšlel jsem tisknout z malého terminálu samolepící štítky s pořadovým pětimístným číslem a PICka by mi do toho zapojení "seděla". Postisku tlačítka by se přičetla jednička a soubor znaků pro tisk (v ASCII) by se odeslal na tiskárnu přes LPT. Tak nějak bych si to představoval.
*****

Uživatelský avatar
Hop377
Příspěvky: 439
Registrován: 19 čer 2004, 02:00

#2 Příspěvek od Hop377 »

Je to realne, staci ked si pozries specifikaciu protokolu centronics a lahko to pochopis.

Uživatelský avatar
Crifodo
Příspěvky: 14471
Registrován: 11 říj 2005, 02:00

#3 Příspěvek od Crifodo »

někde na webu by měl být ke stažení disassemblovaný výpis ROM Didaktiku Gama a tam je rutina pro Z80 pro obsluhu tiskárny s rozhraním Centronics, asi by se z toho dalo inspirovat. Vešlo se to do pár stovek bajtů.

Uživatelský avatar
eljaro
Příspěvky: 441
Registrován: 03 pro 2004, 01:00
Bydliště: Krnov
Kontaktovat uživatele:

#4 Příspěvek od eljaro »

záléží taky co budeš chtít tisknout ! text půjde podle textovéch sad v dané tiskarně asi to bude docela jednoduché už si to moc nepamatuji ale odešleš esc sekvenci ve které nastavýš tiskárnu do text režimu - zvolíš typ písma a způsob pohybu vozíku uzavřeš inicializaci a začneš sypat text s příslušným generováním konce řádku . U grafiky je to podobné jen se místo typu nastavuje hustota dpi a místo dat tam pošleš 0101 podle toho jak má zrovna tisknout a opět přeskok na další řádek . je dobré projít protokol k tiskárnám - v zásedě takto budeš moci tisknout i Hp s plc3 ten protokol je obdobný jako pro jehličkové. Ruina pro centronix je tady http://www.piclist.com/techref/microchip/Centronix.htm ale zbytek asi musíš nastudovat sám :roll:

Jirka
Příspěvky: 2031
Registrován: 01 črc 2005, 02:00
Bydliště: zbídačený kraj
Kontaktovat uživatele:

#5 Příspěvek od Jirka »

Tak jsem si k tomu stáhl PDFka z hw.cz a nějaký scripta + něco z www.piclist.com/techref/microchip/ .
Zkusím se tím prokousat, snad se v tom "neutopím".

eljaro: potřebuju vytisknout 5-místné číslo, data (formát), co chci poslat na tiskárnu, mám. Co hledám, je způsob jak to dostat z PICky do tiskárny přes LPT -> v podstatě rutinu.
Sorry to all you MPLAB users that it is in Parallax code.
Ouu, Parallax, ja něpanimaju.

Zatím díky za odpovědi.
*****

Uživatelský avatar
eljaro
Příspěvky: 441
Registrován: 03 pro 2004, 01:00
Bydliště: Krnov
Kontaktovat uživatele:

#6 Příspěvek od eljaro »

ten paralax nebude takové terno jen přepsat to jejich cje a podobné zkratky to nebude žádná hruza jinak je to zdroják joko každý jiný ta syntaxe je podobná jako u u atmelů tak to jen porovnat a aplikovat do mplabu

Josef Chroustal

#7 Příspěvek od Josef Chroustal »

Já bych to øešil tak,že bych tu konkrétní tiskárnu pøipojil k PC.Naladil vše tak aby to tisklo tak jak chci.Programovì odchytil data.Naslednì bych zjiš￾oval rychlosti a vše ostatní kolem toho.

Uživatelský avatar
jankop
Příspěvky: 679
Registrován: 04 dub 2007, 02:00
Kontaktovat uživatele:

#8 Příspěvek od jankop »

To by nebylo účelné. Komunikace s běžnou tiskárnou je velmi primitivní a je dokonale popsána. Odeslat pár znaků je triviální úloha. Pro základní komunikaci je třeba 9 výstupních bitů a 1-2 vstupní.
Odešlu na výstup jeden byte dat a potvrdím ho signálem STROBE.
A čekám, až mi tiskárna potvrdí přijetí dat signálem ACKNLQ (nebo BUSY). Pak odesílám další byte. Ostatní signály mohu ignorovat.
Napsat rutinu pro tohle je otázkou několika řádků kódu. A pokud nechci tisknout obrázky, tak daty budou přímo ASCII kódy číslic. Nevím co řešíte.
Mimochodem, spoustu jehličkových tiskáren lze při zapnutí kombinací tlačítek převést do módu, kdy tiskárna tiskne hexa číslice všech kódů, které dostává. Pro ladění to není k zahození.

Jirka
Příspěvky: 2031
Registrován: 01 črc 2005, 02:00
Bydliště: zbídačený kraj
Kontaktovat uživatele:

#9 Příspěvek od Jirka »

Jak tím listuju, tak by to mělo jít jednoduše, na http://lpt.hw.cz/ je to pěkně popsané. Až mi přijdou objednané součástky, tak se do toho pustím.
*****

Jirka
Příspěvky: 2031
Registrován: 01 črc 2005, 02:00
Bydliště: zbídačený kraj
Kontaktovat uživatele:

#10 Příspěvek od Jirka »

Tak jsem se k tomu konečně dostal a funguje to.

zapojení:

Kód: Vybrat vše

; PIC16F628 a krystal 4,00MHz
;
;**************************************************************************
;*                                  PIC16F628                             *
;*                             --------\/--------                         *
;*                vstup nACK  -|RA2          RA1|-  výstup STROBE         *
;*               vstup ERROR  -|RA3          RA0|-  vstup BUSY            *
;*                  tlacitko  -|RA4ck       osc1|-  \ Krystal 4,00MHz     *
;*                       +5V  -|MCLR        osc2|-  /                     *
;*                        0V  -|Vss          Vdd|-  +5V                   *
;*                data bit 0  -|RB0/INT  PGD/RB7|- data bit 7             *
;*                data bit 1  -|RB1      PGC/RB6|- data bit 6             *
;*                data bit 2  -|RB2          RB5|- data bit 5             *
;*                data bit 3  -|RB3          RB4|- data bit 4             *
;*                             ------------------                         *
;*                                                                        *
;**************************************************************************
Hexa kód znaku, který chci tisknout. vždy připravím do W a potom zvolám tuto rutinu:

Kód: Vybrat vše

odesli  movwf   PORTB           ;přesuň data na port
        btfsc   PORTA,0         ;kontrola BUSY, jestli je v 0
        goto    $-1             ;není v 0 -> vrať se
        bcf     PORTA,1         ;je v 0, shoď STROBE
        nop
        nop
        nop
        nop
        nop
        bsf     PORTA,1         ;nahoď STROBE
        btfss   PORTA,2         ;kontrola nACK, jestli je v 1	
        goto    $-1             ;není v 1 -> vrať se
        return                  ;je v 1, návrat pro další znak
Jen mi pořád vrtá hlavou, jestli správně kontroluji signál nACK, tedy ve správný okamžik. Jestli ho nekontroluji ještě předtím, než přejde do nuly, ale když jsem to zkoušel jako posloupnost nejdřive 0, pak 1, tak to netisklo. Signál ERROR zatím nevyužívám. To dodělám, až zase budu mít čas si s tím "hrát".
Přílohy
cmdfig1.jpg
komunikace v SPP módu - lpt.hw.cz
(11.98 KiB) Staženo 65 x
*****

Uživatelský avatar
Atlan
Příspěvky: 4499
Registrován: 10 kvě 2004, 02:00
Bydliště: Košice

#11 Příspěvek od Atlan »

skus definovat STROBE skor program bude prehladnejsi.... bcf strobe je lepsie ako bcf porta,1 s popisom

Jirka
Příspěvky: 2031
Registrován: 01 črc 2005, 02:00
Bydliště: zbídačený kraj
Kontaktovat uživatele:

#12 Příspěvek od Jirka »

To jsou detaily, každý je zvyklý na jiný způsob zápisu.
Jinak už testuju tisk i přes RS-232.
*****

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“