1...(
\r.k'!~!,
A,
,,'o
8LUET
"U1H
uA.PA
SEI.JS<)R¡:~ UTI~ZA.D()~ Et~ APUCA~10!'!ES
DE
CO~JTWJL
DE TRAFICO
Explicacióll.
Línea
1.
uart es un apuntador de tipo "source"
declarado previamente y que, por comodidad,
va a substi tuir al apuntador que retoma la fun–
ción StreamUartSourceO (librería STREAM")
que apunta al "buffer" que recibe los datos desde
el puerto serie RS-232 del sensor o su emulador.
Línea 2. Mientras la conexión esté abierta, se
transmitirán los datos del sensor hacia el dis–
positivo Bluetooth remoto.
Línea 3. Se interroga al puerto serie (salida del
sensor) para saber si hay datos listos para trans–
mitir. Si el número de bytes es de un tamal10
mayor o igual a cierto límite (LIM ), entonces:
Línea 4. se realizará la transmisión, de lo con–
trario, se continuará interrogando al puerto se–
rie introduci endo antes una pausa de 20 m[s]
(línea 5) que es posible generar con las funciones
de la librería de la máquina virtual del BlueLab.
Esta pausa es necesaria porque la UART del sen–
sor se programa para transmitir a 115 200 bps,
la cual es una velocidad lenta para el ritmo de
procesamiento del BlueCore2. El valor de LIM
depende de las necesidades del usuario, pero en
general es de valor pequel10 «10) para no re–
clamar una cantidad de memoria excesiva en el
BlueCore al momento de enviar este paquete de
información.
Línea 6. Se reclama un espacio en memoria
igual a LIM para el "buffer" de los datos de sali–
da . Si la función SinkClaim () retoma un valor
igual a OxFFFF, entonces no habrá espacio en la
memoria RAM del BlueCore2 para crear el "bu–
ffer" de los datos a transmitir.
Línea 7. Se crea
el
"buffer" . Se trata de aptm–
tar al inicio de una región de memoria disponible
SinkMap ( )para iniciar ahí la copia de los datos
del sensor, direccionadosporSourceMap (uart ),
y dejar un apuntador rfcomm_sink que indique
a la función de transmisión donde está el inicio
del "buffer" con los datos a transmitir. Se copia un
número de bytes igual a LIM.
11 Se
recomienda
al lector
referirse
a
[20] para una explicación
de
la operación de las funciones de la
libreri
a
"Stream" contenida en
el BlueLab.
26
Línea 8. Si la condición para transmitir los
datos es válida (la función SinkFlush () no
debe retomar un valor igual a
O),
entonces se
transmite el número de bytes igual a LIM que
residen en el "buffer" cuyo inicio está apuntado
por rfcomm_sink.
Línea 9. Finalmente, antes de regresar a inte–
rrogar al puerto serie por más datos a trans–
mitir, la función SourceEmpty (uart) limpia
el "buffer" de entrada y coloca al apuntador
uart al inicio de éste.
Mientras la conexión se sostenga, el BlueCore2
enviará los datos que aparecen en el puerto serie
RS-232 del CASlRA en un número de paquetes
igual al valor de LIM hacia el dispositivo Blue–
tooth remoto .
En el Apéndice B se reporta el listado del pro–
grama "Makefile" requerido para la compi–
lación del programa en lenguaje C del módulo
BlueCore02. El programa principal de la apli–
cación (main.c), los programas de cabecera (ser–
viceJecord.h, etc.) y el Makefile deben residir en
la misma carpeta para realizar correctamente la
compilación.
Una vez que se cumple esto, se invoca al com-
ti
pilador picando en el icono _ del escritorio. Re-
cuérdese que la versión del compilador utilizado
funciona sólo para un entorno Windows 2000 y
será necesario tener una partición adicional con
este entorno en la PC de trabajo. La Fig. 19 mues–
tra el aspecto de la línea de comandos del compi–
lador.
o
Para iniciar la compilación, se introduce el co–
mando >make. Si la compilación se realiza co–
rrectamente, ningún mensaje de error se generará.
En caso contrario, se deberán hacer las correccio–
nes en el programa principal y recompilar.
o
Cuando se ha completado la compilación, se
puede grabar la "imagen" del programa C en
la EPROM del BlueCore02 (en realidad se gra-
• ba el archivo HEX generado durante la com–
pilación). Para esto, se introduce el comando
>make bc02, con lo cual se realiza la grabación
a la EPROM. Evidentemente, el CASIRA debe
estar alimentado y el cable de comunicación del
1...,17,18,19,20,21,22,23,24,25,26 28,29,30,31,32,33,34,35,36,37,...45