Re: Download Tool Kategorie: Verschiedenes (von Thomas, http://www.tho-bai.de - 7.03.2004 12:24) | ||
Als Antwort auf Re: Download Tool von Markus A. - 6.03.2004 21:19 | ||
| ||
Habe dein Programm leider noch nicht ausprobiert. Der Compiler bringt gleich nen ganzen Wust an Fehlern und ich hatte noch keine Lust das auszubessern. Hab mein Programm jetzt einfach so geändert, dass die Konstantenbytes als 1 Byte übertragen werden. Somit hört die �bertragung auch richtig auf. Das übertragene Programm funktioniert jedoch leider nicht. Die CC2 zeigt "QUIT VMC" und "Q -1" an. Wei�t du woran das liegen könnte. Ich mache die �bertragung prinzipiell genau wie du, nur dass ich unsigned Variablen benutzte. Hier mein jetziger Quellcode. Wär nett wenn du ihn dir mal kurz anschaust und guckst wo mein Fehler liegt. Kannst ihn dir auch unter http://www.tho-bai.de/info/programme/cc2dl.cpp angucken, da haste dann wenigstens die ganzen Einrückungen... #include #include #include #include #include #include #include #include int open_port(char *device) { int fd; struct termios *current; struct termios options; fd = open(device, O_RDWR | O_NOCTTY); if (fd == -1) return -1; bzero(&options, sizeof(options)); tcgetattr(fd, &options); options.c_cflag = B19200 | CRTSCTS | CS8 | CLOCAL | CREAD; options.c_iflag = IGNPAR; options.c_oflag = 0; options.c_lflag = 0; tcflush(fd, TCIFLUSH); tcsetattr(fd, TCSANOW, &options); return (fd); } void getecho(int fd, int data) { unsigned char buf[2]; unsigned char cbuf = 0; int ibuf; read(fd, &cbuf, 1); buf[0] = cbuf; buf[1] = ' '; ibuf = (int) cbuf; printf("echo: %in", ibuf); if(data!=ibuf) { printf("Falsches echo!!!n"); exit(1); } } int getdata(int fd, unsigned char* &buf) { int unsigned ch = 0; int i = 0; buf[0] = ' '; while(read(fd, &ch, sizeof(char)) > 0) { if((ch == 'n') && (buf==(unsigned char*) "")) { printf("zeilenumburchn"); buf[0] = ' '; i = 0; ch = 0; } else if((ch == 32) || (ch == 'n') && (i != 0)) { printf("getdata: %sn", buf); return 1; } else { buf[i] = ch; ch = 0; i++; buf[i] = ' '; printf("."); } } printf("file endnn"); return -1; } void sendbytewise(int fd, unsigned char value, int bytes) { if(bytes>0) { int i = (int) value; printf("send %in", i); write(fd, &value, 1); usleep(5000); getecho(fd, i); bytes--; value = (value/256)%256; sendbytewise(fd, value, bytes); } } int sendprog(char *filen, int sfd) { char CMD_ID = 0x01; char CMD_LOAD = 0x04; char CMD_ERASE_VMC = 0x06; char CMD_RESET = 255; //write(sfd, &CMD_RESET, 1); int fd, i = 0; long int length, length2; unsigned int ch; unsigned int chint; unsigned char ibuf; unsigned char *buf; buf = (unsigned char *) malloc(255); fd = open(filen, O_RDONLY); //open file if (fd == -1) { fprintf(stderr, "Unable to open %sn",filen); return -1; } //1. Zeile mit CC2VMC auslesen getdata(fd, buf); printf("Format: %sn", buf); //Laenge der konstanten Bytes auslesen getdata(fd, buf); length = atoi((const char*) buf); //Laenge der VMC-Worte auslesen getdata(fd, buf); length2 = atoi((const char*) buf); //VMC loeschen printf("erase vmcn"); write(sfd, &CMD_ERASE_VMC, 1); //echo auslesen getecho(sfd, 6); //2500ms warten usleep(2500000); //Laden des VMC-Codes einleiten write(sfd, &CMD_LOAD, 1); //500ms warten usleep(500000); printf("konstante bytes: %in", length); printf("VMC-Worte: %in", length2); char constants = length%256; char vmc = length2%256; sendbytewise(sfd, constants, 4); sendbytewise(sfd, vmc, 4); i=0; while((i getdata(fd, buf); ch = atoi((const char*) buf); ibuf = ch%256; printf("%imodulo256 = %in", ch, ibuf); sendbytewise(sfd, ibuf, 1); i++; } printf("________end of constants____________n"); while((getdata(fd, buf)==1)) { ch = atoi((const char*) buf); ibuf = ch%256; printf("%imodulo256 = %in", ch, ibuf); sendbytewise(sfd, ibuf, 2); i++; } write(sfd, &CMD_RESET, 1); return 1; } int main(int argc, char* argv[]) { if(argc!=2) { printf("Ungültige Parameteranzahl - cc2dl filen"); exit(1); } //Stream zu /dev/ttyS0 oeffnen int comport = open_port("/dev/ttyS0"); sendprog(argv[1], comport); } Gru� Thomas Meine Seite: http://www.tho-bai.de | ||
Antwort schreiben Antworten: Re: Download Tool (von Thomas - 7.03.2004 14:30) Re: Download Tool (von Markus A. - 7.03.2004 18:02) Re: Download Tool (von Thomas - 7.03.2004 22:23) Re: Download Tool (von Markus A. - 8.03.2004 0:03) Re: Download Tool (von Thomas - 8.03.2004 0:50) |