usb->arduino->lpt ?
- Войдите на сайт для отправки комментариев
Вс, 07/09/2014 - 14:55
Какие варианты?
1.Делаем тестер на светодиодах.
Я накидал такого кода
// art100 to write test pin centronics Blink leads 2-12 void setup() { for(int n=2; n<=12; n++){ pinMode(n, OUTPUT); } } void loop() { for(int n=2; n<=12; n++){ digitalWrite(n, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(n, LOW); // turn the LED off by making the voltage LOW delay(100); // wait for a second } } //================================================================
2.Убедились что ничего не отпалим. Попробуем что-нибудь такое.
// art100 copy other 20140907 code usb->arduino->lpt const int startup_charsPerLine = 80; const int startup_num_lines = 2; byte startup_message[startup_num_lines][startup_charsPerLine] = { "This is the startup message. It prints whenever", "the Arduino is reset.", }; const int charsPerLine = 80; // this is the max # of chars per line const int num_lines = 10; byte message[num_lines][charsPerLine] = { " ", // blank line "This is the normal message. It prints whenever", "you connect pin 14 (analog 0) to GND.", " ", // blank line "------------------------------------------------------------------------------", // a spiffy line "1) More message content", " ", "II) you can have up to about 80 chars per line ", " ", "------------------------------------------------------------------------------", }; // parallel port = arduino //Centronics Connector const int nStrobe = 2;//1 1 nStrobe (input) const int data_0 = 3;//2 2 Data pin 0 (input) const int data_1 = 4;//3 3 Data pin 1 (input) const int data_2 = 5;//4 4 Data pin 2 (input) const int data_3 = 6;//5 5 Data pin 3 (input) const int data_4 = 7;//6 6 Data pin 4 (input) const int data_5 = 8;//7 7 Data pin 5 (input) const int data_6 = 9;//8 8 Data pin 6 (input) const int data_7 = 10;//9 9 Data pin 7 (input) const int nAck = 11;//10 10 nAck (output) const int busy = 12;//11 11 busy (output) //18-25 19-30 Ground (-) const int strobeWait = 2; // microseconds to strobe for //------------------------------------------------------------------------------------------- void setup() { Serial.begin(9600); pinMode(nStrobe, OUTPUT); digitalWrite(nStrobe, HIGH); // is active LOW // 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); digitalWrite(14, HIGH); // analog pin 0 on duemilanove and uno delay(1000); resetPrinter(); printStartupMessage(); resetPrinter(); Serial.println("Delay for 5 sec"); delay(5000); Serial.println("Startup complete"); } //==================================== void loop() { while(digitalRead(14) == HIGH) { // wait } resetPrinter(); printMessage(); resetPrinter(); } //==================================== 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 resetPrinter() { Serial.println("Reseting printer..."); printByte(27); // reset printer printByte('E'); Serial.println("Printer Reset"); } //------------------------------------------------------------------------------------------- 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); } printByte(10); // new line printByte(13); // carriage return } digitalWrite(13,LOW); } //------------------------------------------------------------------------------------------- void printStartupMessage() { Serial.println("Print start-up mssage"); digitalWrite(13, HIGH); for(int line = 0; line < startup_num_lines; line++) { for(int cursorPosition = 0; cursorPosition < startup_charsPerLine; cursorPosition++) { byte character = startup_message[line][cursorPosition]; printByte(character); // delay(1); } printByte(10); // new line printByte(13); // carriage return Serial.print("Line "); Serial.print(line); Serial.println(" printed."); } Serial.println("Startup message printed"); digitalWrite(13,LOW); } //-------------------------------------------------------------------------------------------
Железо в порядке.
Какая должна быть программа чтобы от компьютера печатать? Варианты? Скажем HP LaserJet LPT. Я думаю что привязать драйвер допустим HPLaserJet к COM27 не составляет труда ни у кого. А дальше что зашивать в arduino?
Пните ногой куда дальше копать?
драйвер принтера, который предназначен для работы через LPT порт не может работать через COM порт+ардуина. Варианты:
1. изменить устройство так чтобы ОС его определяла как lpt порт.
2. разработать свой драйвер или просто программу для печати ("блокнот" умеющий работать с вашим устройством и подключённым принтером).
а не проще комовский термопринтер подключить? У меня классно он работает.
http://www.adafruit.com/product/597
Какое-то грустное решение. Все варианты сходятся к usb-atmega8-lpt или другими словами Травить платку искать atmega8 кварц12МГц кандер резисторы пара диодов
Вариант с Кипарисом(cupres) который прошивку каждый раз подгружает перед работой ради скорости странный. Делал я на нем осцилограф и 3Dочки работали ну там скорости всегда мало.
Что-то у меня совсем нет желания кварц12 искать по рынкам. Плату паять и в итоге получить глюкалово юсбишное.
Arduino-ами тут совсем не пахнет. :(
хохма в том что я захотел для технологии РисовалкаPCB->LPT->СвободныйЛазерныйПринтерОтХьюлетта->БумажкуЮтугомКГетинаксуПрижат->ХлорноеЖелезоВВанночке->Какую-нибудь чудо платку вытравить. ЛУТ
А в ардуинах в лучшем случае текст выгоняли.
А графика никак.
Я как старый админ всегда от таких переходников плевался.
Чувствую что надо что-нибудь в духе на PCI-E->CH382->DB25(Lin/Win) за 10-20 баксов к принтеру прикупить и успокоится.
хохма в том что я захотел для технологии РисовалкаPCB->LPT->СвободныйЛазерныйПринтерОтХьюлетта->БумажкуЮтугомКГетинаксуПрижат->ХлорноеЖелезоВВанночке->Какую-нибудь чудо платку вытравить. ЛУТ
А в ардуинах в лучшем случае текст выгоняли.
там где ты скеч спионерил, у них все работает. мотай ниже, там они этот скеч ускорили еще
хохма в том что я захотел для технологии РисовалкаPCB->LPT->СвободныйЛазерныйПринтерОтХьюлетта->БумажкуЮтугомКГетинаксуПрижат->ХлорноеЖелезоВВанночке->Какую-нибудь чудо платку вытравить. ЛУТ
А в ардуинах в лучшем случае текст выгоняли.
там где ты скеч спионерил, у них все работает. мотай ниже, там они этот скеч ускорили еще
не видел
я на arduino.cc что-то выковырял какой-то труп без графики
дай если видел
Только что победил связку Windows7(32бита)->rs232->ПолКилоЖелезаИзПринтераВыкинулНаДурныеДаташитыMAXIM232поплевалсяПоплевалсяcHPдибильныхДебильныхСайтовНалистался->rs232->HPLaserJet4P
Короче Косяки не только в том что на DTR сигналы уже можно забить, но и XON/XOFF у ХьюлеттовПаккардов не гарантирется на стандартных вындо 9600. Вот у меня 57600 работает и все остальные скорости вот такой прикол нет. Можетлюминисцентная лампа так влияла? Еще короче. Не верю ничему. Все сам проверяю. Еще короче фото.
Чего дать то, ты ту тему на arduino.cc дальше прочитай.
щас поищу ссылку там вроде две с кодом были
код от куда брал не нашел
Чувствую что в этой цепочке Win7->HP древний прокалдывай не прокладывай arduino ни чего надежного или быстрого не получить. Ключевые слова
arduino
LPT
Надежно
или Быстро
не получить
Добрый день уважаемые !
Снова LPT порт. Есть принтер LX-300 c LPT портом ,на него надо выводить время и расход газа ежечасно. Мега 2560 выдает в Serial значение часового расхода и день и время.При выводе печать одного байта или одного символа , а не всю строку.
Вы шифруетесь или у вас буквы платные ? Мега выдает в Serial, принтер с LPT, ничего важного не пропустили ?
Спасибо ,что не пропустили.
Подскажите пожалуйста как реализовать печать русских символов на принтер Epson LX-300 c ардуины.
как реализовать печать русских символов на принтер Epson LX-300 c ардуины.
А зачем?
Ну если уж очень надо, перекодируй CP1251 в CP866 и отправляй в свой принтер. Только помни, что он печатать ничего не будет, пока в выводимой последовательности не встретится CR+LF. Если эти аббревиатуры тебе ни о чём не говорят, забей, поручи дело программисту.
При выводе печать одного байта или одного символа , а не всю строку.
Принтер не печатная машинка, он так не умеет. Некоторые вообще ничего не печатают, пока FF (это не HEX, а управляющий символ так называеца) не придет, тогда только выводят всё из буфера, что накопили.
Спасибо за совет.
У LX300 ещё и RS232 есть для экономии пинов. Но печатает построчно, в любом случае.
Добрый День.
Спасибо за интерес к моему вопросу.Хочу сделать кабель COM-LPT с ардуинкой внутри залить скетч.Этот скетч с кабелем будет выводить строку.
В 22 не нагляднее ли пины вписать?
41-42, 84-85 поменять местами.
103 удалить.
не пойму, зачем тут Нано, наерна, чтоб патрахаца? Замени ее на мамку с 4 пнём с авито, они счас как 2 Наны стоют и на них на всех LPT уже есть, и подключай свою Мегу к ней. Там и дрова на принтер есть и сериал порт нормальный и печатать сможешь без бубна.
Спасибо за конструктив.