2009-03-02 9 views
12

Próbuję zbudować mikropinterpreter za pomocą drukarki Arduino i drukarki Epson TM-T88II/POS. Drukarka używa systemu Epson Esc/POS, ale nie mogę tego zrobić w Arduino. Robię rzeczy takie jak:Uzyskiwanie drukarki paragonów Epson do drukowania z Arduino

#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 udzielenia odpowiedzi. Drukarka włącza się i drukuje samokontrolę. Jest to drukarka szeregowa (RS-232), a ja podłączam ją do Arduino poprzez układ MAX233. 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 całkowicie 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.

Odpowiedz

1

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

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

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

+0

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 Parytet: brak Bit stopu: 1 bit lub więcej Uzgadnianie: DTR/DSR –

1

Chciałbym podłączyć inny komputer zamiast drukarki do drugiego końca kabla szeregowego i uruchomić telnet lub PuTTY w tym systemie, aby upewnić się, że komunikujesz się i rzeczywiście rozmawiasz przez port szeregowy. Jeśli tak, możesz użyć tego samego rozwiązania do wysyłania danych do drukarki, aby potwierdzić wszystkie ustawienia, takie jak liczba bitów danych, parzystość itp.

3

Czy używasz transceivera RS-232? Arduino wyprowadza 0 i 5   V dla portu szeregowego, natomiast drukarka używa -12 i 12   V dla portu szeregowego. Aby uzyskać poprawny interfejs fizyczny, należy użyć urządzenia MAX232 lub podobnego urządzenia. (Możesz być w stanie oszukać, jeśli odwrócisz port szeregowy w Arduino, ale to może nie zadziałać, a problem zaczyna się dopiero po rozpoczęciu.)

Po wykonaniu tej czynności, RTS i DTR mogą być problem. 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.

Może być konieczne wysłanie zarówno powrotu do wiersza, jak i powrotu karetki.

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

Można zignorować linię RX (Na stronie Arduino, TX od strony drukarki) do teraz - wystarczy wysłać mu dane aż dowiedzieć się okablowaniem, konwersja poziomu, kontrolę przepływu, itd

1

I zrobiliśmy podobny projekt i mieliśmy ten sam problem. Potrzebujesz kabla zerowego modem/crossover, aby przejść z max232 do drukarki, ponieważ oba urządzenia są w konfiguracji slave

Powiązane problemy