Code: Select all
;12122024 - Find Valid Computer Com Ports
;Tests Com Ports 1 to 32
;
;Compiler Directtives
EnableExplicit
;----- Variables
Global Event.i
Global Result.i
Global CP.s
;----- Array Variables
Global Dim VCP.i(32) ;Status Serial Port Numbers 1 = Valid 0 = Not Valid
Procedure Find_Valid_Com_Ports()
;========================================================
;PROCEDURE DESCRIPTION
;Checks 31 Comports on Computer and mark them Valid if so.
;========================================================
Protected p.i:Protected s0.s
For p = 0 To 31
s0 = "COM" + Str(p)
If OpenSerialPort(#PB_Any, s0, 38400, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 1024, 1024) ;Open Serial Port
VCP(p) = 1 ;Valid
Else
VCP(p) = 0 ;Not Valid
EndIf
CloseSerialPort(#PB_All)
Next
EndProcedure
Procedure AddPorts2List()
;========================================================
;PROCEDURE DESCRIPTION
;Makes a list of valid com ports available on computer
;========================================================
Protected p.i
For p = 0 To 32
If VCP(p) = 1
AddGadgetItem(1105, -1, "COM" + Str(p) )
EndIf
Next
EndProcedure
Procedure Load_Default_Fonts()
Protected DFID.i ;Status
DFID = LoadFont(0, "Arial Bold", 8) ;Font ID Default Font
SetGadgetFont(#PB_Default, DFID) ;Assign Default Font to Gadgets - Note Cannot use SetGadgetFont later or wont work for that gadget.
EndProcedure
;----- Example Use:
Load_Default_Fonts():InitMouse()
If OpenWindow(0, #PB_Ignore, #PB_Ignore, 1024, 768, "Find Valid Com Port Procedure Test" , #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
SetWindowColor(0, $9BB1C8);Tan ;Initialize Mouse
FrameGadget(1101, 15, 10, 150, 110, "")
TextGadget(1102, 20, 10, 100, 25, " Com Settings")
SetGadgetColor(1102, #PB_Gadget_BackColor, $9BB1C8)
TextGadget(1103, 35, 48, 70, 70, " Com Port")
SetGadgetColor(1103, #PB_Gadget_BackColor, $9BB1C8)
ComboBoxGadget(1105, 100, 44, 60, 21, #PB_ComboBox_UpperCase )
Find_Valid_Com_Ports()
AddPorts2List()
EndIf
Repeat
Event = WaitWindowEvent(20)
If Event = #PB_Event_Gadget
Result = EventGadget()
;----- Com Selected by User - VF
If Result = 1105
CP = GetGadgetText(1105)
MessageRequester("Com Port Selected: ", "Port Selected is: " + CP, #PB_MessageRequester_Ok)
EndIf
EndIf
Until Event = #PB_Event_CloseWindow