RECEIVE BUFFER
RECEIVE BUFFER ( receiveVar )
| Parâmetro | Tipo | Descrição | |
|---|---|---|---|
| receiveVar | Text | ← | Variable to receive data | 
Descrição
RECEIVE BUFFER lê a porta serial que foi aberta anteriormente com SET CHANNEL. A porta serial tem um buffer que preenche com caracteres até que um comando lê a partir do buffer. RECEIVE BUFFER recebe os caracteres do buffer serial, colocá-os em receiveVar e limpa o buffer. Se não houver caracteres no buffer, então receiveVar não conterá nada.
Em Windows
A porta serial de buffer do Windows é limitada a 10 Kbytes. Isso significa que o buffer pode realizar um overflow. Quando ela estiver cheia e novos caracteres forem recebidos, os novos caracteres substituem os antigos caracteres. Os caracteres antigos estão perdidos e, portanto, é essencial que o buffer seja lido rapidamente quando novos caracteres são recebidos.
Em Mac OS
A porta serial buffer no macOS é capacidade ilimitada (dependendo da memória disponível). Se o buffer estiver cheio e novos caracteres são recebidos, os novos caracteres substituem os antigos caracteres. Os caracteres antigos estão perdidos e, portanto, é essencial que o buffer seja lido rapidamente quando novos caracteres são recebidos.
RECEIVE BUFFER é diferente de RECEIVE PACKET, ele leva o que está no buffer e, em seguida, retorna imediatamente. RECEIVE PACKET aguarda até encontrar um caractere específico ou até que um determinado número de caracteres estejam no buffer
Durante a execução do RECEIVE BUFFER, o usuário pode interromper a recepção pressionando Ctrl-Alt-Shift (Windows) ou Command + Option + Shift (Macintosh). Esta interrupção gera um erro -9994, que você pode pegar com um método de tratamento de erros instalado usando ON ERR CALL.
Exemplo
O método de projeto LISTEN TO SERIAL PORT usa RECEIVE BUFFER para obter o texto da porta serial e acumulá-lo em uma variável interprocesso:
  // ESCUTAR PORTA SERIAL
  // Abrir a porta serial
 SET CHANNEL(201;Speed 9600+Data bits 8+Stop bits one+Parity none)
 <>IP_Escutar_Porta_Serial:=True
 While(<>IP_Escutar_Porta_Serial)
    RECEIVE BUFFER($vtBuffer)
    If((Length($vtBuffer)+Length(<>vtBuffer))>MAXTEXTLEN)
       <>vtBuffer:=""
    End if
    <>vtBuffer:=<>vtBuffer+$Buffer
 End while
Neste ponto, qualquer outro processo pode ler a interprocesso vtBuffer para trabalhar com os dados provenientes da porta serial.
Para parar de ouvir a porta serial, basta executar:
  // Deixar de escutar a porta serial
 ◊IP_Escutar_Porta_Serial:=False
Note que o acesso à variável interprocesso vtBuffer deve ser protegida por um semáforo, de modo que os processos não causarão conflito. Veja o comando Semaphore para obter mais informações.
Ver também
ON ERR CALL
RECEIVE PACKET
Semaphore
SET CHANNEL
USE CHARACTER SET
Propriedades
| Número do comando | 172 | 
| Thread-seguro | ✓ | 
| Modificar variáveis | error |