Seite 2 von 8 ErsteErste 12345678 LetzteLetzte
Ergebnis 16 bis 30 von 114
  1. #16
    Landix ist offline Eroberer
    registriert
    03-05-2017
    Beiträge
    59

    AW: Python to Javascript

    Oder geht das viel leichter?

    Code:
    var PythonShell = require('python-shell');
    var pyshell = new PythonShell('7powerTX.py');
    
    pyshell.on('message', function (message) {
      // received a message sent from the Python script (a simple "print" statement)
      console.log(message);
    });
    
    var power_meter = require('./power-meter');
    var pm = new power_meter.PowerMeter();
    
    function a() {
      var power_instant = message; // nur der Power Wert
    //  var cadence = RPM={}".format(int(RPM+1));
      pm.broadcast(power_instant/*, cadence*/); //cadence mal raus genommen.
      setTimeout(a, 249);
    }
    
    a();
    -- Schön wie sich das überschneidet Ich probier nachher mal danke schon mal.
    Geändert von Landix (03-05-2017 um 14:06 Uhr) Grund: Überschnitten

  2. #17
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.667

    AW: Python to Javascript

    in der callback function
    Code:
    function (message) {
      // received a message sent from the Python script (a simple "print" statement)
      console.log(message);
    }
    musst du dann die werte weiterverarbeiten
    da muss also das aus deiner funktion a rein

  3. #18
    Landix ist offline Eroberer
    registriert
    03-05-2017
    Beiträge
    59

    AW: Python to Javascript

    Also für nur Power wäre das dann:

    Code:
    var PythonShell = require('python-shell');
    var pyshell = new PythonShell('7powerTX.py');
    var power_meter = require('./power-meter');
    var pm = new power_meter.PowerMeter();
    
    pyshell.on('message', function (message) {
      // received a message sent from the Python script (a simple "print" statement)
      //  console.log(message);
    
      var power_instant = message;
      pm.broadcast(power_instant);
      setTimeout(a, 249);
    })
    message();
    Geändert von Landix (03-05-2017 um 14:23 Uhr) Grund: Klammer vergessen

  4. #19
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.667

    AW: Python to Javascript

    ohne setTimeout(a, 249);
    du musst außerdem sicherstellen, dass in dem python script außer den werten nichts nach stdout ausgegeben wird

  5. #20
    Landix ist offline Eroberer
    registriert
    03-05-2017
    Beiträge
    59

    AW: Python to Javascript

    Das bekomme ich hin. Danke.

    - - - Aktualisiert - - -

    nur noch ein Syntax Fehler:,
    Code:
    pi@carcam:~/ant-cycling-power $ node test.js
    /home/pi/ant-cycling-power/test.js:13
    message();
    ^
    
    ReferenceError: message is not defined
        at Object.<anonymous> (/home/pi/ant-cycling-power/test.js:13:1)
        at Module._compile (module.js:570:32)
        at Object.Module._extensions..js (module.js:579:10)
        at Module.load (module.js:487:32)
        at tryModuleLoad (module.js:446:12)
        at Function.Module._load (module.js:438:3)
        at Module.runMain (module.js:604:10)
        at run (bootstrap_node.js:393:7)
        at startup (bootstrap_node.js:150:9)
        at bootstrap_node.js:508:3
    Mein code:

    Code:
    var PythonShell = require('python-shell');
    var pyshell = new PythonShell('8powerx.py');
    var power_meter = require('./power-meter');
    var pm = new power_meter.PowerMeter();
    
    pyshell.on('message', function (message) {
      // received a message sent from the Python script (a simple "print" statement)
      //  console.log(message);
    
      var power_instant = message;
      pm.broadcast(power_instant);
    })
    message();

  6. #21
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.667

    AW: Python to Javascript

    Zitat Zitat von Landix Beitrag anzeigen
    nur noch ein Syntax Fehler:,
    [CODE]pi@carcam:~/ant-cycling-power $ node test.js
    /home/pi/ant-cycling-power/test.js:13
    message();
    ^
    message ist keine funktion, sondern ein parameter eines callbacks.
    das callback wird automatisch aufgerufen, wenn das pythonscript etwas auf stdout schreibt

  7. #22
    Landix ist offline Eroberer
    registriert
    03-05-2017
    Beiträge
    59

    AW: Python to Javascript

    Zitat Zitat von tsseh Beitrag anzeigen
    message ist keine funktion, sondern ein parameter eines callbacks.
    das callback wird automatisch aufgerufen, wenn das pythonscript etwas auf stdout schreibt
    Ich bekomme leider kein broadcast:
    Code:
    pi@carcam:~/ant-cycling-power $ node test.js
    startup
    Max channels: 8
    cycling power meter initialized
    
    *jetzt sollten eigentlich die Werte übertragen werden kommt aber nix
    Oder muss ich hier noch was machen?:

    Code:
    var Ant = require('ant-plus');
    
    var PowerMeter = function() {
      var stick = new Ant.GarminStick3;
      var channel = 1;
      if (!stick.is_present()) {
        stick = new Ant.GarminStick2;
      }
    
      stick.on('startup', function () {
        console.log('startup');
        console.log('Max channels:', stick.maxChannels);
        // 0xCAFFEDOOD
        var deviceId = 0xBEEF;
        stick.write(Ant.Messages.assignChannel(channel, 'transmit'));
        // The device type shall be set to 11 (0x0B) when searching to pair to an ANT+ bike power sensor
        // The transmitting sensor contains a 16-bit number that uniquely identifies its
        // transmissions. Set the Device Number parameter to zero to allow wildcard
        // matching. Once the device number is learned, the receiving device should
        // remember the number for future searches.
        // Device number set to 1 here
        stick.write(Ant.Messages.setDevice(channel, deviceId, 11, 1));
        // RF Channel 57 (2457 MHz) is used for the ANT+ bike power sensor.
        stick.write(Ant.Messages.setFrequency(channel, 57));
        // Channel period Data is transmitted from most bike power sensors every 8182/32768 seconds
        // (approximately 4.00 Hz). This channel period shall be used by default.
        stick.write(Ant.Messages.setPeriod(channel, 8182));
        stick.write(Ant.Messages.openChannel(channel));
        console.log('cycling power meter initialized');
      });
    
      stick.on('shutdown', function () { console.log('ANT+ shutdown'); });
    
      if (!stick.open()) {
      	console.log('ANT+ USB stick not found!');
      }
    
      this.stick = stick;
      this.channel = channel;
      this.power_event_count = 0;
      this.power_accumulated = 0;
    
    };
    
    PowerMeter.prototype.broadcast = function(power, cadence) {
      if (!this.stick.is_present()) {
        return;
      }
    
      var data = [];
      data.push(this.channel);
      data.push(0x10); // power only
      this.power_event_count++;
      this.power_event_count = this.power_event_count % 255; // rollover 255
      data.push(this.power_event_count);
      data.push(0xFF); // pedal power not-used
      data.push(cadence); // cadence
      this.power_accumulated += power;
      this.power_accumulated = this.power_accumulated % 65536;
      console.log("Event: %s \t Power: %sw \t Cadence: %srpm", this.power_event_count, power, cadence);
    
      data = data.concat(Ant.Messages.intToLEHexArray(this.power_accumulated, 2));
      data = data.concat(Ant.Messages.intToLEHexArray(power, 2));
      this.stick.write(Ant.Messages.buildMessage(data, 0x4E)); //ANT_BROADCAST_DATA
    };
    
    module.exports.PowerMeter = PowerMeter;
    ^^das ist das powermeter script

    Mein PythonScript alleine macht diese Ausgabe:
    Code:
    pi@carcam:~/ant-cycling-power $ ./8powerx.py
    0
    0
    0
    0
    0
    0
    0
    117
    145
    Eigentlich sollte so eine Ausgabe kommen:

    Code:
    Event: 1         Power: 0w       Cadence: undefinedrpm
    Event: 2         Power: 0w       Cadence: undefinedrpm
    startup
    Max channels: 8
    cycling power meter initialized
    Event: 3         Power: 0w       Cadence: undefinedrpm
    Event: 4         Power: 0w       Cadence: undefinedrpm
    Event: 5         Power: 145w       Cadence: undefinedrpm
    Event: 6         Power: 117w       Cadence: undefinedrpm
    Da muss ja irgendwie eine Schleife rein, damit der Wert immer aktualisiert wird?
    Geändert von Landix (03-05-2017 um 19:52 Uhr)

  8. #23
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.667

    AW: Python to Javascript

    lass das console.log(message) mal drinn
    und füge den end-eventhandler hinzu, der wird bei fehler oder wenn das pythonscript endet aufgerufen
    Code:
    // end the input stream and allow the process to exit
    shell.end(function (err) {
      if (err) throw err;
      console.log('finished');
    });

  9. #24
    Landix ist offline Eroberer
    registriert
    03-05-2017
    Beiträge
    59

    AW: Python to Javascript

    Leider keine Veränderung:

    Code:
    ^Cpi@carcam:~/ant-cycling-power $ sudo node test.js
    startup
    Max channels: 8
    cycling power meter initialized
    mein code:

    Code:
    var PythonShell = require('python-shell');
    var pyshell = new PythonShell('8powerx.py');
    var power_meter = require('./power-meter');
    var pm = new power_meter.PowerMeter();
    
    pyshell.on('message', function (message) {
      // received a message sent from the Python script (a simple "print" statement)
      console.log(message);
      var power_instant = message;
      pm.broadcast(power_instant);
      // end the input stream and allow the process to exit
    });
    
    // end the input stream and allow the process to exit
      pyshell.end(function (err) {
      if (err) throw err;
      console.log('finished');
    });

  10. #25
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.667

    AW: Python to Javascript

    Zitat Zitat von Landix Beitrag anzeigen
    Code:
    ^Cpi@carcam:~/ant-cycling-power $ sudo node test.js
    startup
    Max channels: 8
    cycling power meter initialized
    und wo kommt das "startup", "Max channels: 8" und "cycling power meter initialized" her?
    die stehen ja nicht als ausgabe in deinem script.
    sicher das du das richtige script startest?

  11. #26
    Landix ist offline Eroberer
    registriert
    03-05-2017
    Beiträge
    59

    AW: Python to Javascript

    ja das kommt vom

    Code:
    var power_meter = require('./power-meter');
    das Script hab ich oben weiter gepostet.

    Code:
    var Ant = require('ant-plus');
    
    var PowerMeter = function() {
      var stick = new Ant.GarminStick3;
      var channel = 1;
      if (!stick.is_present()) {
        stick = new Ant.GarminStick2;
      }
    
      stick.on('startup', function () {
        console.log('startup');
        console.log('Max channels:', stick.maxChannels);
        // 0xCAFFEDOOD
        var deviceId = 0xBEEF;
        stick.write(Ant.Messages.assignChannel(channel, 'transmit'));
        // The device type shall be set to 11 (0x0B) when searching to pair to an ANT+ bike power sensor
        // The transmitting sensor contains a 16-bit number that uniquely identifies its
        // transmissions. Set the Device Number parameter to zero to allow wildcard
        // matching. Once the device number is learned, the receiving device should
        // remember the number for future searches.
        // Device number set to 1 here
        stick.write(Ant.Messages.setDevice(channel, deviceId, 11, 1));
        // RF Channel 57 (2457 MHz) is used for the ANT+ bike power sensor.
        stick.write(Ant.Messages.setFrequency(channel, 57));
        // Channel period Data is transmitted from most bike power sensors every 8182/32768 seconds
        // (approximately 4.00 Hz). This channel period shall be used by default.
        stick.write(Ant.Messages.setPeriod(channel, 8182));
        stick.write(Ant.Messages.openChannel(channel));
        console.log('cycling power meter initialized');
      });
    
      stick.on('shutdown', function () { console.log('ANT+ shutdown'); });
    
      if (!stick.open()) {
      	console.log('ANT+ USB stick not found!');
      }
    
      this.stick = stick;
      this.channel = channel;
      this.power_event_count = 0;
      this.power_accumulated = 0;
    
    };
    
    PowerMeter.prototype.broadcast = function(power, cadence) {
      if (!this.stick.is_present()) {
        return;
      }
    
      var data = [];
      data.push(this.channel);
      data.push(0x10); // power only
      this.power_event_count++;
      this.power_event_count = this.power_event_count % 255; // rollover 255
      data.push(this.power_event_count);
      data.push(0xFF); // pedal power not-used
      data.push(cadence); // cadence
      this.power_accumulated += power;
      this.power_accumulated = this.power_accumulated % 65536;
      console.log("Event: %s \t Power: %sw \t Cadence: %srpm", this.power_event_count, power, cadence);
    
      data = data.concat(Ant.Messages.intToLEHexArray(this.power_accumulated, 2));
      data = data.concat(Ant.Messages.intToLEHexArray(power, 2));
      this.stick.write(Ant.Messages.buildMessage(data, 0x4E)); //ANT_BROADCAST_DATA
    };
    
    module.exports.PowerMeter = PowerMeter;

  12. #27
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.667

    AW: Python to Javascript

    ok, mach mal folgendes. leg
    test.py
    Code:
    print "test"
    und test.js
    Code:
    var PythonShell = require('python-shell');
    var pyshell = new PythonShell('test.py');
    
    pyshell.on('message', function (message) {
      console.log(message);
    });
    
    pyshell.end(function (err) {
      if (err) throw err;
      console.log('finished');
    });
    in ein verzeichnis
    ruf dort npm install python-shell auf
    und dann node test.js
    die ausgabe sollte so aussehen
    Code:
    test
    finished

  13. #28
    Landix ist offline Eroberer
    registriert
    03-05-2017
    Beiträge
    59

    AW: Python to Javascript

    Kann ich leider erst zu Hause machen, bin nun auf der Arbeit.

    Code:
    "npm install python-shell" habe ich aber schon.
    Das muss man doch nicht für jedes Verzeichnis extra machen, oder?

    ich mach das auch immer mit "sudo" da mein Raspberry eh hinter ner NAT liegt. Also:

    Code:
    sudo npm install python-shell

  14. #29
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.667

    AW: Python to Javascript

    Zitat Zitat von Landix Beitrag anzeigen
    Kann ich leider erst zu Hause machen, bin nun auf der Arbeit.
    ok

    Zitat Zitat von Landix Beitrag anzeigen
    Code:
    "npm install python-shell" habe ich aber schon.
    Das muss man doch nicht für jedes Verzeichnis extra machen, oder?
    doch, sonst müsste man npm install mit -g option aufrufen.
    das macht man in der regel nur für tools

    Zitat Zitat von Landix Beitrag anzeigen
    ich mach das auch immer mit "sudo" da mein Raspberry eh hinter ner NAT liegt.
    sudo hat nichts mit NAT zu tun, sondern weil man root rechte benötigst

  15. #30
    Landix ist offline Eroberer
    registriert
    03-05-2017
    Beiträge
    59

    AW: Python to Javascript

    KK dan probier ich nachher erstmal aus und melde mich zurück
    Danke für deine Hilfe.

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 10-12-2016, 09:56
  2. Antworten: 0
    Letzter Beitrag: 07-09-2016, 12:38
  3. Python-Variable in Javascript verwenden
    Von siggi1147 im Forum JavaScript
    Antworten: 2
    Letzter Beitrag: 24-04-2008, 18:34
  4. [Python]Was ist das?
    Von Kriegr im Forum Serverseitige Programmierung
    Antworten: 2
    Letzter Beitrag: 20-05-2003, 16:11
  5. python website
    Von python im Forum Site-Check
    Antworten: 7
    Letzter Beitrag: 14-02-2003, 16:30

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •