Wer Druckt, druckt Mist :P

  • Wer Druckt, druckt Mist :P

    Hallo,

    ich habe folgenden C-Code (ganz frech geklaut aus der Newsgroup :P) :

    C Source Code

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. #include <string.h>
    4. #include <conio.h>
    5. #include <ctype.h>
    6. #include <fcntl.h>
    7. #include <dbg.h>
    8. #include <cbm.h>
    9. #define F_PRT 4 // logical FileNr Printer
    10. #define P_DVN 4 // Device Nr Printer
    11. typedef unsigned char BYTE;
    12. extern BYTE _oserror;
    13. void waitKey(void){
    14. cprintf("\r\n... weiter mit Taste ...\r\n\n");
    15. cgetc();
    16. }
    17. void DispError(int rc,char *s){
    18. cprintf("\r\n%d:%s\r\n",rc,s);
    19. cprintf("OS-error code %d\r\n",_oserror);
    20. waitKey();
    21. }
    22. int OpenPrinter(void){
    23. BYTE rc;
    24. rc=cbm_open((BYTE)F_PRT,(BYTE)P_DVN,(BYTE)1,NULL);
    25. if(rc){
    26. DispError(rc,"Open-Fehler Printer");
    27. return 1;
    28. }
    29. return 0;
    30. }
    31. void Print(char *s){
    32. BYTE rc;
    33. rc=cbm_write((BYTE)F_PRT,s,strlen(s));
    34. if(rc!=strlen(s)) DispError(rc,"Fehler beim Drucken");
    35. }
    36. void PrintNl(char *s){
    37. Print(s);
    38. Print("\r\n");
    39. }
    40. void PrintText (void){
    41. int i;
    42. if(OpenPrinter())return;
    43. PrintNl("Hallo.");
    44. cbm_close(F_PRT);
    45. }
    46. void main(void)
    47. {
    48. PrintText();
    49. }
    Show All


    Was ist versuche ist,
    auf meinem StarLC10 C Farbdrucker das Hallo. auszudrucken.

    Was herauskommt ist folgendes:
    datenmuellkippe.tbspace.de/printshit.jpg

    Kann mir jemand sagen, wo dran das liegt?

    Ein einfaches BASIC- open 3,4,7,"Hallo":close3 funktioniert gut

    Danke,
    Tobias
  • also ich sehe das er ein borblem mit ascii/petscii hat, die kleinbuchstanebn groß gedruckt und die großbuchstaben als grafikzeichen, so bin ich es aber gewohnt, deswegen arbeite ich nur großbuchstaben.

    von C hab ich keine ahnung XD
  • Kannst Du mal versuchen, bei dem C-Programm auch die Sekundäradresse 7 anzugeben?

    Vielleicht hat 1 ja eine spezielle Funktion? Ist bei verschiedenen Adaptern unterschiedlich geregelt.

    Gruß Dirk
    gesendet über Robotron Lochbandtechnik mit A 5120
  • Manawyrm wrote:

    rc=cbm_open((BYTE)F_PRT,(BYTE)P_DVN,(BYTE)1,NULL);

    Damit öffnest du nicht nur wie schon angemerkt den Drucker mit Sekundäradresse 1 sondern gibst auch noch als Namen (und damit auszudruckende Zeichen) das weiter, was gerade ab Adresse 0 im Speicher liegt bis zum ersten Byte mit Wert 0.

    Source Code

    1. 10 x=rnd(-1963):fori=1to81:y=rnd(1):next
    2. 20 forj=1to5:printchr$(rnd(1)*16+70);:next
    3. 30 printint(rnd(1)*328)-217

    sd2iec Homepage
  • Users Online 1

    1 Guest