Linux - Sane - Scannerliste aktualisieren

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
Benutzeravatar
Garfield
Beiträge: 172
Registriert: Do 5. Jun 2008, 22:07
OS, Lazarus, FPC: Ubuntu 22.04 LTS (Laz 3.0 FPC3.2.2)
CPU-Target: 64Bit
Wohnort: Aken

Linux - Sane - Scannerliste aktualisieren

Beitrag von Garfield »

Ich scanne mit Sane unter Ubuntu. Nach dem "Code Flow" wird sane mit sane_init() intialisiert und mit sane_get_devices() bekommt man eine Liste der Scanner im System. Mit sane_exit() wird Sane beendet.

Code: Alles auswählen

type
  SANE_Word         = LongInt;
  SANE_Bool         = SANE_Word;
  SANE_Char         = ^Char;
  SANE_String_Const = SANE_Char;

type
  SANE_Device = record
    name     : SANE_String_Const; // unique device name
    vendor   : SANE_String_Const; // device vendor string
    model    : SANE_String_Const; // device model name
    dev_type : SANE_String_Const; // device type (e.g., "flatbed scanner")
  end;
  PSANE_Device = ^SANE_Device;
  Device_List  = array of PSANE_Device;
  PDevice_List = ^Device_List;

type
  function  sane_init(version_code: PSANE_Int; authorize: SANE_Auth_Callback): SANE_Status; cdecl; external SaneExport;
  procedure sane_exit; cdecl; external SaneExport;
  function  sane_get_devices(devices: PDevice_List; local_only: SANE_Bool): SANE_Status; cdecl; external SaneExport;

Code: Alles auswählen

  // Initialisieren.
  bIsLibInit := (sane_init(@iVersion, nil) = SANE_STATUS_GOOD);

Code: Alles auswählen

procedure TSaneScanner.SaneGetDeviceList;
{*******************************************************************************
*  Die Liste der verfügbaren Scanner holen.
}
var
  pdList : PDevice_List;
  i      : Integer;
begin
  if bIsLibInit
  then begin
    try
      WriteInfo(0, Format('LibSane Version: %s', [sVersion]));
      WriteInfo(1, rsDevicesSearch);
      i := 0;
      pdList := nil;
      SetLength(aScannerList, 0);
      Getmem(pdlist, sizeof(pdlist));
      LastStatus := sane_get_devices(pdlist, SANE_TRUE);
      if (LastStatus = SANE_STATUS_GOOD) then
      while (pdlist^[i] <> nil)
      do begin
        SetLength(aScannerList, i + 1);
        aScannerList[i].name     := pdlist^[i]^.name;     // Name im System
        aScannerList[i].vendor   := pdlist^[i]^.vendor;   // Hersteller
        aScannerList[i].model    := pdlist^[i]^.model;    // Modellbezeichnung
        aScannerList[i].dev_type := pdlist^[i]^.dev_type; // Bauart
        Inc(i);
      end;
    finally
      if (pdList <> nil)
      then Freemem(pdList);
    end;
  end;
end;
Das funktioniert soweit. Ändert sich jedoch die Scannerliste, weil ein Scanner nicht mehr verbunden ist oder neu verbunden wird, liefert die Procedure immer noch das selbe Ergebnis wie beim Initialisieren von sane.

Nun habe ich in die Procedure ein sane_exit und sane_init eingefügt.

Code: Alles auswählen

var
  ..
  iVersion: SANE_Int;
begin
  // Library schliessen
  if bIsLibInit
  then sane_exit;
  // Neues Init
  bIsLibInit := (sane_init(@iVersion, nil) = SANE_STATUS_GOOD);
  ..
Wird der Scanner abgezogen, funktioniert es. Ändert sich nichts oder es wird der Scanner angesteckt, gibt es einen Fehler: "Exception-Klasse »External: SIGSEGV«". Mache ich etwas falsch oder muss ich mich damit abfinden, jedesmal die Anwendung zu schliessen und neu zu öffnen?
Gruß Garfield

Benutzeravatar
Garfield
Beiträge: 172
Registriert: Do 5. Jun 2008, 22:07
OS, Lazarus, FPC: Ubuntu 22.04 LTS (Laz 3.0 FPC3.2.2)
CPU-Target: 64Bit
Wohnort: Aken

Re: Linux - Sane - Scannerliste aktualisieren

Beitrag von Garfield »

Hier ein Source Code zum Ausprobieren. Es werden die angeschlossenen Scanner (kein Netzwerk) und die Eigenschaften angezeigt. Es gibt nur eine kleine Macke. Für den aktuell eingestellten Wert wird kein gültiger angezeigt wenn der Wertetyp Integer ist.

Die Namen der Eigenschaften stehen in der saneoptsh.inc. Für meinen Canon Lide100 passt das. Für den 400 nicht mehr.
Dateianhänge
Scanner.zip
(120.36 KiB) 37-mal heruntergeladen
Gruß Garfield

Benutzeravatar
Garfield
Beiträge: 172
Registriert: Do 5. Jun 2008, 22:07
OS, Lazarus, FPC: Ubuntu 22.04 LTS (Laz 3.0 FPC3.2.2)
CPU-Target: 64Bit
Wohnort: Aken

Re: Linux - Sane - Scannerliste aktualisieren

Beitrag von Garfield »

Die Klasse TSaneScanner habe ich im FormCreate erstellt und im FormDestroy freigegeben. In Sane funktioniert es nicht die Geräte neu einzulesen. Das scheint bei SkanLite auch nicht zu funktionieren. Es funktioniert auch nicht Sane innerhalb der Klasse zu beenden und neu zu initialisieren. Wenn ich beim Neueinlesen der Geräte die Klasse freigebe und neu erstelle, funktioniert das was ich will.
Dateianhänge
Scanner1.zip
(2.51 MiB) 33-mal heruntergeladen
Gruß Garfield

Benutzeravatar
Garfield
Beiträge: 172
Registriert: Do 5. Jun 2008, 22:07
OS, Lazarus, FPC: Ubuntu 22.04 LTS (Laz 3.0 FPC3.2.2)
CPU-Target: 64Bit
Wohnort: Aken

Re: Linux - Sane - Scannerliste aktualisieren

Beitrag von Garfield »

In der Dokumentation steht zu

Code: Alles auswählen

sane_get_devices()
laut Google Translater
Mit dieser Funktion kann die Liste der verfügbaren Geräte abgefragt werden. Wenn die Funktion erfolgreich ausgeführt wird, speichert sie einen Zeiger auf ein NULL-terminiertes Array von Zeigern auf SANE_Device-Strukturen in *device_list. Die zurückgegebene Liste bleibt garantiert unverändert und gültig, bis (a) ein weiterer Aufruf dieser Funktion ausgeführt wird oder (b) ein Aufruf von sane_exit() ausgeführt wird. Diese Funktion kann wiederholt aufgerufen werden, um zu erkennen, wann neue Geräte verfügbar sind. Wenn das Argument local_only wahr ist, werden nur lokale Geräte zurückgegeben (Geräte, die direkt an die Maschine angeschlossen sind, auf der SANE ausgeführt wird). Wenn es falsch ist, enthält die Geräteliste alle Remote-Geräte, auf die die SANE-Bibliothek zugreifen kann.
Es könnte also sein das die Übersetzung von Malcolm Poole aus dem August 2008 nicht stimmt oder sich etwas geändert hat.

Code: Alles auswählen

SANE_Status sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only);

function  sane_get_devices(devices: PDevice_List; local_only: SANE_Bool): SANE_Status; cdecl; external SaneExport;
Gruß Garfield

Mathias
Beiträge: 6208
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Linux - Sane - Scannerliste aktualisieren

Beitrag von Mathias »

Code: Alles auswählen

  Device_List  = array of PSANE_Device;
Diese Zeile sieht mir auch recht gefährlich aus, mit dem kann die clib nichts anfangen.
Da müsste sowas in dieser Art rein.

Code: Alles auswählen

  Device_List  = ^PSANE_Device;
Das sieht man an diesem Beispiel gut.

Code: Alles auswählen

function printf(str:PChar):cint;varargs cdecl;external 'c';
var
  ca: array of char = 'blabla';
 ...
printf(ca); // error
printf(pchar(ca))  // io

Code: Alles auswählen

SANE_Status sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only);
Hast du die drei '*' gesehen ?
Auf einen Char umgesetzt wäre dies PPPChar.


PS: Hast du die sane.pas selbst übersetzt oder war die schon vorhanden ?
Mit funktionierenden Beispielen ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
Garfield
Beiträge: 172
Registriert: Do 5. Jun 2008, 22:07
OS, Lazarus, FPC: Ubuntu 22.04 LTS (Laz 3.0 FPC3.2.2)
CPU-Target: 64Bit
Wohnort: Aken

Re: Linux - Sane - Scannerliste aktualisieren

Beitrag von Garfield »

Vielen Dank für Deine Antwort, Matthias. Die Unit sane.pas ist aus der pascalsane 0.2. Da steht drin dass sie von Malcolm Poole aus dem August 2008 ist. Ich habe das Beispiel genommen und eine Anwendung geschrieben, mit welcher ich scannen kann. Allerdings funktioniert nicht alles so wie es soll. Deshalb versuche ich es zu korrigieren.

Die Zeile funktioniert beim ersten Aufruf mit den beiden angeschlossenen USB-Scannern Canon Lide100 und Lide400.

In der Sane.h steht:

Code: Alles auswählen

typedef struct
  {
    SANE_String_Const name;	/* unique device name */
    SANE_String_Const vendor;	/* device vendor string */
    SANE_String_Const model;	/* device model name */
    SANE_String_Const type;	/* device type (e.g., "flatbed scanner") */
  }
SANE_Device;

...

extern SANE_Status sane_get_devices (const SANE_Device *** device_list,
				     SANE_Bool local_only);
In der sane.pas:

Code: Alles auswählen

type
  SANE_Device = record
    name     : SANE_String_Const; // unique device name
    vendor   : SANE_String_Const; // device vendor string
    model    : SANE_String_Const; // device model name
    dev_type : SANE_String_Const; // device type (e.g., "flatbed scanner")
  end;
  PSANE_Device = ^SANE_Device;
  Device_List  = array of PSANE_Device;
  PDevice_List = ^Device_List;
  
  ....
  
function  sane_get_devices(devices: PDevice_List; local_only: SANE_Bool): SANE_Status; cdecl; external SaneExport;
Drei *, aber nur zwei ^. Müsste also noch irgendwie ein ^ rein.
Zuletzt geändert von Garfield am So 25. Feb 2024, 01:56, insgesamt 2-mal geändert.
Gruß Garfield

Benutzeravatar
Garfield
Beiträge: 172
Registriert: Do 5. Jun 2008, 22:07
OS, Lazarus, FPC: Ubuntu 22.04 LTS (Laz 3.0 FPC3.2.2)
CPU-Target: 64Bit
Wohnort: Aken

Re: Linux - Sane - Scannerliste aktualisieren

Beitrag von Garfield »

Habe das eingefügt bzw geändert:

Code: Alles auswählen

  PDevices_List = ^PDevice_List;
..
  function  sane_get_devices(devices: PDevices_List; local_only: SANE_Bool): SANE_Status; cdecl; external SaneExport;
Weil das nicht geht:

Code: Alles auswählen

  function  sane_get_devices(devices: ^PDevice_List; local_only: SANE_Bool): SANE_Status; cdecl; external SaneExport;

Code: Alles auswählen

procedure TSaneScanner.SaneGetDeviceList;
{*******************************************************************************
*  Die Liste der verfügbaren Scanner holen.
}
var
  pdList   : ^PDevice_List;
  i        : Integer;
  iVersion : SANE_Int;
begin
  if bIsLibInit
  then begin
    try
      WriteInfo(0, Format('LibSane Version: %s', [sVersion]));
      WriteInfo(1, rsDevicesSearch);
      i := 0;
      pdList := nil;
      SetLength(aScannerList, 0);
      Getmem(pdlist, sizeof(pdlist));
      LastStatus := sane_get_devices(pdlist, SANE_TRUE);
      if (LastStatus = SANE_STATUS_GOOD) then
      while (pdlist^[i] <> nil)
      do begin
        SetLength(aScannerList, i + 1);
//        aScannerList[i].name     := pdlist^[i]^.name;     // Name im System
//        aScannerList[i].vendor   := pdlist^[i]^.vendor;   // Hersteller
//        aScannerList[i].model    := pdlist^[i]^.model;    // Modellbezeichnung
//        aScannerList[i].dev_type := pdlist^[i]^.dev_type; // Bauart
        WriteInfo(1, Format('  %-11s : %s', [rsSystemName, aScannerList[i].name]));
        WriteInfo(0, Format('  %-11s : %s %s', [rsDeviceName, aScannerList[i].vendor, aScannerList[i].model]));
        Inc(i);
      end;
    finally
      if (pdList <> nil)
      then Freemem(pdList);
      if (i = 0)
      then WriteInfo(0, Format('  %s : %s', [rsResult, rsDevisesNotFound]));
    end;
  end;
end;
Dass läuft "fehlerfrei" durch. Nur die auskommentierten Zeilen gehen nicht.
Gruß Garfield

Benutzeravatar
Garfield
Beiträge: 172
Registriert: Do 5. Jun 2008, 22:07
OS, Lazarus, FPC: Ubuntu 22.04 LTS (Laz 3.0 FPC3.2.2)
CPU-Target: 64Bit
Wohnort: Aken

Re: Linux - Sane - Scannerliste aktualisieren

Beitrag von Garfield »

War gestern wohl zu spät.

Code: Alles auswählen

type
  SANE_Device = record
    name     : SANE_String_Const; // unique device name
    vendor   : SANE_String_Const; // device vendor string
    model    : SANE_String_Const; // device model name
    dev_type : SANE_String_Const; // device type (e.g., "flatbed scanner")
  end;
  PSANE_Device  = ^SANE_Device;
  // PDevice_List  = array of PSANE_Device;
  PDevice_List  = ^PSANE_Device;
  PPDevice_List = ^PDevice_List;
  
  function  sane_get_devices(devices: PPDevice_List; local_only: SANE_Bool): SANE_Status; cdecl; external SaneExport;

Code: Alles auswählen

procedure TSaneScanner.SaneGetDeviceList;
{*******************************************************************************
*  Die Liste der verfügbaren Scanner holen.
}
var
  pdList   : PDevice_List;
  i        : Integer;
begin
  if bIsLibInit
  then begin
    try
      WriteInfo(0, Format('LibSane Version: %s', [sVersion]));
      WriteInfo(1, rsDevicesSearch);
      i := 0;
      pdList  := nil;
      SetLength(aScannerList, 0);
//      Getmem(pdlist, sizeof(SANE_Device));
      LastStatus := sane_get_devices(@pdlist, SANE_TRUE);
      if (LastStatus = SANE_STATUS_GOOD) then
      while (pdlist[i] <> nil)
      do begin
        SetLength(aScannerList, i + 1);
        aScannerList[i].name     := pdlist[i]^.name;     // Name im System
        aScannerList[i].vendor   := pdlist[i]^.vendor;   // Hersteller
        aScannerList[i].model    := pdlist[i]^.model;    // Modellbezeichnung
        aScannerList[i].dev_type := pdlist[i]^.dev_type; // Bauart
        WriteInfo(1, Format('  %-11s : %s', [rsSystemName, aScannerList[i].name]));
        WriteInfo(0, Format('  %-11s : %s %s', [rsDeviceName, aScannerList[i].vendor, aScannerList[i].model]));
        Inc(i);
      end;
    finally
//      if (pdList <> nil)
//      then Freemem(pdList);
      if (i = 0)
      then WriteInfo(0, Format('  %s : %s', [rsResult, rsDevisesNotFound]));
    end;
  end;
end;
Getmem und Freemem sind raus weil es bei Freeman einen Fehler gibt. Dann hatte ich die ^ falsch. Aber so funktioniert es.

Vielen Dank Matthias.
Dateianhänge
Scanner3.zip
(120.63 KiB) 30-mal heruntergeladen
Gruß Garfield

Mathias
Beiträge: 6208
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Linux - Sane - Scannerliste aktualisieren

Beitrag von Mathias »

Getmem und Freemem sind raus weil es bei Freeman einen Fehler gibt. Dann hatte ich die ^ falsch. Aber so funktioniert es.
Wen ich dies hier lese ist der Fall klar, du würgst mit FreeMem die Daten im Sane-Treiber ab.

http://www.sane-project.org/html/doc012.html

4.3.3 sane_get_devices
Mit dieser Funktion kann die Liste der verfügbaren Geräte abgefragt werden. Wenn die Funktion erfolgreich ausgeführt wird, speichert sie einen Zeiger auf ein NULL- terminiertes Array von Zeigern auf SANE_Device- Strukturen in *device_list . Die zurückgegebene Liste bleibt garantiert unverändert und gültig, bis (a) ein weiterer Aufruf dieser Funktion ausgeführt wird oder (b) ein Aufruf von sane_exit() ausgeführt wird. Diese Funktion kann wiederholt aufgerufen werden, um zu erkennen, wann neue Geräte verfügbar sind. Wenn das Argument local_only wahr ist, werden nur lokale Geräte zurückgegeben (Geräte, die direkt an die Maschine angeschlossen sind, auf der SANE ausgeführt wird). Wenn es falsch ist, enthält die Geräteliste alle Remote-Geräte, auf die die SANE-Bibliothek zugreifen kann.


Dies bei der Sane-Schnittstelle scheint ein spezial Fall zu sein, das der Pointer direkt in Sane zeigt, ansonsten bekommt man eine neu generierte List mit den Daten zurück.
Ansonsten muss die Liste selbst frei gegeben werden, aber niemals mit FreeMem, da FreeMem inkompatibel mit dem in C intern verwendeten malloc.
Die meisten libs stellen dafür eine extra Funktion zur Verfügung, zB. wie hier in dem xlib-Beispiel. Bei xlib ist es XFree.

Code: Alles auswählen

  procedure PrintColorMaps;
  var
    i, cnt: cint;
    colmaps: PColormap;
  begin
    colmaps := XListInstalledColormaps(dis, win, @cnt);
    WriteLn('Colormaps: ', cnt);
    for i := 0 to cnt - 1 do begin
      WriteLn('ID: ', colmaps[i]);
    end;
    WriteLn();
    XFree(colmaps);  // Niemals FreeMem !
  end;   
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
Garfield
Beiträge: 172
Registriert: Do 5. Jun 2008, 22:07
OS, Lazarus, FPC: Ubuntu 22.04 LTS (Laz 3.0 FPC3.2.2)
CPU-Target: 64Bit
Wohnort: Aken

Re: Linux - Sane - Scannerliste aktualisieren

Beitrag von Garfield »

Seit Oktober 2022 "arbeite" ich an meiner ersten vernünftigen Anwendung unter Linux, einem Scannprogramm. Das hat mit dem Canon LiDE100 gut funktioniert. Vor ein paar Monaten habe ich einen Canon LiDE400 bekommen und es haben sich ein paar Macken gezeigt, welche ich nach und nach beseitigen will.

MIt Getmem und Freemem hatte es bis zu der Änderung der Deklaration von SANE_Device und sane_get_devices funktioniert. Wenn ich das jetzt richtig verstehe, wird alles am Ende mit sane_exit() freigegeben.

Ich danke Dir, dass Du Dir die Zeit genommen hast, mir zu helfen. Von C habe ich so gut wie keine Ahnung.
Gruß Garfield

Mathias
Beiträge: 6208
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Linux - Sane - Scannerliste aktualisieren

Beitrag von Mathias »

MIt Getmem und Freemem hatte es bis zu der Änderung der Deklaration von SANE_Device und sane_get_devices funktioniert. Wenn ich das jetzt richtig verstehe, wird alles am Ende mit sane_exit() freigegeben.
Ich denke dies wird so sein. Oder eher es bleibt im Speicher des Sane-Treibers, da der auch von anderen Apps gebraucht wird. Die Liste wird vom Treiber angepasst, sobald ein neuer Scanner eingesteckt oder entfernt wird.
Ich danke Dir, dass Du Dir die Zeit genommen hast, mir zu helfen. Von C habe ich so gut wie keine Ahnung.
Grundlegendes ist zu empfehlen, besonders wen man clibs verwendet, so wie deine sane.pas.


Aber eines verwundert mich trotzdem. Du hast angeblich die sane.pas fertig runtergeladen.
Wen ja, scheint diese fehlerhaft zu sein.
Hast du den Link von der Quelle ?

Der Link in sane.pas zeigt nur auf die C-Schnittstelle.
http://www.sane-project.org/html/doc009.html
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
Garfield
Beiträge: 172
Registriert: Do 5. Jun 2008, 22:07
OS, Lazarus, FPC: Ubuntu 22.04 LTS (Laz 3.0 FPC3.2.2)
CPU-Target: 64Bit
Wohnort: Aken

Re: Linux - Sane - Scannerliste aktualisieren

Beitrag von Garfield »

https://code.google.com/archive/p/ocrivist/downloads

Ich habe die sane.h und die sane.pas genommen und daraus "meine" sane.pas gemacht. Deshalb stimmen nicht alle Namen in den beiden sane.pas überein.

Ich hatte die Scannerklasse beim Aufruf der Gerätesuche immer freigegeben und neu erneut. Das habe ich jetzt wieder geändert und das Erstellen der Klasse in das Formcreate verlegt. Jetzt wird das An- und Abstecken des LiDE400 nicht bemerkt. Beim LiDE100 klappt es. :lol:
Gruß Garfield

Mathias
Beiträge: 6208
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Linux - Sane - Scannerliste aktualisieren

Beitrag von Mathias »

Dies ist ja ein rechter Oldie.

Dort hat es eine Demo. Funktioniert dort die Auflistung ?
Ich kann es nicht testen, da ich keinen Scanner habe.
Was noch interessant ist, in diesen Sourcen hat es das von dir beschriebene GetMem und FreeMem.

Entweder kann man doch irgendwie eine dynamische Pascal-Array einer clib übergeben oder es wurde seit 2011 etwas in FPC geändert.
Vielleicht kann ein Pascal-Profi dies beantworten.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
Garfield
Beiträge: 172
Registriert: Do 5. Jun 2008, 22:07
OS, Lazarus, FPC: Ubuntu 22.04 LTS (Laz 3.0 FPC3.2.2)
CPU-Target: 64Bit
Wohnort: Aken

Re: Linux - Sane - Scannerliste aktualisieren

Beitrag von Garfield »

Ich hatte die Demo als Grundlage genommen. Die Auflistung funktioniert, aber eben mit der Macke, weshalb ich dieses Thema angefangen habe.

Das ist wirklich ein Oldie. Man findet auch nichts neueres und ohnehin nur wenig. Dort steht als Datum 3. Mai 2008. Vielleicht ist das Alter für die Macke verantwortlich. Der LiDE100, mit dem es funktioniert, hat USB 2.0 und LiDE400, mit dem es nicht funktioniert, hat USB 3.0.

Warum das Getmem und Freemem funktionierte, kann ich leider nicht beurteilen.

Die saneopth.inc ist so auch wenig hilfreich. Es werden etliche Stringkonstanten deklariert. Vermutlich um sie mit den Gerätebeschreibungen zu vergleichen.

Nachtrag: Vielleicht hat die Macke jetzt auch mit dem Treiber zu tun. Der LiDE100 verwendet sane-genesys. Der LiDE400 sane-pixma.
Gruß Garfield

Mathias
Beiträge: 6208
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Linux - Sane - Scannerliste aktualisieren

Beitrag von Mathias »

C seitig ist die lib topaktuell.
Ich habe es mir genauer angeguckt. Funktionen hat es keine neuen gegeben, es wurde nur in der lib selbst gearbeitet.
Was ich vermute, die sane.pas lief nie richtig. Version 0.x. und auch der Download ist von einer komischen Seite. Normalerweise ist sowas auf einem git Server.

Man müsste mal die C Beispiele testen.
.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten