Programm ausführen -> Wird nicht aufgerufen

2015-04-02
2015-04-04
  • ColonelWastl - 2015-04-02

    Hallo Leute,

    ich habe die anderen Beiträge zum Ausführen von Linux-Befehlen am Raspberry alle durchgelesen.
    Ich denke auch dass ich die Einstellungen alle richtig habe.

    Was habe ich bereits gemacht:

    Eintrag in der /etc/CODESYSControl.cfg

    [SysProcess]
    Command=AllowAll
    Command.0=codesys_ping

    Installierte Bibliotheken

    SysProcess 3.5.5.0 (System)

    InCodesys:

    IF PingButton THEN
    SysProcess._('codesys_ping', ADR(Result));
    PingButton:=FALSE;
    END_IF

    Wenn ich das Script per Putty ausführe (also einfach nur codesys_ping eingeben) funktioniert es einwandfrei.
    Das Script ist mit chmod 0777 hinterlegt.

    Mein Programm zum Anpingen rufe ich über einen eingenen Task auf (20ms).

    Als Result erhalte ich immer 25.

    Woran kann das noch liegen?

    ps: ich habe das Raspi auch schonmal neu gestartet.

    Gruß
    ColonelWastl

     
  • eschwellinger

    eschwellinger - 2015-04-02

    Hi,

    bitte schau nochmal in die CODESYSControl.cfg

    da ist (eher versehentlich) von uns (3S) schon eine Sektion
    [SysProcess]
    weiter oben in dem File... wenn du nun unten am Ende noch eine Sektion anlegst... hilft des nix
    Also prüfe das bitte mal ...
    und 2. kopiere dein script codesys_ping nach /usr/bin/

    Grüße
    Edwin

     
  • ColonelWastl - 2015-04-02

    Ich versteh dich jetzt nicht genau?

    Das Script habe ich unter /usr/bin hinterlegt.

    Was meinst du mit Sektion?

    Wenn du meinst dass ich unten in die Codesyscontrol.cfg nochmals ein SysProcess hinzugefügt habe, muss ich das verneinen.

    Ich habe den bereits vorhandenen Eintrag verwendet.

    also:
    .
    .
    .
    [_]
    Linux.DisableFpuOverflowException=1
    Linux.DisableFpuUnderflowException=1
    Linux.DisableFpuInvalidOperationException=1

    [SysProcess]
    Command=AllowAll
    Command.0=codesys_ping

    .
    .
    .

    Gruß
    Colonel

     
  • eschwellinger

    eschwellinger - 2015-04-02

    Hi,

    dann müsste es passen...
    schau mal was in /tmp/codesyscontrol.log steht.

    cat /tmp/codesyscontrol.log

    nachdem du mehrmals das script über CODESYS aufgerufen hast.

    mach doch mal einen einfachen 'ls' in CODESYS... statt deines scriptes da müsste man im log das ausführen des ls commandos sehen.

    Was steht genau in codesys_ping ?

    Grüße
    Edwin

     
  • ColonelWastl - 2015-04-02

    hmm...

    wenn ich jetzt:

    IF PingButton THEN
    SysProcess._('ls', ADR(Result));
    PingButton:=FALSE;
    waittime:=waittime+1;
    END_IF

    als Befehl übergebe, den waittimer habe ich mal eingebaut damit ich auch sehe dass es von der Funktion her passt, dann bekomme ich als Result wieder 25.

    der Befehl cat /tmp/codesyscontrol.log gibt keinen rückgabewert.
    Die Datei hat auch die größe 0 Byte, und ist leer.

    Als ob der Befehl überhaupt nicht angenommen wird.

    In meinem "script" steht folgendes:

    #!/bin/bash

    # Pro Programmaufruf (Scriptaufruf) wird ein ping gesendet.
    ping -c 1 10.10.10.99 > /home/pi/cmdresults/ping.txt

     
  • eschwellinger

    eschwellinger - 2015-04-03

    Hi,

    das Problem ist, das man keinen '>' in den commandos verwenden darf nur einzelne Befehle...
    ein Ping alleine wird funktionieren.
    Musst du unbedingt das Ergebnis in einer Datei haben?
    Grüße
    Edwin

     
  • ColonelWastl - 2015-04-04

    Also ich brauche die Ping Antwort nicht unbedingt in einer Datei.

    Was ich auswerten will ist letztendlich ob der Partner den ich anpinge da ist oder nicht.
    Und dementsprechend möchte ich dann dem Raspberry den Befehl "poweroff" übergeben.

    Nur leider akzeptiert das Raspi bei mir keine Eingaben. Weder "ls" noch "mkdir" etc... habe mal ein paar Befehle probiert.
    Als Rückgabewert erhalte ich immer die 25. Das logfile unter tmp bleibt leider auch leer.

    Irgendwo ist hier noch der wurm drin.

    ps: Am raspi selbst funktioniert der Befehl einwandfrei.

    Gruß
    Wastl

    pss: Mir ist gerade noch was eingefallen... Ich habe das passwort für den root user geändert. Kann es evtl daran noch liegen?

    Anmerkung:

    Habe das selbe jetzt nochmals auf einem anderen Raspi, einem Raspberry Pi 2 getestet.
    Nach einem Neustart (also nach der Änderung in der CODESYSCONTROL.cfg) funktioniert hier die Befehlseingabe.

    -> Und NUN funktioniert es auch am alten Raspi b+!

    Für alle anderen mit den Befehlseingabeproblemen -> nach einer Änderung in der CODESYSCONTROL.cfg sollte man einen neustart durchfürhen!

     
  • KlS - 2015-04-04

    Moin


    Init_ttyUSB0:
        SysProcess._('stty -F /dev/ttyUSB0 115200 cs8', ADR(Result));
        xTTY_akt := TRUE;
    
    Pos_5555:
        SysProcess._('echo "mc_pos 5555\r\n" > /dev/ttyUSB0', ADR(Result));
    
    Pos_n5555:
        SysProcess._('echo "mc_pos -5555\r\n" > /dev/ttyUSB0', ADR(Result));
    
    Pos_x:
        h_str := concat('echo "mc_pos ',INT_TO_STRING(xPos));
        h_str := concat(h_str,'\r\n" > /dev/ttyUSB0'); 
        SysProcess._(h_str, ADR(Result));
    

    // e ttt@ttt.de e geht nich
    // ftp_upload_str := 'ftp-upload -h 172.18.200.19 -u anonymous --password e ttt@ttt.de e -d /array1/CE/Daten/RPI/ ';
    ftp_upload_str := 'ftp-upload -h 172.18.200.19 -u anonymous --password ttt_ttt.de -d /array1/CE/Daten/RPI/ ';
    ftp_upload_str := concat(ftp_upload_str, sFileNameCopy);
    // klappt nich ftp_upload_str := concat(ftp_upload_str, ' &');


    klappt nur mit @ und dem & hatte ich Probleme.
    Aber @ brauchte ich im Passwort nicht und & dank anderem Task auch nicht.
    Man muß halt mit ' und " arbeiten.

    bis dann
    Klaus

     

Log in to post a comment.