2009-03-02 42 views
12

Tôi đang cố gắng xây dựng một máy quét micrô bằng máy in Arduino và máy in Epson TM-T88II/POS. Máy in sử dụng hệ thống Epson Esc/POS, nhưng tôi không thể làm cho nó làm được gì từ Arduino. Tôi đang làm những việc như:Nhận máy in hóa đơn Epson để in từ 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 
} 

Tôi hoàn toàn không thể có được máy in để phản hồi. Máy in có quyền hạn và tự in thử. Đó là một máy in nối tiếp (RS-232), và tôi đang kết nối nó với Arduino thông qua một chip MAX233. Tôi đã kiểm tra và kiểm tra lại kết nối của mình thông qua con chip, điều mà tôi nghĩ là đúng dựa trên một người bạn có thiết lập tương tự. Tôi đọc ở đâu đó rằng các máy in TM-T88 cần cáp nối tiếp null-modem, vì vậy tôi đã mua một bộ chuyển đổi, và điều đó dường như không tạo ra bất kỳ sự khác biệt nào.

Tôi mới sử dụng thiết bị điện tử, vì vậy tôi hoàn toàn bối rối. Tôi chỉ muốn làm cho nó in một cái gì đó, vì vậy tôi có thể nhận được một phần thú vị - lập trình :). Bất kỳ suy nghĩ về những điều để thử nghiệm/thử? Tôi có thể cung cấp thêm chi tiết về hệ thống dây điện hoặc bất cứ điều gì khác, chỉ cần không muốn điều này để có được lâu dài.

Trả lời

1

Bạn có thể kiểm tra xem bạn có thể liên lạc với PC, cả từ Arduino và máy in.

Tôi sẽ sử dụng một máy đo dao động để xem các tín hiệu nối tiếp có xuất hiện từ Arduino và MAX như chúng không, nhưng sau đó bạn có thể không có.

Bạn có chắc chắn cài đặt giao tiếp là chính xác không? Bạn thiết lập tốc độ truyền đến 9600, nhưng những gì về bit dữ liệu, chẵn lẻ, dừng bit? Điều gì về các dòng điều khiển?

+0

Đối với cài đặt giao tiếp, tôi không chắc chắn chút nào. Tôi nghĩ rằng tôi có thể cần phải làm một số loại bắt tay, nhưng tôi không biết làm thế nào.Thông tin từ máy in tự kiểm tra: Tốc độ truyền: 9600 (đó là những gì tôi đang sử dụng) Dữ liệu bit: 8 bit Tính chẵn lẻ: không Dừng bit: 1 bit trở lên Bắt tay: DTR/DSR –

1

Tôi muốn nối một PC khác thay vì máy in vào đầu kia của cáp nối tiếp và chạy telnet hoặc PuTTY trên hệ thống đó để đảm bảo bạn đang kết nối và thực sự nói chuyện qua cổng nối tiếp. Nếu có, bạn có thể sử dụng cùng một giải pháp để gửi dữ liệu đến máy in để xác nhận tất cả các cài đặt như số bit dữ liệu, chẵn lẻ, v.v.

3

Bạn đang sử dụng bộ thu phát RS-232? Arduino kết quả đầu ra 0 và 5   V cho nối tiếp, trong khi máy in sử dụng -12 và 12   V cho nối tiếp. Bạn nên sử dụng MAX232 hoặc thiết bị tương tự để có giao diện vật lý chính xác. (Bạn có thể lừa đảo nếu bạn đảo ngược cổng nối tiếp trên Arduino, nhưng điều đó có thể không hoạt động, và sẽ gặp nhiều rắc rối hơn khi chỉ mới bắt đầu.)

Sau khi được chăm sóc, RTS và DTR có thể là của bạn vấn đề. Bạn sẽ có thể thay đổi cài đặt DIP-switch trên máy in và tắt hoàn toàn kiểm soát luồng hoặc chuyển sang điều khiển luồng phần mềm.

Ngoài ra, bạn có thể cần phải gửi cả nguồn cấp dữ liệu đường truyền và phí vận chuyển.

Tuy nhiên, một khi tất cả được thực hiện, nó sẽ in tốt, ngay cả khi không có bất kỳ lệnh đặt lại nào. Gửi một loạt các ký tự ASCII và dòng trả về nguồn cấp dữ liệu/dòng, và nó sẽ nhổ tất cả.

Bạn có thể bỏ qua những dòng RX (ở phía bên Arduino, TX ở phía máy in) cho bây giờ - chỉ cần gửi nó dữ liệu cho đến khi bạn tìm ra các hệ thống dây điện, chuyển đổi mức độ, kiểm soát dòng chảy vv

1

tôi đã thực hiện một dự án tương tự và có cùng một vấn đề. Bạn cần một modem không dây/cáp chéo để chuyển từ max232 sang máy in vì cả hai thiết bị đều ở cấu hình nô lệ

Các vấn đề liên quan