IsSerialPort() - nicht logisches Ergebnis

MAC OSX spezifisches Forum
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
kartmanne
Beiträge: 108
Registriert: 19.03.2015 18:16
Wohnort: Altenstadt
Kontaktdaten:

IsSerialPort() - nicht logisches Ergebnis

Beitrag von kartmanne »

HI,

nachdem ich mit den Hinweisen aus

viewtopic.php?f=28&t=30148&hilit=serial+port

gut bisher klar kam, funktioniert dieser code-Schnipsel neuerdings nicht mehr (MBP mit OSX 10.13.) so, wie ich das kenne.
IsSerialPort() sollte 0 melden, wenn Port 0 nicht geöffnet ist. Tatsächlich wird eine große Zahl gemeldet; heißt: port offen.
Schließe ich den port vorher mit closeserialport(0), wird genau dieser Befehl als nicht durchführbar gemeldet, weil der port bereits geschlossen ist. Unlogisch...
openserialport(0) gibt Fehler, da der port wohl doch offen ist. (also müßte closeserialport(0) ja funktionieren - tut's aber nicht()

Die Windows-Version zu IsSerialPort(0) funktioniert wie bisher einwandfrei (auf einem Windows-PC).

Ich habe (nach meinem Verständnis) keine weitere app laufen, die auf den port zugreifen und ihn geöffnet haben könnte.

Könnt ihr mir einen Tip zur Lösung geben?
Benutzeravatar
kartmanne
Beiträge: 108
Registriert: 19.03.2015 18:16
Wohnort: Altenstadt
Kontaktdaten:

Re: IsSerialPort() - nicht logisches Ergebnis

Beitrag von kartmanne »

HI,
Nachtrag. Ich glaube inzwischen, dass closeserial(0) nicht funktioniert.
In einer Routine (siehe link vorheriger post) werden zu beginn des Programms alle verfügbaren serial ports gesucht und in einer Liste eingetragen.
Setze ich hier Isserialport(0) vor Openserialport(0), dann meldet Isserialport(0) -> Null. Korrekt.
Ich hab's jetzt so ausprobiert:

Code: Alles auswählen

Debug Str(IsSerialPort(0))
OpenSerialPort(0,"/dev/tty.usbserial-FTCEM405",57600,#PB_SerialPort_NoParity,8,1,#PB_SerialPort_NoHandshake,1024,1024)
CloseSerialPort(0)
Debug Str(IsSerialPort(0))
Die Ausgabe im debug-Fenster ist:
0
4300253224

Hmmmmm....

// Edit: Code-Tags hinzugefügt (Kiffi)
Benutzeravatar
kartmanne
Beiträge: 108
Registriert: 19.03.2015 18:16
Wohnort: Altenstadt
Kontaktdaten:

Re: IsSerialPort() - nicht logisches Ergebnis

Beitrag von kartmanne »

HI,

noch'n Nachtrag:

CoolTerm kann mit dem FTDI-USB-Serial-Adapter einwandfrei arbeiten.

Je nachdem, ob ich mit coolterm den Port öffne oder schließe, zeigt anschließend IsSerialPort(0) den passenden Status korrekt an.
Wolfram
Beiträge: 28
Registriert: 23.08.2013 14:38
Computerausstattung: OSX 10.13 | PB 5.46

Re: IsSerialPort() - nicht logisches Ergebnis

Beitrag von Wolfram »

Das scheint ein Bug zusein,
Mit #PB_Any funktioniert es aber.

Code: Alles auswählen

Debug Str(IsSerialPort(myPort))
myPort = OpenSerialPort(#PB_Any,"/dev/tty.usbserial-FTCEM405",57600,#PB_SerialPort_NoParity,8,1,#PB_SerialPort_NoHandshake,1024,1024)
CloseSerialPort(myPort)
Debug Str(IsSerialPort(myPort))
OSX 10.13 | PB 5.46
Benutzeravatar
kartmanne
Beiträge: 108
Registriert: 19.03.2015 18:16
Wohnort: Altenstadt
Kontaktdaten:

Re: IsSerialPort() - nicht logisches Ergebnis

Beitrag von kartmanne »

HI,

hab ich probiert.

Dein code läuft fehlerfrei. Aber:

Code: Alles auswählen

Debug Str(IsSerialPort(myPort))
myPort = OpenSerialPort(#PB_Any,"/dev/tty.usbserial-FTCEM405",57600,#PB_SerialPort_NoParity,8,1,#PB_SerialPort_NoHandshake,1024,1024)
CloseSerialPort(myPort)
Debug Str(IsSerialPort(myPort))
Debug myPort
Delay(5000)
OpenSerialPort(myPort,"/dev/tty.usbserial-FTCEM405",57600,#PB_SerialPort_NoParity,8,1,#PB_SerialPort_NoHandshake,1024,1024)
Delay(5000)
End
...müßte ja den port öffnen können - IDE bricht (EDIT: beim 2. OpenSerialPort) ab mit: "#SerialPort Objektnummer ist sehr hoch (über1000), sind Sie dazu sicher?"

myPort wird davor ausgegeben mit "4299336776"
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: IsSerialPort() - nicht logisches Ergebnis

Beitrag von mk-soft »

Wieder mit #PB_Any öffnen.
Bei einer festen ID werden die ID's von 0 bis den Wert myPort als Array und der Speicher reserviert.
Daher die Warnung.
PB verwendet statische Arrays (Feste ID) oder dynamischen Speicher (#PB_Any) für die Objekt-ID's
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
kartmanne
Beiträge: 108
Registriert: 19.03.2015 18:16
Wohnort: Altenstadt
Kontaktdaten:

Re: IsSerialPort() - nicht logisches Ergebnis

Beitrag von kartmanne »

HI,

ja, wenn ich von fester auf dynamischer ID umstricke, dann funktioniert die com-Handhabung.

Danke für den Tip.
Antworten