Pico C Skript Problem

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Frense
    Azubi
    • 19.03.2020
    • 5

    #1

    Pico C Skript Problem

    Guten Tag,

    ich probiere mit dem folgenden Skript ein "+" durch ein Leerzeichen zu ersetzen wenn ich Input 1 auf "1" setzte. Funktioniert soweit auch ausser der Textinput behält seinen vorherigen Text bzw es wird der gleiche Text empfangen. Hat jemand einen Tipp?

    Danke und Gruß

    Code:
    
    
    #define BUFF_SIZE 256
    
    char text[BUFF_SIZE];
    
    int nEvents,input1;
    
    int i;
    
    
    
    
    while (TRUE)
    
    {
    
    nEvents = getinputevent();
    
    if (nEvents)
    
    {
    
    sleep(1); // kurze Verzögerung damit nicht der vorherige Text ausgegeben wird. sleep(1) reicht auch
    
    input1 = getinput(0);
    
    if (input1 == 1)
    
    {
    
    text = getinputtext(0);
    
    
    
    
    for (i = 0; i < strlen(text); ++i)
    
    {
    
    if (text[i] == '+')
    
    {
    
    text[i] = ' ';
    
    }
    
    }
    
    setoutputtext(0,text);
    
    }
    
    }
    
    sleep(100);
    
    }
  • Labmaster
    Lox Guru
    • 20.01.2017
    • 2718

    #2
    Du solltest zusammen mit dem Logic Input "getinput(0)" auch immer den Textinput "getinputtext(0)" mit abfragen, da falls im Fall von getinput(0) == 0 ansonsten der text nicht geupdatet wird obwohl er sich am Eingang geändert haben kann.
    BTW: mit getinputevent() werden alle Flags gelöscht und sind somit in einem folgenden Durchlauf mit getinputevent() nicht mehr vorhanden.

    Ich würde auch immer explizit im "if (nEvents)" auf die jeweils notwendigen (und nicht auf alle events) prüfen um zu entscheiden was passieren soll.

    z.B. so

    while (TRUE){
    nEvents = getinputevent();
    if (nEvents & 0x09){ // nur auf getinput(0) und getinputtext(0) Events prüfen
    // wenn eines von beiden sich also geändert hat, dann beides einlesen
    input1 = getinput(0);
    text = getinputtext(0);
    // wenn dabei auch getinput(0) auf 1 gegangen ist, dann text modifizieren
    if (input1 == 1){
    for (i = 0; i < strlen(text); ++i){
    if (text[i] == '+'){
    text[i] = ' ';
    }
    }
    }
    // in jedem fall immer den neuen text ausgeben
    setoutputtext(0,text);
    }
    sleep(100);
    }
    Zuletzt geändert von Labmaster; In den letzten 4 Wochen.

    Kommentar

    Lädt...