|
|
|
|
|
Dicas
|
|
Visual Basic (Redes/Comunicações)
|
|
|
Título da Dica: Ler porta serial usando o componente MSComm
|
|
|
|
Postada em 19/9/2000 por Webmaster
webmaster@vbweb.com.br
'Use o componente MSComm. 'Caso vc j's esteja usando ele, vc deve ter esquecido de setar a propriedade RThreshold para 1, desta forma ele irá gerar um evento que pode ser tratado. 'Crie um formulário e coloque nele um botão e um textbox, depois insira o seguinte código:
Private Sub BtConectar_Click() MSComm1.Output = Chr$(240) + Chr$(1) + Chr$(1) + Chr$(240)
End Sub
Private Sub Form_Load() ' Usa COM2. MSComm1.CommPort = 2 ' 9600 baud, no parity, 8 data, and 1 stop bit. MSComm1.Settings = "9600,N,8,1" ' Indica que o controle deve ler todo o conteúdo do buffer ' quando o input é usado. MSComm1.InputLen = 0 ' Indica que os dados que chegarem estarão no formato texto MSComm1.InputMode = comInputModeBinary ' Gera um evento OnComm a cada byte recebido MSComm1.RThreshold = 1 ' Espera o buffer de saída ter apenas 1 byte para enviá-lo MSComm1.SThreshold = 1 ' Abre a porta. MSComm1.PortOpen = True
End Sub
Private Sub MSComm1_OnComm() Dim strsaida As Variant Dim tamanho, tamanho2 As Integer Select Case MSComm1.CommEvent ' Handle each event or error by placing ' code below each case statement ' Errors Case comEventBreak ' A Break was received. Case comEventCDTO ' CD (RLSD) Timeout. Case comEventCTSTO ' CTS Timeout. Case comEventDSRTO ' DSR Timeout. Case comEventFrame ' Framing Error Case comEventOverrun ' Data Lost. Case comEventRxOver ' Receive buffer overflow. Case comEventRxParity ' Parity Error. Case comEventTxFull ' Transmit buffer full. Case comEventDCB ' Unexpected error retrieving DCB] ' Events Case comEvCD ' Change in the CD line. Case comEvCTS ' Change in the CTS line. Case comEvDSR ' Change in the DSR line. Case comEvRing ' Change in the Ring Indicator. Case comEvReceive ' Received RThreshold # of chars. tamanho = MSComm1.InBufferCount strsaida = MSComm1.Input tamanho2 = 0 While tamanho2 < tamanho Tracer.Text = Tracer.Text & "#" Tracer.Text = Tracer.Text & Format(strsaida(tamanho2)) Tracer.Text = Tracer.Text & "," tamanho2 = tamanho2 + 1 Wend Case comEvSend ' There are SThreshold number of ' characters in the transmit ' buffer. tamanho = MSComm1.OutBufferCount tamanho2 = 0 While tamanho2 < tamanho Tracer.Text = Tracer.Text & "#" Tracer.Text = Tracer.Text & Format(strsaida(tamanho2)) Tracer.Text = Tracer.Text & "," tamanho2 = tamanho2 + 1 Wend Case comEvEOF ' An EOF charater was found in ' the input stream End Select
End Sub
|
|
|
|
|