Forum: PC-Programmierung Raspberry Pi, Node.js: serialport führt zu "Speicherzugriffsfehler"


von Heiko (Gast)


Lesenswert?

Moin Forum,
ich überlege gerade, ob ich eine Anwendung auf einem STM32 oder auf 
einem RPi laufen lassen werden.

Wie ich inzwischen herausgefunden habe, würde mich der Einsatz von 
node.js auf dem RPi relativ schnell zu meinem Ziel bringen.
Dafür ist es unter anderem notwendig, dass ich auf eine USB Serielle 
Schnittstelle zugreifen kann. (RS485 Bus).

Nun bin ich wie folgt vorgegangen:

- RPI über Noob Lite installiert
- node.js installiert
- serialport für node.js installiert

Folgendes Testprogramm geschrieben (serial.js)
1
const SerialPort = require('serialport');
2
const port = new SerialPort('/dev/ttyUSB0', () => {
3
  console.log('Port Opened');
4
});

Dies führt leider aber zu der Fehlermeldung "Speicherzugriffsfehler".

Andere Testprogramme (mit socket.io) etc. laufen einwandfrei.

Also habe ich mich nach einer Alternative zu serialport umgeschaut und 
bin auf "raspi-serial" gestossen. Also damit ein vergleichbaren Test 
durchgeführt, aber auch dies führt zum gleichen Fehler.

Wenn ich mittels
1
echo Hallo > /dev/ttyUSB0
 schreibe, gibt es keine Fehlermeldung.

Da ich neu mit node.js arbeite, stehe ich nun ein bisschen auf dem 
Schlauch, wie ich weitermachen sollte.
Ich habe bereits andere UARTS probiert. (z.b. ttyAMA0 und serial0) doch 
immer endet is in "Speicherzugriffsfehler".


Google-Recherchen waren leider bisher alle erfolglos.

Hat jemand eine Idee, was ich noch probieren könnte oder hat jemand 
schon einmal das Problem selbst erlebt?

VG
Heiko

von Heiko (Gast)


Lesenswert?

Nachtrag:

SerialPort@?7.1.2
Node.js v8.15.0
inux HomeControl_Panel1 4.14.90-v7+ #1183 SMP Fri Dec 21 14:03:50 GMT 
2018 armv7l GNU/Linux

von TestX (Gast)


Lesenswert?

Poste bitte einmal die originale Fehlermeldung! Welche serialport 
Version nutzt du ?

von Heiko (Gast)


Lesenswert?

Ich nutze 7.1.2. Ich habe gerade mal 6.2.2 installiert und damit 
funktioniert es nun. :)

Ein anderer Nutzer hat vor ein paar Minuten auf github ein ähnlichen 
Fehlerbericht gepostet. Es scheint also an der 7.x Version zu liegen.

Ich kann aber mit der 6.2.2 leben, somit hat sich das Problem vorerst 
für mich gelöst.

Vielen Dank!

von Frederic K. (warfley)


Lesenswert?

Heiko schrieb:
> Wenn ich mittelsecho Hallo > /dev/ttyUSB0 schreibe, gibt es keine
> Fehlermeldung.

Dann mach es doch Unix style, "everything is a file". Öffne die Datei 
/dev/ttyUSB0 als text Datei, dann solltest du lesen und schreiben können 
wie eine Normale Datei und der Kernel kümmert sich um den Rest. Wenn du 
eine andere BAUD rate haben möchtest oder ähnliches reicht ein simpler 
Aufruf von stty: https://linux.die.net/man/1/stty

Einfacher geht es wohl nicht, und das ganze ist komplett 
Programmiersprachen unabhängig.

Solche Bibliotheken braucht man vor allem wenn man Plattformunabhängig 
laufen möchte. Aber wenn du nur auf einem Raspi (i.e. ARM Linux) laufen 
willst kannst du es auch einfach Systemnah machen

: Bearbeitet durch User
von Blauer Zahn (Gast)


Lesenswert?

Welchen Pi hast du?
Beim 3 B+ z.B. muss für UART erstmal Bluetooth ausgeschaltet werden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.