Дочерний процесс неожиданно завершается без вывода ошибок - PullRequest
0 голосов
/ 05 марта 2020

Я занимаюсь разработкой приложения для датчика сердечного ритма, в котором показания сохраняются в файле CSV. Мобильное приложение связывается с Raspberry Pi через Bluetooth. Я использую s sh на VSCode для разработки на Raspberry Pi. Когда код Python запускается сам по себе, создается CSV, запускается датчик и сохраняются показания.

Но когда я пытаюсь запустить код python как дочерний процесс в Javascript, код создается для создания CSV-файла до его уничтожения без вывода ошибки. Кроме того, PID, созданный при запуске дочернего процесса, не отображается в диспетчере задач Raspberry Pi.

Мне нужен код, чтобы работать, когда «1» передается приложению BLE, начинается процесс python и показания сохраняются в CSV.

Проблема, похоже, связана с создание и запись в файл CSV, поскольку я пытался извлечь эту часть, чтобы результаты просто выводились на консоль, и это работало нормально.

Javascript:

 function startLogging() { 

     if (! pythonProcess)
     {
         pythonProcess = spawn('python',["/home/pi/github/little_pulse/little_pulse/code/pulse_sensor/pulseWriter.py"]);

     };

 };


loggingCharacteristic.prototype.onWriteRequest = function(data,
    offset, withoutResponse, callback) {

     if(!offset) {
         this._value = data;
     }

     console.log('loggingCharacteristic - onWriteRequest: value = ' +
     this._value.slice(offset, offset + bleno.mtu).toString()
   );

   if( this._value == 1)
   {
     console.log('Logging Started');
     sensor.startLogging();
   }

   else if(this._value == 2)
   {
     sensor.stopLogging();
     console.log('Logging Stopped');
   }

   else {
     console.log('Incorrect Input');
   }


   callback(this.RESULT_SUCCESS, this._value);
 };

Python:

from pulsesensor2 import Pulsesensor

import csv

p = Pulsesensor()

    with open('/home/pi/github/little_pulse/little_pulse/heartRateCSV.csv',n'a', newline='') as f:

        theWriter = csv.writer(f)
        theWriter.writerow(['Time','BPM','col3'])    #column names
        try:

              p.startAsyncBPM()
              while True:
                     #Code that prints bpm to console and writes to csv
        except:
            p.stopAsyncBPM()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...