Wie checke ich eine Configurationsliste aus



  • Hallo,
    ich habe ein kleines Problem.
    Ich möchte so einfach wie möglich in C eine Liste von Configurationsdaten(Hex geschrieben) testen
    Die Funktion ist wie folgt:
    /***************************************************************************************
    * FUNCTION : boolean DP_CheckCFG()
    *
    *
    *
    * PARAMETER(IN) : cfgtgm, Zeiger auf das aktuelle Konfiguriertelegramm
    * und cfglen, Länge des Telegramms
    *
    * RETURN(OUT) : true wenn Cfgtelegramm eines der unterstützten ist, Andernfalls False
    *
    DESCRIPTION : Überprüfung des Cfg Telegrams
    * wobei folgende akzeptiert werden müssen:
    * 1- 0xf3, n
    (0xc0, 0x00, 0x00)
    * 2- 0xf3, 0xc0, n-1, n-1
    * 4- 0xc0, n-1, n-1
    *
    ******************************************************************************************/
    Boolean DP_CheckCFG(unsigned char * cfgtgm, unsigned char cfglen)
    {
    unsigned char n;
    if(n<=0 || n>=32)
    return FALSE;
    else{
    WIE kann ich weiter verfahren????}

    Ich glaube, daß auflisten von alle Daten wurde sehr aufwendig einerseits und ausserdem ich weiß nicht wie man Hex Zahl aufmultipliziere.

    Danke für eure hilfe
    Gruß 😉



  • @susenad1, so ganz verstehe ich zwar deine Frage nicht. Hexadezimal-Zahlen multiplizieren kann man aber so:

    ...
    int i[3];
    char cMsg[] = "0xA0 0x4F 0xFF";  
    sscanf( cMsg, "%x %x %x", &i[0], &i[1], &i[2] );
    return i[0] * i[1] * i[2];
    ...
    


  • Hallo,
    Danke für die Meldung.
    Hier nochmal das Problem.
    Wie man Hex multiplieziere weiss ich ja.
    Es geht nämlich darum, ich habe eine Menge von Telegramsdaten
    Z.B
    0xf3, n* (0xc0, 0x00, 0x00) oder
    0xf3, 0xc0, n-1, n-1 oder
    0xc0, n-1, n-1, wobei n max 31 sein kann

    Das heisst für n = 2 habe ich:
    im ersten Fall : 0xf3, 0xc0, 0x00, 0x00, 0xc0, 0x00, 0x00
    im zweiten Fall : 0xf3, 0xc0, 0x01,0x01
    und im dritten Fall : 0xc0, 0x01,0x01
    Wie kann ich für beliebige n eine Anfrage auf überprüfung eines Telegrams stellen, wobei wenn ein Telegram aus der Liste ist mit TRUE beanwortet ist und andersfall mit FALSE.
    Die erstellung einer Liste mit alle Möglichkeit scheint lang und mühsam zu sein.
    Ich möchte aber wissen, ob es eine andere Möglichkeit geben kann.
    Danke und Gruß 😞


Anmelden zum Antworten