Я занимаюсь разработкой приложения для датчика сердечного ритма, в котором показания сохраняются в файле 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()