die PortEinstellungen werden aus einer Comport.ini gelesen .. weiters im Code
Code: Alles auswählen
start:
If OpenPreferences("ComPort.ini")
PreferenceGroup("Settings")
c_Port$=ReadPreferenceString("Port","com1:")
c_baud$=ReadPreferenceString("Baud","9600")
c_data$=ReadPreferenceString("Data","8")
c_parity$=ReadPreferenceString("Parity","N")
c_stop$=ReadPreferenceString("Baud","1")
c_open_$=c_port$+" baud="+c_baud$+" data="+c_data$+" parity="+c_paritiy$+" stop="+c_stop$
Else
MessageRequester("ComPort.ini nicht gefunden","Defaultwerte werden genommen"+Chr(13)+Chr(10)+"COM1: baud=9600 data=8 parity=N stop=1",0)
c_open_$="COM1: baud=9600 data=8 parity=N stop=1"
EndIf
ClosePreferences()
If OpenLibrary(0,"Port.dll")
; MessageRequester("PortTest","Port.dll ok",#PB_MessageRequester_Ok)
m$=m$+"openlib "
;c_open_$="COM1: baud=19200 data=8 parity=N stop=1"
If CallFunction(0,"OPENCOM",c_open_$)
; MessageRequester("PortTest","COM1 geöffnet",#PB_MessageRequester_Ok)
m$=m$+"c_opened "
If CallFunction(0,"DSR",0)
;MessageRequester("PortTest","DSR auf COM1 aktiv",#PB_MessageRequester_Ok)
m$=m$+"dsr0 "
EndIf
If CallFunction(0,"DSR",1)
;MessageRequester("PortTest","DSR auf COM1 deaktiv",#PB_MessageRequester_Ok)
m$=m$+"dsr1 "
EndIf
If CallFunction(0,"CTS",0)
;MessageRequester("PortTest","CTS auf COM1 aktiv",#PB_MessageRequester_Ok)
m$=m$+"cts0 "
EndIf
If CallFunction(0,"CTS",1)
;MessageRequester("PortTest","CTS auf COM1 deaktiv",#PB_MessageRequester_Ok)
m$=m$+"cts1 "
EndIf
If CallFunction(0,"RI",0)
; MessageRequester("PortTest","RI auf COM1 aktiv",#PB_MessageRequester_Ok)
m$=m$+"ri0 "
EndIf
If CallFunction(0,"RI",1)
; MessageRequester("PortTest","RI auf COM1 deaktiv",#PB_MessageRequester_Ok)
m$=m$+"ri1 "
EndIf
If CallFunction(0,"DCD",0)
; MessageRequester("PortTest","DCD auf COM1 aktiv",#PB_MessageRequester_Ok)
m$=m$+"dcd0 "
EndIf
If CallFunction(0,"DCD",1)
;MessageRequester("PortTest","DCD auf COM1 deaktiv",#PB_MessageRequester_Ok)
m$=m$+"dcd1 "
EndIf
If CallFunction(0,"RTS",0)
;MessageRequester("PortTest","RTS auf COM1 aktiv",#PB_MessageRequester_Ok)
m$=m$+"rts0 "
EndIf
If CallFunction(0,"RTS",1)
;MessageRequester("PortTest","RTS auf COM1 deaktiv",#PB_MessageRequester_Ok)
m$=m$+"rts1 "
EndIf
If CallFunction(0,"TXD",0)
; MessageRequester("PortTest","TXD auf COM1 aktiv",#PB_MessageRequester_Ok)
m$=m$+"txd0 "
EndIf
If CallFunction(0,"TXD",1)
; MessageRequester("PortTest","TXD auf COM1 deaktiv",#PB_MessageRequester_Ok)
m$=m$+"txd1 "
EndIf
If CallFunction(0,"DTR",0)
; MessageRequester("PortTest","DTR auf COM1 aktiv",#PB_MessageRequester_Ok)
m$=m$+"dtr0 "
EndIf
If CallFunction(0,"DTR",1)
; MessageRequester("PortTest","DTR auf COM1 deaktiv",#PB_MessageRequester_Ok)
m$=m$+"dtr1 "
EndIf
Else
m$=m$+"c_opened_failed "
EndIf
If CallFunction(0,"CLOSECOM")
; MessageRequester("PortTest","CLOSECOM erfolgreich",#PB_MessageRequester_Ok)
m$=m$+"c_closed "
EndIf
EndIf
CloseLibrary(0)
m$=m$+"closelib"
If FindString(m$,"cts",0)>0
MessageRequester (c_open_$,m$,0)
Else
MessageRequester (c_open_$,"ich find irgendwie nichts",0)
EndIf
m$=""
r=MessageRequester("Ömm...","Noch einen?"+Chr(13)+Chr(10)+"Ini wird neu eingelesen",#PB_MessageRequester_YesNo )
If r<>7
Goto start
EndIf
End
; Ich glaube schon das es möglich ist, die besagten Comleitungen abzufragen. Wenn
; Du nicht alle Leitungen gleichzeitig abfragen mußt, würde die Port.dll schon
; ausreichen um z.B. die Eingänge zum RechnerPort abzufragen. Das wären dann
; RxD PIN 2,
; CTS PIN 8,
; DSR PIN6,
; DCD PIN 1 und
; RI mit PIN 9 der seriellen Schnittstelle.
; Dort kannst Du einfach mit folgenden code abfragen
; If CTS() = 1, oder
; If DSR()=1 usw. dann z.B. mit einer Message reagieren.
; Je nach dem welchel Leitung du Püfen möchtest
; ob sie High=1 bzw Low=0 ist. Ich hoffe das hilft dir etwas weiter.
; Die Port.DLL ist dafür ausreichend.
; Will man aber gleichzeitit in einem Befehl etwas setzen
; bzw. die COMports auslesen reicht die Portdll leider nicht mehr.
; Im GFAbasic gibt es dafür den Befehl OUTPort bzw. INP(Port) mit
; denen man in den Registern der Comschnittstelle so einiges anstellen
; kann. Dazu müßt ich mich aber tiefer in die Ebene reinarbeiten.
; Visuelbasic und Powerbasic kennen die Befehle auch wie GFABASIC.
; Um das mit Purebasic zu bewerkstelligen muß man dann leider mit
; der IO.DLL arbeiten. Diese hat noch dann auch Möglichkeiten in
; Registern bestimmte Werte einzustellen bzw. auszulesen. Da ich
; diese DLL noch nicht kenne kann ich nicht viel darüber sagen.