Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Download Tool Kategorie: Verschiedenes (von Thomas, http://www.tho-bai.de - 4.03.2004 22:16)
Als Antwort auf Re: Download Tool von Markus A. - 4.03.2004 11:47
Ich nutze:
C-Control II Unit, CC2-Application-Board
Also mit dem Tcl-Skript bin ich leider immer noch nicht weiter gekommen, auch nicht mit
puts -nonewline [binary format i1 $data]. Habe auch schon fcopy für die Programmbytes
ausprobiert und nur die Längen einzeln geschickt. Hat bis jetzt alles noch nicht
funktioniert.
Dafür habe ich einen C-Quellcode eines Downloadprogs für die CC1 gefunden und für die CC2
umgeschrieben. Dabei gibt es jedoch noch Probleme, da die Werte im VMC-Code teilweise zu
gro� für char sind. Das Programm tut asonsten genau dasselbe, wie das TCL-Skript. Es
erscheint erst "ERAS VMC" und anschlieÃ?end "LOAD VMC" im Display. Wobei "LOAD VMC"
nach beenden des Programms immer noch im Display steht.

Eine weitere Möglichkeit unser Problem zu lösen, wäre, wenn wir gucken könnten, was genau
das Download-Tool von Andre oder Conrad überträgt. D.h. wir bräuchten einen Sniffer für
den Comport. Ich habe leider aber noch keinen brauchbaren gefunden. Vielleicht kennst du
ja einen (für Linux oder Windows, egal).

Hier erstmal der C-Quellcode:

#include   /* Standard input/output definitions */
#include
#include
#include  /* String function definitions */
#include  /* UNIX standard function definitions */
#include   /* File control definitions */
#include   /* Error number definitions */
#include /* POSIX terminal control definitions */
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);
}
int sendprog(char *filen, int sfd)
{
char CMD_ID = 0x01;
char CMD_LOAD = 0x04;
char CMD_ERASE_VMC = 0x06;
    int fd, i = 0;
    long int length, length2;
    char ch;
    char *buf;
    buf = (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
    while(ch != 'n')
    {
read(fd, &ch, sizeof(char));
        buf[i] = ch;
        i++;
    }
    buf[i] = '';
    printf("Format: %s", buf);

    i = 0;
    ch = 0;
    buf[i] = '';
    //Länge der konstanten Bytes auslesen
    while(ch != 'n')
    {
read(fd, &ch, sizeof(char));
        buf[i] = ch;
i++;
        buf[i] = '';
    }
    length = atoi(buf);
    i = 0;
    ch = 0;
    buf[i] = '';
    //Länge der VMC-Worte auslesen
    while(ch != 'n')
    {
read(fd, &ch, sizeof(char));
        buf[i] = ch;
i++;
        buf[i] = '';
    }
    length2 = atoi(buf);


    //VMC löschen
write(sfd, &CMD_ERASE_VMC, 1);
//2500ms warten
usleep(2500000);
//Laden des VMC-Codes einleiten
write(sfd, &CMD_LOAD, 1);
usleep(500000);

    printf("konstante bytes: %in", length);
    printf("VMC-Worte: %in", length);
    //length = htons(length);
    write(sfd, &length, sizeof(long int));
    read(sfd, &buf, sizeof(char));
    buf[5]='';
    printf("echo: %sn", buf);
    write(sfd, &length2, sizeof(long int));
    buf[0] = '';
    i = 0;
    ch = 1;

    //send program
    while(read(fd, &ch, sizeof(char)) > 0)
    {
        if(ch == 32)
        {
   ch = atoi(buf);
            printf("%dn", ch);
   write(sfd, &ch, sizeof(char));
   ch = 0;

   i = 0;
   buf[i] = '';
        } else {
buf[i] = ch;
ch = 0;
i++;
buf[i] = '';
        }
        printf("loopn", ch);
    }
    return 0;
}

int main()
{
//Stream zu /dev/ttyS0 öffnen
int comport = open_port("/dev/ttyS0");
sendprog("melody.c2p.vmc", comport);
}

Hoffe wir kommen bald weiter

GruÃ?

Thomas

Meine Seite: http://www.tho-bai.de


    Antwort schreiben


Antworten:

Re: Download Tool (von Markus A. - 5.03.2004 13:37)
    Re: Download Tool (von Thomas - 6.03.2004 15:58)
        Re: Download Tool (von Markus A. - 6.03.2004 21:19)
            Re: Download Tool (von n4x - 7.03.2004 16:52)
                Re: Download Tool (von Markus A. - 7.03.2004 18:04)
                    Re: Download Tool (von n4x - 7.03.2004 22:15)
                       Re: Download Tool (von Markus A. - 8.03.2004 0:01)
            Re: Download Tool (von Thomas - 7.03.2004 12:24)
                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)