OPEN "COMn:...."

 

OPEN "COMn:baud,parity,data stop{,options}" for random as #handle

Omschrijving: De OPEN "COMn:" statement opent een seriŽle communicatie poort voor het lezen en het schrijven. Deze eigenschap gebruikt Microsoft Windows eigen ingebouwde API's, zodat als u een meervoudige poort communicatie kaart heeft en de juiste Windows driver hebt die uw kaart ondersteunt, dan zou elke willekeurige poort op die kaart moeten kunnen gebruiken. De eenvoudigste vorm voor dit commando is: OPEN "COMn:baud,parity,data,stop" for random as #handle Toegestane keuzes voor baud zijn: 75 110 150 300 600 1200 2400 1800 2400 4800 9600 19200 38400 57600 115200 Toegestane keuzes voor pariteit zijn: N No parity E Even parity O Odd parity S Space parity M Mark parity Toegestane keuzes voor data zijn: 5 bits long 6 bits long 7 bits long 8 bits long Toegestane keuzes voor stop zijn: 1 stop bit 2 stop bits Er kan naar keuze extra informatie in parameters na de baud, pariteit, data en stop gegevens worden geplaatst: CSn Set CTS timeout in milliseconds (default 1000 milliseconds) DSn Set DSR timeout in milliseconds (default 1000 milliseconds) PE Enable parity checking RS Disable detection of RTS (request to send) Andere defaults: DTR detection is disabled XON/XOFF is disabled binary mode is the default Om de I/O communicatie buffers (elke poort heeft zijn eigen) in te stellen , wijzigt u de variabele Com (merk op dat C met een hoofdletter staat) in de gewenste grootte alvorens de poort te openen. Het veranderen van de variabele na het openen van een poort beÔnvloedt de grootte van de buffers voor die haven niet terwijl het open is. 'set the size of the communications buffers '(in and out) to 16K each Com = 16384 Gebruiksaanwijzingen: Om de compoort 2 te openen met 9600 baud, 8 data bits, 1 stop bit, en geen pariteit, gebruikt men de volgende regel: open "com2:9600,n,8,1" for random as #commHandle Het wordt aanbevolen dat u bepaalde handshaking schakelaars plaatst zodat uw programma niet gewoon stilstaat (bevriest) wanneer het staat te wachten op gegevens die binnen moeten komen of wanneer het probeert om gegevens te verzenden. Om dit te doen, voegen wij ds0, cs0, en rs schakelaars toe zoals hieronder. De behoeften kunnen verschillen, maar deze werken goed voor de meeste toepassingen. Let op dat we een andere communicatie snelheid gebruiken in dit voorbeeld. open "com2:19200,n,8,1,ds0,cs0,rs" for random as #commHandle Onthoud dat wanneer een modem belt en met een andere modem verbinding maakt, het een verbindingssnelheid bespreekt. In het geval van 14400 snelheidsmodems, moet u 19200 specificeren als verbindingssnelheid en de modems het onderling laten uit werken tijdens de verbinding. Dit omdat 14400 geen baudrate is die door Windows wordt ondersteund (en u zult ontdekken dat QBASIC daarom ook geen 14400 baud direct ondersteunt). Zodra de poort geopend is, wordt het verzenden van gegevens verwezenlijkt door te printen naar de poort (ATZ reset elk modem dat de Hayes commando set begrijpt): print #commHandle, "ATZ" Om van de poort te kunnen lezen zou u eerst moeten controleren om te zien of er iets te lezen valt. Dit wordt verwezenlijkt op deze wijze: numBytes = lof(#commHandle) Lees daarna de gegevens in door gebruik te maken van de input$( ) functie. dataRead$ = input$(#commHandle, numBytes) Het samenvoegen van de lof( ) en input$( ) functies op ťťn regel ziet er aldus uit: dataRead$ = input$(#commHandle, lof(#commHandle)) Wanneer u helemaal klaar bent, kunt u de poort afsluiten: close #commHandle Vanaf Liberty BASIC 3 bestaat de mogelijkheid om DSR checken onbruikbaar te maken door een nul of geen waarde te specificeren bij de schakelaar DS: open "com1:9600,n,8,1,ds0" for random as #com of open "com1:9600,n,8,1,ds" for random as #com Liberty BASIC 3.02 heeft ook de txcount(#handle) functie waarmee u kunt zien hoeveel bytes er in de seriŽle transmissie rij staan. count = txcount(#com) See also: ONCOMMERROR , TXCOUNT(#handle)