Beschimpfungsdrucker nachbauen?

Der chaotische Hauptfaden

Moderatoren: Heaterman, Finger, Sven, TDI, Marsupilami72, duese

Benutzeravatar
RMK
Beiträge: 5421
Registriert: Di 20. Jan 2015, 14:59
Wohnort: östlich von Stuttgart

Re: Beschimpfungsdrucker nachbauen?

Beitrag von RMK »

hmmm, kann man dafür irgendwie einen (USB...)-Dymo Labelwriter 400 benutzen?

dann könnt man sogar Beschimpfungsaufkleber drucken (und ich hab hier so ein Teil stehen,
das ist der Hauptgrund... ähem. :) )

jemand ne Idee?
berlinerbaer
Beiträge: 1063
Registriert: Di 22. Aug 2017, 05:19
Wohnort: Berlin

Re: Beschimpfungsdrucker nachbauen?

Beitrag von berlinerbaer »

Das wird unverhältnismäßig sportlich, USB-host aufm Mikrocontroller. Am ehesten würde sich da wohl ein olles smartphone eignen, aber es gibt natürlich auch muskulösere Mikro-Controller, die das können.

Ich würd' das Ding aufmachen und gucken, wo aus dem USB2serial-chip das serielle Signal rausfällt und da einen Arduino anflanschen.

Als nächstes musst Du dann noch die Geschwindigkeit rausfinden (9600-19200 sind gute Kandidaten, entweder mit XON/XOFF oder hardware handshake), das Protokoll herausfinden (ausprobieren (einfach mal ASCII draufschmeißen), Doku auftreiben oder logic-Analyser während Du vom Computer drauf druckst).
Benutzeravatar
Fritzler
Beiträge: 12603
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: Beschimpfungsdrucker nachbauen?

Beitrag von Fritzler »

berlinerbaer hat geschrieben: So 7. Jun 2020, 01:13 Das wird unverhältnismäßig sportlich, USB-host aufm Mikrocontroller.
Nö, STM32 haben das eingebaut.
Nur der ST Cube HAL Treiber ist maximal besch*ssen.

Meine E-Last kann daher aufn USB Stick loggen ;)
Benutzeravatar
Hansele
Beiträge: 3745
Registriert: So 11. Aug 2013, 15:15
Wohnort: Bw
Kontaktdaten:

Re: Beschimpfungsdrucker nachbauen?

Beitrag von Hansele »

Hallo zusammen,

mittlerweile habe ich es (mit Hilfe, vielen Dank nochmals!) hinbekommen,
dass der Drucker einen Text (steht alleine und fest im Code) druckt und den Zettel abschneidet.

Bild

Das Problem mit den vielen Leerzeichen beim ausdrucken, kann ich mir nicht erklären,
als ich die Verkabelung nochmals nachgesteckt habe, sahen die Ausdrucke gut aus:
(vermutlich hat das Breadboard eine Macke :-()
Bild

aktueller Code:

Code: Alles auswählen

const int charsPerLine = 800;   // this is the max # of chars per line
const int num_lines = 1;
byte message[num_lines][charsPerLine] = {

"Wenn mein Hund Dein Gesicht haette wuerde ich ihm den Arsch rasieren und ihm beibringen rueckwaerts zu laufen !!!!"
};


// parallel port pin# = arduino pin#
const int nStrobe = 2;
const int data_0 = 3;
const int data_1 = 4;
const int data_2 = 5;
const int data_3 = 6;
const int data_4 = 7;
const int data_5 = 8;
const int data_6 = 9;
const int data_7 = 10;
const int nAck = 11;
const int busy = 12;

const int strobeWait = 2;   // microseconds to strobe for


void setup() {
  Serial.begin(9600);

  pinMode(nStrobe, OUTPUT);      // is active LOW
  digitalWrite(nStrobe, HIGH);   // set HIGH
  pinMode(data_0, OUTPUT);
  pinMode(data_1, OUTPUT);
  pinMode(data_2, OUTPUT);
  pinMode(data_3, OUTPUT);
  pinMode(data_4, OUTPUT);
  pinMode(data_5, OUTPUT);
  pinMode(data_6, OUTPUT);
  pinMode(data_7, OUTPUT);

  pinMode(nAck, INPUT);     // is active LOW
  pinMode(busy, INPUT); 

  pinMode(13, OUTPUT);
  pinMode(14, INPUT);   // analog pin 0 on duemilanove and uno
  digitalWrite(14, HIGH); // enable pull-up
 
  delay(1000);

}

void loop() {
while(digitalRead(14) == HIGH) {}
  printMessage();  // Druckausgabe aktiv
  abschneiden();  // aktiviert cutter
  delay(500);

}

void printByte(byte inByte) {
  while(digitalRead(busy) == HIGH) {
    // wait for busy to go low
  }

  int b0 = bitRead(inByte, 0);
  int b1 = bitRead(inByte, 1);
  int b2 = bitRead(inByte, 2);
  int b3 = bitRead(inByte, 3);
  int b4 = bitRead(inByte, 4);
  int b5 = bitRead(inByte, 5);
  int b6 = bitRead(inByte, 6);
  int b7 = bitRead(inByte, 7);

  digitalWrite(data_0, b0);        // set data bit pins
  digitalWrite(data_1, b1);
  digitalWrite(data_2, b2);
  digitalWrite(data_3, b3);
  digitalWrite(data_4, b4);
  digitalWrite(data_5, b5);
  digitalWrite(data_6, b6);
  digitalWrite(data_7, b7);

  digitalWrite(nStrobe, LOW);       // strobe nStrobe to input data bits
  delayMicroseconds(strobeWait);
  digitalWrite(nStrobe, HIGH);

  while(digitalRead(busy) == HIGH) {
    // wait for busy line to go low
  }
}

void printMessage() {
  digitalWrite(13, HIGH);
  for(int line = 0; line < num_lines; line++) { 
  for(int cursorPosition = 0; cursorPosition < charsPerLine; cursorPosition++) {
      byte character = message[line][cursorPosition];
      printByte(character);
      delay(1);
    }
  }
  digitalWrite(13,LOW);
}

void abschneiden()
{
 // const char schnipp = "\n\r\x1dVB" ;
 // printByte(schnipp);
   
    printByte(10); // new line
    printByte(13); // carriage return
    printByte(10); // new line
    printByte(0x1D); // cut befehl = 29 als Zahl
    printByte('V'); // cut befehl
    printByte(66); // cut befehl    
    printByte(27); // reset printer
 
}
Wegen der SD-karte habe ich nun das hier bestellt, auf China mag ich jetzt nicht warten:
https://www.amazon.de/gp/product/B06XHJTGGC/


Nächste Schritte:
- versuchen mehr Texte einzubinden und einen davon zufällig auszudrucken, wenn der Taster gedrückt wird

Schritte danach:
- SD-Karten Modul verdrahten und Karte einbinden (geht das überhaupt noch, digitale Pins belegt D2-D12?)
-- Texte darauf ablegen und im Code verarbeiten
- Layout für Bons erzeugen (Überschrift, Formatierung)
- ggf. Statistik (Anzahl, Uhrzeit, Datum, etc.)


Wenn das alles klappt, bin ich schon dermaßen zufrieden, dass der Benzinkanister und die Streichhölzer wohl nicht mehr zum Einsatz kommen ;-).

Gruß Pascal
sysconsol
Beiträge: 4059
Registriert: Fr 8. Jul 2016, 17:22

Re: Beschimpfungsdrucker nachbauen?

Beitrag von sysconsol »

Fritzler hat geschrieben: So 7. Jun 2020, 11:40 Meine E-Last kann daher aufn USB Stick loggen
Zum USB-Stift lesen/schreiben dürfte es sogar IC geben, die mit dem µC per RS232 sprechen und auf dem FAT-formatierten USB-Speicher Textdateien erwarten.

Mir dünkt, sowas hat mit mal jemand zugespielt.
Benutzeravatar
Fritzler
Beiträge: 12603
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: Beschimpfungsdrucker nachbauen?

Beitrag von Fritzler »

sysconsol hat geschrieben: Mo 8. Jun 2020, 13:48 Zum USB-Stift lesen/schreiben dürfte es sogar IC geben, die mit dem µC per RS232 sprechen und auf dem FAT-formatierten USB-Speicher Textdateien erwarten.
War glaube son USB Host IC von FTDI.
Aber diese Firma sollte man nach deren Treibergebahren eh nicht mehr verbauen.
sysconsol
Beiträge: 4059
Registriert: Fr 8. Jul 2016, 17:22

Re: Beschimpfungsdrucker nachbauen?

Beitrag von sysconsol »

Fast.
CH376S

Und wer bei Amazon bestellt kann auch FTDI verbauen (gehört aber nicht hier her...).
j.o.e
Beiträge: 552
Registriert: Fr 29. Nov 2019, 01:15

Re: Beschimpfungsdrucker nachbauen?

Beitrag von j.o.e »

Howdy!
Hansele hat geschrieben: So 7. Jun 2020, 21:06 - SD-Karten Modul verdrahten und Karte einbinden (geht das überhaupt noch, digitale Pins belegt D2-D12?)
[/quote

A0 .. A5 sind noch frei?

SD-Karten werden imho per SPI angeschlossen. Das belegt:
MOSI - pin 11 on Arduino Uno
MISO - pin 12
CLK - pin 13
CS - da tuts glaub irgendwas

Mach halt mal eine Aufstellung was womit belegt ist.

Im Notfall: Ein etwas größerer Arduino kostet nich die Welt

Grüße
-J
Zuletzt geändert von j.o.e am Di 9. Jun 2020, 20:00, insgesamt 1-mal geändert.
Benutzeravatar
Fritzler
Beiträge: 12603
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: Beschimpfungsdrucker nachbauen?

Beitrag von Fritzler »

sysconsol hat geschrieben: Mo 8. Jun 2020, 20:44 Fast.
CH376S
Durchaus interessant was die Chinesen da wieder fabrizieren.
sysconsol hat geschrieben: Mo 8. Jun 2020, 20:44 Und wer bei Amazon bestellt kann auch FTDI verbauen
Hatte ich ja eigentlich auch nicht nicht vor :mrgreen:
Oder wo bekomme ich noch nen raaco 8x4 und die Einlagen extra?
Antworten