Verfügbare serielle Schnittstellen ermitteln
Verfügbare serielle Schnittstellen ermitteln
Gehört zwar nicht mehr hierher aber trotzdem mal die Frage:
Gibt es auch so einen "netten Einzeiler" mit dem man feststellen kann welche seriellen Schnittstellen verfügbar sind
oder ist die For-Next-Schleife mit "IsSerialPort" Pflicht?
Gruß
Daffy
__________________________________________________
Thread geteilt
Maximale Fenstergröße berechnen (OpenWindow)>Verfügbare serielle Schnittstellen ermitteln
20.07.2013
RSBasic
Gibt es auch so einen "netten Einzeiler" mit dem man feststellen kann welche seriellen Schnittstellen verfügbar sind
oder ist die For-Next-Schleife mit "IsSerialPort" Pflicht?
Gruß
Daffy
__________________________________________________
Thread geteilt
Maximale Fenstergröße berechnen (OpenWindow)>Verfügbare serielle Schnittstellen ermitteln
20.07.2013
RSBasic
Wir sind LINUX
Widerstand ist zwecklos - Sie werden emuliert
Widerstand ist zwecklos - Sie werden emuliert
Re: Maximale Fenstergröße berechnen (OpenWindow)
@Daffy0815
Bitte zukünftig immer einen neuen Thread erstellen, sonst kann man mit Hilfe der Board-Suche den geposteten Lösungscode nicht direkt finden bzw. der User sieht den Titel "Maximale Fenstergröße berechnen (OpenWindow)" und er würde den Thread nicht öffnen, weil er denkt, es hat damit nichts zu tun. Deshalb das nächste Mal einfach einen neuen Thread erstellen.
Da ich mit der Bibliothek "SerialPort" noch nie gearbeitet habe, weiß ich nicht, ob der folgende Code für dich richtig ist: http://www.rsbasic.de/aktualisierung/wi ... mitteln.pb
Ist es das, was du brauchst?
\\Edit:
Ich habe deinen Thread jetzt geteilt.
Bitte zukünftig immer einen neuen Thread erstellen, sonst kann man mit Hilfe der Board-Suche den geposteten Lösungscode nicht direkt finden bzw. der User sieht den Titel "Maximale Fenstergröße berechnen (OpenWindow)" und er würde den Thread nicht öffnen, weil er denkt, es hat damit nichts zu tun. Deshalb das nächste Mal einfach einen neuen Thread erstellen.
Da ich mit der Bibliothek "SerialPort" noch nie gearbeitet habe, weiß ich nicht, ob der folgende Code für dich richtig ist: http://www.rsbasic.de/aktualisierung/wi ... mitteln.pb
Ist es das, was du brauchst?
\\Edit:
Ich habe deinen Thread jetzt geteilt.
Re: Maximale Fenstergröße berechnen (OpenWindow)
Hast ja recht!
War übrigens das was ich gesucht habe ist aber noch aufwändiger!
Gruß
Daffy
__________________________________________________
Beitrag verschoben
Maximale Fenstergröße berechnen (OpenWindow)>Verfügbare serielle Schnittstellen ermitteln
20.07.2013
RSBasic
War übrigens das was ich gesucht habe ist aber noch aufwändiger!
Gruß
Daffy
__________________________________________________
Beitrag verschoben
Maximale Fenstergröße berechnen (OpenWindow)>Verfügbare serielle Schnittstellen ermitteln
20.07.2013
RSBasic
Wir sind LINUX
Widerstand ist zwecklos - Sie werden emuliert
Widerstand ist zwecklos - Sie werden emuliert
Re: Verfügbare serielle Schnittstellen ermitteln
Da du noch im alten Thread warst, habe ich deinen Beitrag hierher verschoben. Bitte hier antworten und nicht mehr im anderen, sonst muss ich wieder verschieben.
Und so aufwändig finde ich den von mir geposteten Code nicht. Da gibts schlimmeres.
So lange es funktioniert, spielt es doch keine Rolle, wie viel Code das ist. Es gibt eben nicht alles als einzige Funktion. Das ist ja auch die Aufgabe des Entwicklers, der auch Sachen programmieren muss, um was bestimmtes zu ermitteln o.ä.Daffy0815 hat geschrieben:War übrigens das was ich gesucht habe ist aber noch aufwändiger!
Und so aufwändig finde ich den von mir geposteten Code nicht. Da gibts schlimmeres.
Re: Verfügbare serielle Schnittstellen ermitteln
@RSBASIC
NaJa, ich finde das Folgende von mir bedeutend einfacher und übersichtlicher!
Auch werden nur die tatsächlich verfügbaren Schnittstellen zurückgegeben während die andere Routine keinerlei Rücksicht darauf nimmt
ob die Schnittstelle bereits von einem anderen Programm verwendet wird.
Darüber hinaus würde es mit geänderten Namen auch unter Linux funktionieren.
Gruß
Daffy
NaJa, ich finde das Folgende von mir bedeutend einfacher und übersichtlicher!
Auch werden nur die tatsächlich verfügbaren Schnittstellen zurückgegeben während die andere Routine keinerlei Rücksicht darauf nimmt
ob die Schnittstelle bereits von einem anderen Programm verwendet wird.
Darüber hinaus würde es mit geänderten Namen auch unter Linux funktionieren.
Code: Alles auswählen
EnableExplicit
Global Dim ComPorts.i(256)
Define ComPortNumber.i, ComPortCounter.i
Procedure.i GetAvailableComPorts(Array ComPort.i(1))
Define ComPortCounter.i
Define ComPortNumber.i = 0
For ComPortCounter.i = 1 To 256
If OpenSerialPort(0, "COM"+Str(ComPortCounter.i), 9600, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 256, 256)
ComPortNumber.i = ComPortNumber.i + 1
ComPorts.i(ComPortNumber.i) = ComPortCounter.i
CloseSerialPort(0)
EndIf
Next ComPortCounter.i
ReDim ComPorts.i(ComPortNumber.i)
ProcedureReturn(ComPortNumber.i)
EndProcedure
ComPortNumber.i = GetAvailableComPorts(ComPorts.i())
If ComPortNumber.i
For ComPortCounter.i = 1 To ComPortNumber.i
Debug "COM"+Str(ComPorts.i(ComPortCounter.i))
Next ComPortCounter.i
Else
Debug "No ComPorts available"
EndIf
Daffy
Wir sind LINUX
Widerstand ist zwecklos - Sie werden emuliert
Widerstand ist zwecklos - Sie werden emuliert
Re: Verfügbare serielle Schnittstellen ermitteln
Na dann nutz es doch. Ich habe wie gesagt damit noch nie gearbeitet.
Wenn dein Code funktioniert, dann ist es doch i.O., dann brauchst du ja keinen anderen Code.
Wenn dein Code funktioniert, dann ist es doch i.O., dann brauchst du ja keinen anderen Code.
Re: Verfügbare serielle Schnittstellen ermitteln
Na klar werde ich tun!
Dachte dabei eigentlich mehr daran das der nächte Nutzer mit dem gleichen Problem hier eine andere Lösung finden kann.
Auf den Code bezogen noch ne Frage:
Ist es möglich die Anzahl der Elemente von Arrays abzufragen?
Das Programm könnte ja auch so aussehen:
Gruß
Daffy
Dachte dabei eigentlich mehr daran das der nächte Nutzer mit dem gleichen Problem hier eine andere Lösung finden kann.
Auf den Code bezogen noch ne Frage:
Ist es möglich die Anzahl der Elemente von Arrays abzufragen?
Das Programm könnte ja auch so aussehen:
Code: Alles auswählen
EnableExplicit
Global Dim ComPorts.i(0)
Define ComPortNumber.i, ComPortCounter.i
Procedure.i GetAvailableComPorts(Array ComPort.i(1))
Define ComPortCounter.i
Define ComPortNumber.i = 0
For ComPortCounter.i = 1 To 256
If OpenSerialPort(0, "COM"+Str(ComPortCounter.i), 9600, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 256, 256)
ComPortNumber.i = ComPortNumber.i + 1
ReDim ComPorts.i(ComPortNumber.i)
ComPorts.i(ComPortNumber.i) = ComPortCounter.i
CloseSerialPort(0)
EndIf
Next ComPortCounter.i
ProcedureReturn(ComPortNumber.i)
EndProcedure
ComPortNumber.i = GetAvailableComPorts(ComPorts.i())
If ComPortNumber.i
For ComPortCounter.i = 1 To ComPortNumber.i
Debug "COM"+Str(ComPorts.i(ComPortCounter.i))
Next ComPortCounter.i
Else
Debug "No ComPorts available"
EndIf
Gruß
Daffy
Wir sind LINUX
Widerstand ist zwecklos - Sie werden emuliert
Widerstand ist zwecklos - Sie werden emuliert
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Verfügbare serielle Schnittstellen ermitteln
Daffy0815 hat geschrieben: Auf den Code bezogen noch ne Frage:
Ist es möglich die Anzahl der Elemente von Arrays abzufragen?
Code: Alles auswählen
Debug ArraySize(ComPorts())PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Verfügbare serielle Schnittstellen ermitteln
Danke!
Danach würde ich die Routine so schreiben:
Danach würde ich die Routine so schreiben:
Code: Alles auswählen
EnableExplicit
Global Dim ComPorts.i(0)
Define ComPortNumber.i, ComPortCounter.i
Procedure.i GetAvailableComPorts(Array ComPort.i(1))
Define ComPortCounter.i
Define ComPortNumber.i = 0
For ComPortCounter.i = 1 To 256
If OpenSerialPort(0, "COM"+Str(ComPortCounter.i), 9600, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 256, 256)
ComPortNumber.i = ComPortNumber.i + 1
ReDim ComPorts.i(ComPortNumber.i)
ComPorts.i(ComPortNumber.i) = ComPortCounter.i
CloseSerialPort(0)
EndIf
Next ComPortCounter.i
ProcedureReturn ComPortNumber.i
EndProcedure
If GetAvailableComPorts(ComPorts.i())
For ComPortCounter.i = 1 To ArraySize(ComPorts.i())
Debug "COM"+Str(ComPorts.i(ComPortCounter.i))
Next ComPortCounter.i
Else
Debug "No ComPorts available"
EndIf
Wir sind LINUX
Widerstand ist zwecklos - Sie werden emuliert
Widerstand ist zwecklos - Sie werden emuliert
- NicTheQuick
- Ein Admin
- Beiträge: 8838
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Verfügbare serielle Schnittstellen ermitteln
Zwei Hinweise dazu. Es macht nicht viel Sinn, ComPorts global zu machen, wenn du es eh an die Procedure übergibst. Außerdem ist es eigentlich schneller, wenn man zuerst das Array auf die maximale Anzahl Element resized, also auf 256, und es am Schluss dann wiederum so klein macht wie es nötig ist. Dann spart man sich die möglichen 256 mal Redim und reduziert dessen Aufrufe somit auf 2.
Ansonsten bietet sich natürlich für Listen, deren Größe von vornherein noch nicht ersichtlich sind, eher LinkedLists an. Aber in diesem Fall wäre das wohl eher eine Frage des Geschmacks.
Dann noch ein paar Fragen: Wieso schreibst du hinter jede Variable nochmal ihren Typ, obwohl das beim ersten mal reicht anzugeben? Und für meinen Geschmack kommt hinter das Next kein Variablennamen mehr, aber naja.
Ansonsten bietet sich natürlich für Listen, deren Größe von vornherein noch nicht ersichtlich sind, eher LinkedLists an. Aber in diesem Fall wäre das wohl eher eine Frage des Geschmacks.
Dann noch ein paar Fragen: Wieso schreibst du hinter jede Variable nochmal ihren Typ, obwohl das beim ersten mal reicht anzugeben? Und für meinen Geschmack kommt hinter das Next kein Variablennamen mehr, aber naja.

