VARIAVEIS TIPO BYTE COMO MANIPULAR

USUARIO.EXCLUIDOS 09/12/2003 11:59:38
#304
Se alguém já desenvolveu programa para gerenciar CATRACA, pode me dar uma luz.
Tenho alguns exemplos, que usam dados do tipo Byte, mas são bastante confusos para mim, pois nunca trabalhei com este tipo de dado e para completar, são feitos em Delphi!
LIONDAS 09/12/2003 13:03:51
#318
Resposta escolhida
Eu trabalho com istemas de acesso e gerencio catracas de duas empresas diferentes : Topdata e Tecnibra.
Eu possuo as dlls e documentacao para utiliza-las e até criei um usercontrol para manipular e utilizar mais facilmente as dlls.
Para lhe ajudar primeiramente preciso saber com qual catraca vc trabalha e de que maneira....
LIONDAS 10/12/2003 09:43:29
#476
Olá veja o exemplo abaixo, neste exemplo é enviado uma mensagem para a catraca de numero 1 durante 5 segundos atraves da porta serial Com1 do computador na velocidade de 9600 bps :

'Define as funcoes da dll
Private Declare Function Envia_Dados Lib "Inner2k.dll" (ByVal Terminal As Long, BufferComm As Byte, ByVal Comando As Long, ByVal num As Long, ByVal protocolo As Long) As Long
Private Declare Function Recebe_Dados Lib "Inner2k.dll" (ByVal Terminal As Long, BufferComm As Byte, ByVal Comando As Long, ByVal num As Long, ByVal protocolo As Long) As Long
Private Declare Function InicializaCom Lib "Inner2k.dll" (ByVal Porta As Long, ByVal velocidade As Long) As Long
Private Declare Sub FinalizaCom Lib "Inner2k.dll" ()

Private Const tamMensagem = 33
Private Const cmdMensagem = 104

'Abre a porta serial
InicializaCom(1, 9600)

dim sLinha1 as string
dim sLinha2 as string

sLinha1 = "TESTANDO"
sLinha2 = "CATRACA"

'Define o array para armazenar os dados a serem enviados
Dim aBuffer(tamMensagem - 1) As Byte

'Tranforma os caracteres em seus respectivos numeros asc (bytes)
Dim nCont As Integer
For nCont = 1 To 16
'monta a mensagem da linha 1
aBuffer(nCont - 1) = Asc(Mid(sLinha1, nCont, 1))
'monta a mensagem da linha 2
aBuffer(nCont + 15) = Asc(Mid(sLinha2, nCont, 1))
Next
aBuffer(32) = 5 'Tempo de Duracao da mensagem

'envia a array de dados
Enviar 1, aBuffer(0), cmdMensagem, tamMensagem

'Fecha a porta serial
FinalizaCom

Lembre-se que as constantes tamMensagem = 33 e cmdMensagem = 104 é definida pela documentraçà o da dll, eles definem o tamanho do array onde será armazenado as mensagens e o numero do comando da mensagem.
O que atrapalha um pouco para entender é que quando o array (aBuffer) é passado para a funcao ENVIAR vc só pasa o primeiro argumento aBuffer(0), dai a propria funcao se encarrega e pagar o resto, acho que isso se chama variavel de ponteiro.

Agora lembre-se que para cada comando (enviar lista, receber dados, etc) existem um numero de comando e um array (buffer) a ser tratado.
Existem tambem buffers que não é necessário enviar o codigo asc no buffer, ex o comando para enviar date e hora.
Tópico encerrado , respostas não são mais permitidas