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)