Ok, ho creato un piccolo modulo che cerca i device ottici (cioè lettori cd,dvd e masterizzatori) e ne tira fuori queste due informazioni: marca e modello.PUBLIC SUB ListOpticalDevice()
DIM hDeviceName AS String 'Name optical device
DIM hPatch AS String 'Name patch
DIM hDirName AS String 'Is name of Directory found in "/sys/clas/scsi_device" DIM hDirName2 AS String 'Is name of Directory found in "/sys/class/scsi_device/" & hDirName & "/device/block"
DIM hVendor AS String 'Name of Vendor
DIM hModel AS String 'Name of Model hPatch = "/dev/"
FOR EACH hDeviceName IN Dir("/dev", "sr*", gb.Device)
FOR EACH hDirName IN Dir("/sys/class/scsi_device", "*", gb.Directory) FOR EACH hDirName2 IN Dir("/sys/class/scsi_device/" & hDirName & "/device/block", "*", gb.Directory)
IF hDirName2 = hDeviceName THEN
SHELL "cat /sys/class/scsi_device/" & hDirName & "/device/vendor" TO hVendor
SHELL "cat /sys/class/scsi_device/" & hDirName & "/device/model" TO hModel
print hPatch & hDeviceName & " (" & Replace(hVendor, "\n", "") & " " & Replace(hModel, "\n", "") & ")"
ENDIF
NEXT
NEXT
NEXT
CATCH
print "No optical device detected!"
END
vi va di dargli uno sguardo?
@lux
che ne diresti di identare meglio il codice quando hai vari if for ecc ecc?
aumenteresti la leggibilità del codice, esempio:
PUBLIC SUB ListOpticalDevice()
DIM hDeviceName AS String 'Name optical device
DIM hPatch AS String 'Name patch
DIM hDirName AS String 'Is name of Directory found in "/sys/clas/scsi_device" DIM hDirName2 AS String 'Is name of Directory found in "/sys/class/scsi_device/" & hDirName & "/device/block"
DIM hVendor AS String 'Name of Vendor
DIM hModel AS String 'Name of Model hPatch = "/dev/"
FOR EACH hDeviceName IN Dir("/dev", "sr*", gb.Device)
FOR EACH hDirName IN Dir("/sys/class/scsi_device", "*", gb.Directory)
FOR EACH hDirName2 IN Dir("/sys/class/scsi_device/" & hDirName & "/device/block", "*", gb.Directory)
IF hDirName2 = hDeviceName THEN
SHELL "cat /sys/class/scsi_device/" & hDirName & "/device/vendor" TO hVendor
SHELL "cat /sys/class/scsi_device/" & hDirName & "/device/model" TO hModel
PRINT hPatch & hDeviceName & " (" & Replace(hVendor, "n", "") & " " & Replace(hModel, "n", "") & ")"
ENDIF
NEXT
NEXT
NEXT
CATCH
PRINT "No optical device detected!"
END
END
@ lux
un piccolo consiglio:
cerca di identare meglio il codice che scrivi, migliora di molto la leggibilità
esempio:
PUBLIC SUB ListOpticalDevice()
DIM hDeviceName AS String 'Name optical device
DIM hPatch AS String 'Name patch
DIM hDirName AS String 'Is name of Directory found in "/sys/clas/scsi_device" DIM hDirName2 AS String 'Is name of Directory found in "/sys/class/scsi_device/" & hDirName & "/device/block"
DIM hVendor AS String 'Name of Vendor
DIM hModel AS String 'Name of Model hPatch = "/dev/"
FOR EACH hDeviceName IN Dir("/dev", "sr*", gb.Device)
FOR EACH hDirName IN Dir("/sys/class/scsi_device", "*", gb.Directory)
FOR EACH hDirName2 IN Dir("/sys/class/scsi_device/" & hDirName & "/device/block", "*", gb.Directory)
IF hDirName2 = hDeviceName THEN
SHELL "cat /sys/class/scsi_device/" & hDirName & "/device/vendor" TO hVendor
SHELL "cat /sys/class/scsi_device/" & hDirName & "/device/model" TO hModel
PRINT hPatch & hDeviceName & " (" & Replace(hVendor, "n", "") & " " & Replace(hModel, "n", "") & ")"
ENDIF
NEXT
NEXT
NEXT
CATCH
PRINT "No optical device detected!"
END