Pytanie Uzyskanie drukarki paragonów Epson do wydrukowania z Arduino


Próbuję zbudować mikropinterprekcję za pomocą Arduino i odbitki Epson TM-T88II /POS drukarka. Drukarka używa znaku Epson Esc / POS system, ale nie mogę tego zrobić w Arduino. Robię rzeczy takie jak:

#include <SoftwareSerial.h>

#define out_pin 3
#define in_pin 2
SoftwareSerial printer =  SoftwareSerial(in_pin, out_pin);

void setup()
{
    pinMode(in_pin, INPUT);
    pinMode(out_pin, OUTPUT);
    printer.begin(9600);

    delay(1000);

    printer.print(0x1B, BYTE);
    printer.print('@'); // ESC(HEX 1B) @ is supposed to initialize the printer
    printer.print("hello world");
    printer.print(0xA, BYTE); // print buffer and line feed
}

Po prostu nie mogę zmusić drukarki do odpowiedzi. Drukarka włącza się i drukuje samokontrolę. To serial (RS-232) drukarka, a ja podłączam ją do Arduino poprzez MAX233 żeton. Sprawdziłem i ponownie sprawdziłem połączenia przez chip, co według mnie jest właściwe w oparciu o przyjaciela, który ma podobną konfigurację działa. Czytałem gdzieś, że drukarki TM-T88 potrzebują kabli szeregowych null-modem, więc kupiłem adapter, i to nie miało żadnego znaczenia.

Jestem nowy w elektronice, więc jestem kompletnie zakłopotany. Chcę tylko zmusić go do wydrukowania czegoś, abym mógł dostać się do zabawnej części - programowania :). Wszelkie przemyślenia na temat rzeczy do przetestowania / wypróbowania? Mogę podać więcej szczegółów na temat okablowania lub czegokolwiek innego, po prostu nie chciałem, aby to było zbyt długie.


12
2018-03-02 16:41


pochodzenie




Odpowiedzi:


Czy korzystasz z transceivera RS-232? Arduino wyprowadza 0 i 5 V dla portu szeregowego, podczas gdy drukarka używa -12 i 12 V dla portu szeregowego. Powinieneś użyć a MAX232 lub podobne urządzenie, aby uzyskać prawidłowy interfejs fizyczny. (Możesz być w stanie oszukać, jeśli odwrócisz port szeregowy w Arduino, ale to może nie zadziałać, i to więcej kłopotów, gdy dopiero zaczynasz.)

Kiedy już to załatwisz, RTS i DTR mogą być twoim problemem. Powinieneś być w stanie zmienić ustawienia przełącznika DIP na drukarce i całkowicie wyłączyć kontrolę przepływu lub przełączyć ją na kontrolę przepływu oprogramowania.

Ponadto może być konieczne wysłanie zarówno linii, jak i powrotu karetki.

Jednakże, po wykonaniu wszystkich zadań, powinno się wydrukować dobrze, nawet bez żadnych poleceń resetowania. Wyślij kilka znaków ASCII i powrót linii / karetki, a to wszystko wypluje.

Możesz teraz zignorować linię RX (po stronie Arduino, TX po stronie drukarki) - po prostu przesyłaj dane do momentu wykrycia okablowania, konwersji poziomu, kontroli przepływu itp.


3
2018-03-03 04:18





Możesz sprawdzić, czy możesz komunikować się z komputerem, zarówno z Arduino, jak iz drukarką.

Chciałbym użyć oscyloskopu, aby sprawdzić, czy sygnały seryjne wychodzą z Arduino i MAX, tak jak powinny, ale prawdopodobnie nie masz takiego.

Czy jesteś pewien, że ustawienia komunikacji są poprawne? Ustawiasz szybkość transmisji na 9600, ale co z bitami danych, parzystością, bitami stopu? A co z liniami kontrolnymi?


1
2018-03-02 19:58



Dla ustawień komunikacji, nie jestem pewien. Myślę, że może potrzebuję jakiegoś uzgadniania, ale nie wiem jak. Informacje z autotestu drukarki: Szybkość transmisji: 9600 (to właśnie używam) Bity danych: 8 bitów Parzystość: brak Bit stopu: 1 bit lub więcej Handshaking: DTR / DSR - Adam Endicott


Podłączyłem inny komputer zamiast drukarki do drugiego końca kabla szeregowego i uruchomiłem telnet lub Kit w tym systemie, aby upewnić się, że komunikujesz się i faktycznie rozmawiasz przez port szeregowy. Jeśli tak, możesz użyć tego samego rozwiązania do wysyłania danych do drukarki w celu potwierdzenia wszystkich ustawień, takich jak liczba bitów danych, parzystość itp.


1
2018-03-03 03:55





Zrobiłem podobny projekt i miałem ten sam problem. Do przejścia z max232 na drukarkę potrzebny jest zerowy kabel modemowy / crossover, ponieważ oba urządzenia są w konfiguracji slave


1
2017-08-29 11:25