Seite 3 von 3

Re: libusb-1.0 Include for Linux

Verfasst: 20.09.2018 11:02
von NicTheQuick
Sieht so aus als hätte ich mal wieder Tomaten auf den Augen gehabt.
Natürlich muss man PeekS(buffer, -1, #PB_Ascii) schreiben. Diese verfluchte -1 treibt mich noch in den Wahnsinn. :lol:

Also ihr müsste einfach an allen Stellen im Code, wo PeekS() vorkommt, noch den zweiten Parameter einfügen. Dann klappt's auch mit den Strings. Das ganze müsst ihr nur in der wrapper.pbi ändern.

Re: libusb-1.0 Include for Linux

Verfasst: 02.01.2020 15:55
von pcfreak1201
Moin und Frohes Neues!

Im Codearchiv Rebirth finde ich nur noch eine Version für Mac,
ich suche aber etwas für Linux - jemand eine Idee?

Gruß,
Stefan

Re: libusb-1.0 Include for Linux

Verfasst: 02.01.2020 18:31
von Sicro
@pcfreak1201:

Ebenfalls frohes neues Jahr :)

Ich weiß nicht mehr was der Grund war, dass ich den Include-Code nach dem kompletten Neubau des Archivs nicht mehr integriert habe. Vermutlich funktionierte er nicht mehr mit der aktuellen PB-Version und die Anpassung war mir zu aufwendig.

Es gibt aber noch ein Fork vom Archiv, der zeitlich ziemlich zurückliegt und noch den Zustand des alten Archivs hat. Dort findest du noch die Codes zu libusb:
https://github.com/pointofpresence/Pure ... ware/pbusb

Re: libusb-1.0 Include for Linux

Verfasst: 10.01.2020 18:38
von pcfreak1201
Mahlzeit!

Ähm, also "laufen" tut es ohne Fehlermeldung, aber die Ausgabe kommt mir spanisch äh chinesisch vor 8)

Code: Alles auswählen

Version: 1.0.22.11312琀潯洠湡⁹ (瑨灴⼺氯扩獵)
䥌啂䉓卟䍕䕃卓⼠䰠䉉单彂剔乁䙓剅䍟䵏䱐呅䑅
*context = 17408608
[ERR] LIBUSB::openDevice: 䥌啂䉓䕟剒剏䅟䍃卅S䥌啂䉓䕟剒剏也彏䕄䥖䕃䰀䉉单彂
Bus 004 Device 001: ID 1D6B:0003 
[ERR] LIBUSB::openDevice: 䥌啂䉓䕟剒剏䅟䍃卅S䥌啂䉓䕟剒剏也彏䕄䥖䕃䰀䉉单彂
Bus 003 Device 001: ID 1D6B:0002 
[ERR] LIBUSB::openDevice: 䥌啂䉓䕟剒剏䅟䍃卅S䥌啂䉓䕟剒剏也彏䕄䥖䕃䰀䉉单彂
Bus 002 Device 004: ID 05E3:0617 
[ERR] LIBUSB::openDevice: 䥌啂䉓䕟剒剏䅟䍃卅S䥌啂䉓䕟剒剏也彏䕄䥖䕃䰀䉉单彂
Bus 002 Device 002: ID 2109:0811 
[ERR] LIBUSB::openDevice: 䥌啂䉓䕟剒剏䅟䍃卅S䥌啂䉓䕟剒剏也彏䕄䥖䕃䰀䉉单彂
Bus 002 Device 003: ID 05E3:0612 
[ERR] LIBUSB::openDevice: 䥌啂䉓䕟剒剏䅟䍃卅S䥌啂䉓䕟剒剏也彏䕄䥖䕃䰀䉉单彂
Bus 002 Device 001: ID 1D6B:0003 
[ERR] LIBUSB::openDevice: 䥌啂䉓䕟剒剏䅟䍃卅S䥌啂䉓䕟剒剏也彏䕄䥖䕃䰀䉉单彂
Bus 001 Device 008: ID 046D:C52B 
Bus 001 Device 007: ID 0BDA:2838 敒污整k 呒㉌㌸唸䥈䥄R
[...]
... dabei stören mich als ersten Schritt die Fehler nicht, sondern daß die Zeichenausgabe nicht funzt.
Das hier ist die Ausgabe der 1. Zeile:

Code: Alles auswählen

Procedure.s getVersionString()
		Protected *version.libusb_version
		Protected result.s
		
		*version = getVersion()
		With *version
			result = Str(\major) + "." + Str(\minor) + "." + Str(\micro) + "." + Str(\nano)
			If (\rc)
				result + PeekS(\rc, #PB_Ascii)
			EndIf
			If (\describe)
				result + " (" + PeekS(\describe, #PB_Ascii) + ")"
			EndIf
		EndWith
		
		ProcedureReturn result
	EndProcedure
Wobei ich davon ausgehe, daß Ascii die Entsprechung zu
http://libusb.sourceforge.net/api-1.0/s ... rsion.html:

Code: Alles auswählen

struct libusb_version {
     const uint16_t major;
     const uint16_t minor;
     const uint16_t micro;
     const uint16_t nano;
     const char *rc;
     const char* describe;
 };
const char ist ?!

Dann habe ich mich gefragt: ist ein String unter Linux x64 evtl. #PB_UTF8, oder gar #PB_Unicode ???
Aber nichts hat funktioniert. Nun bin ich doch von C nach Basic gewechset, damit es einfacher wird! :oops:
(Nicht wirklich, aber passt in diesem Kontext :mrgreen:)

Kann mir jemand, mit deutlich mehr Ahnung als ich, da evtl. weiter helfen?

Gruß,
Stefan

Re: libusb-1.0 Include for Linux

Verfasst: 10.01.2020 19:06
von DePe
Ich habe die wesentlichen Teile aus meinem Code kopiert, vielleicht hilft es. Ich verwende Windows, es sollte aber keinen Unterschied zu Linux geben.

Peter

Code: Alles auswählen

	;- -- Strukturen LibUsb.
	#iLibUsbStructureAlignment = #PB_Structure_AlignC

	;- libusb_version.
	Structure uVersion Align #iLibUsbStructureAlignment
		iMajor.u
		iMinor.u
		iMicro.u
		iNano.u
		*aReleaseCandidate.Ascii
		*aDescribe.Ascii
	EndStructure

	Procedure.i GetVersion(*sVersion.String, *sDescription.String, *sError.String)
		; Ermittelt die Versionsnummer und Beschreibung der LibUsb.
		; <- sVersion:			Versionsnummer als Zeichenfolge, z.B.: "1.0.15.10646-rc4".
		; <- sDescription:	Beschreibung, z.B.: "http://libusb.info".
		; <- sError:			Fehlerbeschreibung.
		; Rückgabe:				True wenn die Versionsnummer ermittelt wurde, ansonst False.
		; const struct libusb_version * libusb_get_version(void)
		Protected *uVersion.uVersion
		Protected fReturn.i, iChars.i

		If (Not *sVersion)
			*sError\s = CurrentProcedureName + "Der Zeiger für die Version ist Null. *sVersion = 0"

		ElseIf (Not *sDescription)
			*sError\s = CurrentProcedureName + "Der Zeiger für die Beschreibung ist Null. *sDescription = 0"

		Else
			*uVersion = libusb_get_version()
			fReturn = Bool(*uVersion)

			If (Not fReturn)
				*sVersion\s = #Null$
				*sDescription\s = #Null$
				*sError\s = CurrentProcedureName + "Es wurde ein Null-Zeiger zurückgegeben."
			EndIf

			If fReturn
				With *uVersion
					*sVersion\s = StrU(\iMajor, #PB_Word) +
									  "." + StrU(\iMinor, #PB_Word) +
									  "." + StrU(\iMicro, #PB_Word) +
									  "." + StrU(\iNano, #PB_Word)
					If \aReleaseCandidate
						iChars = MemoryStringLength(\aReleaseCandidate, #PB_Ascii)
						If iChars
							If (iChars > 32)
								iChars = 32
							EndIf
							*sVersion\s + PeekS(\aReleaseCandidate, iChars, #PB_Ascii)
						EndIf
					EndIf
					If \aDescribe
						iChars = MemoryStringLength(\aDescribe, #PB_Ascii)
						If iChars
							If (iChars > 64)
								iChars = 64
							EndIf
							*sDescription\s = PeekS(\aDescribe, iChars, #PB_Ascii)
						EndIf
					EndIf
				EndWith
			EndIf
		EndIf

		ProcedureReturn fReturn
	EndProcedure

Re: libusb-1.0 Include for Linux

Verfasst: 10.01.2020 19:10
von NicTheQuick
Alle PeekS im Code müssen korrigiert werden von PeekS(\describe, #PB_Ascii) zu PeekS(\describe, -1, #PB_Ascii).

Re: libusb-1.0 Include for Linux

Verfasst: 10.01.2020 19:43
von pcfreak1201
Danke Peter!

Habe mal quick und dirty die Struktur getauscht, und zumindest etwas mehr "lesbaren Output":

Code: Alles auswählen

Version: 1.0.22.11312 (http://libusb.info)
䥌啂䉓卟䍕䕃卓⼠䰠䉉单彂剔乁䙓剅䍟䵏䱐呅䑅
*context = 24879856
Es scheint also an der Struktur bzw. Alignment zu liegen.
Mal sehen, ob ich am WE etwas Zeit dafür finden kann...

Re: libusb-1.0 Include for Linux

Verfasst: 10.01.2020 19:51
von pcfreak1201
Japp, das war es: :bounce:

Code: Alles auswählen

Version: 1.0.22.11312 (http://libusb.info)
LIBUSB_SUCCESS / LIBUSB_TRANSFER_COMPLETED
*context = 13488848
[ERR] LIBUSB::openDevice: LIBUSB_ERROR_ACCESS
Bus 004 Device 001: ID 1D6B:0003 
[ERR] LIBUSB::openDevice: LIBUSB_ERROR_ACCESS
Bus 003 Device 001: ID 1D6B:0002 
[ERR] LIBUSB::openDevice: LIBUSB_ERROR_ACCESS
Bus 002 Device 004: ID 05E3:0617 
[ERR] LIBUSB::openDevice: LIBUSB_ERROR_ACCESS
Bus 002 Device 002: ID 2109:0811 
[ERR] LIBUSB::openDevice: LIBUSB_ERROR_ACCESS
Bus 002 Device 003: ID 05E3:0612 
[ERR] LIBUSB::openDevice: LIBUSB_ERROR_ACCESS
Bus 002 Device 001: ID 1D6B:0003 
[ERR] LIBUSB::openDevice: LIBUSB_ERROR_ACCESS
Bus 001 Device 008: ID 046D:C52B 
Bus 001 Device 007: ID 0BDA:2838 Realtek RTL2838UHIDIR