Ich verwende node-detection
, um benachrichtigt zu werden, wenn ein USB
Gerät eingesteckt wurde. Jedoch kann ich nicht herausfinden, wie man weiß, an welchen Port es angeschlossen wurde, z. SDB1, SDC1 usw. Gibt es eine einfache Möglichkeit, es zu tun?USB-Port des eingesteckten Geräts im Knoten
Antwort
Ich denke, es ist nicht mit Knoten-Erkennung arbeiten
Vielleicht nicht der beste Weg, aber das war für mich:
var shell = require('shelljs');
var watch = require('node-watch');
var tmpUsb;
Array.prototype.contains = function(needle){
for (var i=0; i<this.length; i++)
if (this[i] == needle) return true;
return false;
}
Array.prototype.diff = function(compare) {
return this.filter(function(elem) {return !compare.contains(elem);})
}
getUsb = function() {
this.usbJson = JSON.parse(shell.exec('lsblk --json', {silent:true}).stdout);
var dev = this.usbJson.blockdevices;
var devices = [];
dev.forEach(function(entry) {
entry.children.forEach(function(e) {
devices.push(e.mountpoint);
});
});
return devices;
}
tmpUsb = getUsb();
watch('/dev/disk/by-id', { recursive: true }, function(evt, name) {
var curr = getUsb();
var add = curr.diff(tmpUsb);
var rem = tmpUsb.diff(curr);
if(add.length > 0) {
console.log("ADD > " + add);
}
if(rem.length > 0) {
console.log("REM > " + rem);
}
tmpUsb = curr;
});
Bitte in Ihrer Frage hinzufügen, was Ihr Ausgang ist. Welchen Code haben Sie versucht?
Sie können das Modul drivelist zusätzlich zum Knotenerkennungsmodul verwenden, das von den ausgezeichneten Mitarbeitern von resin.io erstellt wurde.
Das Laufwerklistenmodul listet alle angeschlossenen Geräte auf, einschließlich der Mountpoint- (Pfad-) Informationen. Diese Ausgabe unterscheidet sich je nach Betriebssystem geringfügig. Weitere Informationen finden Sie in der Dokumentation zur Laufwerksliste.
Hier finden Sie ein schnelles Beispiel, um herauszufinden, wann ein entfernbares USB-Laufwerk eingelegt und gemountet wurde, und um den Mount-Pfad zu erhalten.
Bei einigen Tests wird das USB-Erkennungsmodul fast sofort ausgelöst, wenn ein Gerät eingesteckt ist, aber es dauert eine Weile, bis das Gerät geladen wird. Also verwende ich einen setInterval, um zu überprüfen, ob ein Mountpoint existiert. Sobald ich einen Mountpoint gefunden habe, lösche ich das Intervall.
// load modules
var usbDetect = require('usb-detection');
const drivelist = require('drivelist');
var checkUSBintervalID;
// This is the listener function for the 'add' event
function addUSBhandler() {
console.log('added event listener for usb ADD');
// Start interval to check if the USB is mounted
checkUSBintervalID = setInterval(function() {
drivelist.list(function(error, drives) {
console.log('listening for USB mount...');
if (error) { throw error; }
// iterate through all drives
for(var d = 0; d < drives.length; d++) {
// if the drive is a removable usb
if(drives[d].system == false) {
// if this drive is mounted
if(drives[d].mountpoints.length > 0) {
console.log('found removable USB');
// the drive is mounted
// do stuff here
// the path is at drives[d].mountpoints[0].path
clearInterval(checkUSBintervalID);
}
}
}
});
}, 1000);
}
// Add listener for when a USB is plugged in
usbDetect.on('add', addUSBhandler);
Diese Antwort wird nicht berücksichtigt, wenn der USB-Datenträger vor dem Einsetzen eingesetzt und entfernt wird. Sie müssen wahrscheinlich ein Timeout oder etwas Ähnliches hinzufügen. Hoffe das half, und viel Glück.
Ich weiß nicht, über node.js Bindungen, aber mit externen udevadm
Werkzeug die Informationen ausgesetzt ist:
$ udevadm monitor
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent
KERNEL[766928.886896] add /devices/pci0000:00/0000:00:10.0/usb5/5-1 (usb)
KERNEL[766928.888766] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0 (usb)
UDEV [766929.091194] add /devices/pci0000:00/0000:00:10.0/usb5/5-1 (usb)
KERNEL[766930.777996] add /module/usb_storage (module)
UDEV [766930.780203] add /module/usb_storage (module)
KERNEL[766930.781054] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4 (scsi)
KERNEL[766930.781241] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/scsi_host/host4 (scsi_host)
KERNEL[766930.781370] add /bus/usb/drivers/usb-storage (drivers)
UDEV [766930.782320] add /bus/usb/drivers/usb-storage (drivers)
KERNEL[766931.092511] add /module/uas (module)
UDEV [766931.092584] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0 (usb)
KERNEL[766931.092608] add /bus/usb/drivers/uas (drivers)
UDEV [766931.093550] add /module/uas (module)
UDEV [766931.094000] add /bus/usb/drivers/uas (drivers)
UDEV [766931.094305] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4 (scsi)
UDEV [766931.095737] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/scsi_host/host4 (scsi_host)
KERNEL[766931.807635] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0 (scsi)
KERNEL[766931.807770] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0 (scsi)
KERNEL[766931.807901] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/scsi_disk/4:0:0:0 (scsi_disk)
KERNEL[766931.807995] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/scsi_device/4:0:0:0 (scsi_device)
KERNEL[766931.809543] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/scsi_generic/sg2 (scsi_generic)
KERNEL[766931.809605] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/bsg/4:0:0:0 (bsg)
UDEV [766931.811736] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0 (scsi)
KERNEL[766931.812771] add /devices/virtual/bdi/8:16 (bdi)
UDEV [766931.815246] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0 (scsi)
UDEV [766931.815908] add /devices/virtual/bdi/8:16 (bdi)
UDEV [766931.818228] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/scsi_disk/4:0:0:0 (scsi_disk)
UDEV [766931.819748] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/bsg/4:0:0:0 (bsg)
UDEV [766931.821506] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/scsi_device/4:0:0:0 (scsi_device)
UDEV [766931.821894] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/scsi_generic/sg2 (scsi_generic)
KERNEL[766931.895701] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/block/sdb (block)
KERNEL[766931.895807] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/block/sdb/sdb1 (block)
KERNEL[766931.895879] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/block/sdb/sdb2 (block)
UDEV [766933.474661] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/block/sdb (block)
UDEV [766933.566443] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/block/sdb/sdb2 (block)
UDEV [766933.658413] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/block/sdb/sdb1 (block)
KERNEL[766942.802911] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/bsg/4:0:0:0 (bsg)
KERNEL[766942.804048] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/scsi_generic/sg2 (scsi_generic)
KERNEL[766942.804163] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/scsi_device/4:0:0:0 (scsi_device)
KERNEL[766942.804246] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/scsi_disk/4:0:0:0 (scsi_disk)
KERNEL[766942.804338] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/block/sdb/sdb2 (block)
KERNEL[766942.804426] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/block/sdb/sdb1 (block)
KERNEL[766942.804518] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/block/sdb (block)
KERNEL[766942.804590] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0 (scsi)
UDEV [766942.806838] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/bsg/4:0:0:0 (bsg)
UDEV [766942.807543] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/scsi_generic/sg2 (scsi_generic)
UDEV [766942.809181] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/scsi_disk/4:0:0:0 (scsi_disk)
UDEV [766942.809410] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/scsi_device/4:0:0:0 (scsi_device)
UDEV [766942.812382] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/block/sdb/sdb1 (block)
UDEV [766942.812545] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/block/sdb/sdb2 (block)
UDEV [766942.814711] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/block/sdb (block)
UDEV [766942.815300] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0 (scsi)
KERNEL[766942.816341] remove /devices/virtual/bdi/8:16 (bdi)
KERNEL[766942.816384] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0 (scsi)
UDEV [766942.817716] remove /devices/virtual/bdi/8:16 (bdi)
UDEV [766942.819175] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0 (scsi)
KERNEL[766942.864803] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/scsi_host/host4 (scsi_host)
KERNEL[766942.864891] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4 (scsi)
KERNEL[766942.865168] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0 (usb)
KERNEL[766942.866960] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1 (usb)
UDEV [766942.867670] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/scsi_host/host4 (scsi_host)
UDEV [766942.868469] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4 (scsi)
UDEV [766942.869291] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0 (usb)
UDEV [766942.870791] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1 (usb)
Einige Hinweise:
- Es kann auf eine mehr als eine Partition sein USB-Stick, oder es kann ein Dateisystem direkt ohne Partitionen haben.
- Sie brauchen wahrscheinlich nicht speziell für USB-Geräte zu überwachen, nur irgendein Block Gerät vielleicht?
- Dies ist keine Filterung, Sie werden noch viele unabhängige Ereignisse bekommen.
- 1. Entfernung des angeschlossenen WLAN-Geräts
- 2. Tiggers, vor dem eingesteckten Abzug?
- 3. Gesamtspeicher des UWP-Geräts
- 4. Wo ist die Textmodusvorschau des Geräts im Android Studio 2.1
- 5. Wie erhalte ich Button-Events im Sleep-Modus des Geräts?
- 6. Firmware des physischen Geräts lesen
- 7. Name des Android-Geräts == "BlueZ"?
- 8. Eindeutige ID des Android-Geräts
- 9. Wie bekomme ich die IP des Geräts auf React Native?
- 10. iPad Entwicklung Erkennung der Version des Geräts
- 11. Fehler beim Starten des virtuellen Android-Geräts
- 12. Senden Aktion beim Drehen des Geräts iOS
- 13. Höhe und Breite machen 100% des Geräts
- 14. Debug-App nach Neustart des Geräts
- 15. javax.comm: Fehler beim Trennen des Geräts
- 16. Xamarin.Droid - Erhalte die Telefonnummer des Geräts
- 17. Einstellung der Größe des Geräts rgl
- 18. Synchronisieren des Timers im Server im Knoten js?
- 19. Rufen Sie die Telefonnummer des Geräts programmgesteuert
- 20. Ermitteln der eindeutigen ID des Geräts
- 21. Wie Breite und Höhe des mobilen Geräts
- 22. Abmessungen des Tablet-Geräts bedeuten Ausrichtung?
- 23. Fehler beim Initialisieren des ST-Link-Geräts
- 24. Entsperren des Geräts durch Ui Automator 2.0
- 25. Absturz beim Drehen des Geräts - Lebenszyklusprobleme
- 26. Anzeigedatum entsprechend der Zeitzone des Geräts
- 27. Name des Android-Geräts ohne Bluetooth
- 28. Übersteht ein PendingIntent den Neustart des Geräts?
- 29. Ortung des GPS-Standorts meines Geräts
- 30. Fehler beim Registrieren des Geräts mit Benutzerkonten
sind Sie usig Knoten-USB-Erkennung? auf npmjs? Es basiert auf USB (npmjs). Es ist schwer, den Hafen zu bekommen. Ich suche auch danach. Ich werde posten, wenn ich eine Lösung finde –