NOTE You can also use DCD & RI as inputs- search http://libertybasic.conforums.com for Rod's clear example. Thanks to him for clarifying this way to use & control the serial port pins. Note too the delays which are necessary to allow Windows to set things up.
' Controlling DTR & RTS- in my case on a USB serial port. ' Worked single-stepped but not when run- until struct line REM'd! nomainwin ' struct modem, DSRCTS as long portNum$ = "7" ' NB Yours may differ... ###################### lpFileName$ = "COM" +portNum$ dwCreationDistribution = _OPEN_EXISTING hTemplateFile = _NULL timer 50, [d0] wait [d0] timer 0 calldll #kernel32, "CreateFileA", _ lpFileName$ as ptr, _ dwDesiredAccess as ulong, _ dwShareMode as ulong, _ lpSecurityAttributes as ulong, _ dwCreationDistribution as ulong, _ dwFlagsAndAttributes as ulong, _ hTemplateFile as ulong, _ hFileHandle as ulong if hFileHandle = _INVALID_HANDLE_VALUE then notice "Com Port Failed to open" end else calldll #kernel32, "CloseHandle", _ hFileHandle as ulong, _ result as boolean end if open "com7:19200,n,8,1,ds0,cs0,rs" for random as #com WindowWidth =400 WindowHeight =240 button #1.b1, " &Quit", [quit], UL, 160, 150, 80, 40 button #1.b2, " Set ", [setCheckBoxD], UL, 10, 50, 50, 25 button #1.b3, " Reset ", [resetCheckBoxD], UL, 60, 50, 50, 25 checkbox #1.cbD, "DTR state", [setD], [resetD], 50, 20, 130, 20 button #1.b5, " Set ", [setCheckBoxR], UL, 260, 50, 50, 25 button #1.b6, " Reset ", [resetCheckBoxR], UL, 310, 50, 50, 25 checkbox #1.cbR, "RTS state", [setR], [resetR], 300, 20, 130, 20 statictext #1.st, "hFileHandle ="; hFileHandle, 155, 100, 120, 40 open "DTR and RTS" for window as #1 #1, "trapclose [quit]" ' Now make sure both are set initially. #1.cbD, "set" CALLDLL #kernel32, "EscapeCommFunction", hFileHandle as ulong, 5 as long, result as boolean #1.cbR, "set" CALLDLL #kernel32, "EscapeCommFunction", hFileHandle as ulong, 3 as long, result as boolean wait [setCheckBoxD] #1.cbD, "set" [setD] CALLDLL #kernel32, "EscapeCommFunction", hFileHandle as ulong, 5 as long, result as boolean wait [resetCheckBoxD] #1.cbD, "reset" [resetD] CALLDLL #kernel32, "EscapeCommFunction", hFileHandle as ulong, 6 as long, result as boolean wait [setCheckBoxR] #1.cbR, "set" [setR] CALLDLL #kernel32, "EscapeCommFunction", hFileHandle as ulong, 3 as long, result as boolean wait [resetCheckBoxR] #1.cbR, "reset" [resetR] CALLDLL #kernel32, "EscapeCommFunction", hFileHandle as ulong, 4 as long, result as boolean wait [quit] close #com close #1 end
' Flashinging DTR & RTS- in my case on a USB serial port. nomainwin portNum$ = "7" ' NB Yours may differ... ###################### lpFileName$ = "COM" +portNum$ dwCreationDistribution = _OPEN_EXISTING hTemplateFile = _NULL timer 50, [d0] wait [d0] timer 0 calldll #kernel32, "CreateFileA", _ lpFileName$ as ptr, _ dwDesiredAccess as ulong, _ dwShareMode as ulong, _ lpSecurityAttributes as ulong, _ dwCreationDistribution as ulong, _ dwFlagsAndAttributes as ulong, _ hTemplateFile as ulong, _ hFileHandle as ulong if hFileHandle = _INVALID_HANDLE_VALUE then notice "Com Port Failed to open" end else calldll #kernel32, "CloseHandle", _ hFileHandle as ulong, _ result as boolean end if open "com7:19200,n,8,1,ds0,cs0,rs" for random as #com WindowWidth =400 WindowHeight =240 textbox #1.t, 20, 20, 200, 40 open "Flash DTR and RTS" for window as #1 #1, "trapclose [quit]" for i =0 to 100 #w.t, "i ="; i CALLDLL #kernel32, "EscapeCommFunction", hFileHandle as ulong, 5 as long, result as boolean CALLDLL #kernel32, "EscapeCommFunction", hFileHandle as ulong, 6 as long, result as boolean timer 500, [MoveOn1] wait [MoveOn1] timer 0 CALLDLL #kernel32, "EscapeCommFunction", hFileHandle as ulong, 3 as long, result as boolean CALLDLL #kernel32, "EscapeCommFunction", hFileHandle as ulong, 4 as long, result as boolean timer 500, [MoveOn2] wait [MoveOn2] timer 0 next i [quit] close #com close #1 end