Trafiło mi się napisanie malutkiego programu drukującego paragony na drukarce Innova Profit. Ze strony producenta pozyskałem instrukcję programisty (gdyby ktoś chciał rzucić okiem to proszę:
http://www.innova-sa.pl/innova/images/upload/Instrukcja%20programisty%20-%20INNOVA%20PROFIT.pdf, trochę poczytałem i zabrałem się za pisanie. (mam drukarkę na czas pisania),(nie robiłem tego wcześniej).
Na początku postanowiłem wydrukować jakiś przykładowy paragon, żeby sprawdzić czy wszystko ze sobą gada.
Zgodnie z instrukcjami posłałem na port takie coś:
s:= Chr($1B) + Chr($50) +'0'$h1$lNAZWA TOWARU<CR>1<CR>B/1.30/1.30/'+'1;0$e001<CR>110.80/110.80/';
//poniżej liczę sumę kontrolną zgodnie z instrukcjami. Wzór znalazłem też w niektórych źródłach w sieci. Generalnie syntaktyka rozkazów jest chyba taka sama lub podobna do posnetu ze tego co zauważyłem.
begin
check := 255;
for i:= 3 to length(s) do
check := check xor byte(s[i]);
result:=byte_to_hex(check); //oczywiście mam wcześniej w kodzie zadeklarowane check, result itd
end;
s:= s+result +Chr($1B) + '\';
serialportng1.sendstring(s); // do komunikacji z urządzeniem używam serialportng
Program się kompiluje bezbłędnie, sygnał na port jest wysyłany (sprawdzałem port monitorem) i dochodzi do drukarki, ale na wyświetlaczu urządzenia pojawia się komunikat BŁĄD ROZKAZU: $h
Nie mam pojęcia co tu jest nie tak. $h jest wpisane zgodnie z instrukcjami programisty. Jest to sekwencja otwierająca transakcję. Próbowałem na różne sposoby. Usunąłem nawet $h, to z kolei błąd pojawił się na $l .
Drukarka podłączona jest do laptopa poprzez port usb. Jest sprawna w 100%.
Czy ktoś mógłby mi coś podpowiedzieć w tej sytuacji? Dalej sobie ze wszystkim poradzę, ale drukarka musi zachcieć gadać z moim programem.