Contrl de Acceso Automatizado Mediante Codigo de Barras

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 50
UNIVERSIDAD AUTONOMA METROPOLITANA UNIDAD: DIVISION: CARRERA: MATERIA: TITULO: FECHA: ALUMNOS: ASESORIA: A cosa abirta al tiempo Hs tereternrnnED IZTAPALAPA CIENCIAS BASICAS E INGENIERIA ELECTRONICA PROYECTO DE INGENIERIA ELECTRONICA II “CONTROL DE ACCESO AUTOMATIZADO MEDIANTE CODIGO DE BARRAS’ MARZO DE 2000 LOPEZ PAGOLA AIRY 91320680 RODRIGUEZ GONZALEZ ARIEL 92322524 ROSALES PIEDRAGIL SAUL 90324948 ROBERTO AVILA POZOS 2 Wile INDICE Justificacion Estudio preliminar Programa para el control de Acceso Introduccién Desarrollo Ventana de acceso Ventana Terminal a) Botones de Maximizar Minimizar y Cerrar. b) Barra de Informacion ¢) Botones de Acceso Rapido e Indicador de Puerto Abierto d) Ventana de Despliegue de Matriculas e) Barra de Menus Ment Archivo Mend ArchivoiAbrir Archivo de Registro Mend Archivo/Cerrar Archivo de Registro Mend Archivo/Tabla Agregar Registros Eliminar Registros Renovar la Base de Datos ‘Actualizar 0 Modificar Registros Cambiar la de Presentacidn a Cuadricula Ment Archivo/Salir ‘Mend Puerto Ment Puerto/Puerto Abierto Ment Puerto/Propiedades Ment Puerto/Longitud de Entrada Mend Password Mend Ayuda Apéndice |. Cédigo 39 Apéndice Il. El Puerto Serie RS-232 ‘Apéndice Ill. Cédigos de Barras Bibliografia Proyecto de Ingenieria Eleewoniea It Desarrollo del Software JUSTIFICACION Actuaimente la universidad cuenta con distintas salas de computo, de conauita de datos o de terminales graficas de Intemet que requieren un acceso controlado. Aigunas de estas salas estén equipadas con una cerradura controlsda a travée de una PC. El acceso se obtienen a través de un cédigo de barras 0 tecleando un password en un teclado convencional. El uso de cédigos de barras simplifica bastante la identificacion de los usuarios y permite un acceso rapido a las salas, El equipo del que dispone la Universidad es caro y limitado en cuanto a la capecidad del software de control, pero muy eficientes y de facil manejo en cuanto ‘al Hardware, fo cual abre la posiblidad ce encontrar interfaces de software mas sencillas y dindmicas que las que fueron vendidas con estos equipes. La finalidad de eate proyecto es offecer una opcién mejor para el control de les cerraduras electromagnéticas y los lectores de cédigo, siendo el inicio del desarrollo de un sistema capaz de optimizar los servicios a los usuarios de ia Universidad en mae de un ambito, que solo e! del pase a las salas de computo. El acceso automatizado que se pretende lograr mediante este proyecto es similar al sisteria que actualmente esta implementado en aigunas salas de cémputo de ja unidad. Este sistema de control de accesos consta de los siguientes elementos fundamentaies: Lector Optica de Cédigos de Barras VS1000 de SPECTRA PHYSICS. PC e interfaz de comunicacién serial y paralela. Software con base de datos. ‘Cerraduras Electromagnéticas, Proyecto de Ingenieria Bletronica It Desarrollo del Software ESTUDIO PRELIMINAR DEL PROYECTO El Isctor optico utiiza comunicacion seral en ef formato RS-232 para transmitir el dato leido de la credencial hacia la camputadora de sistema, Para saber como se establecia la comunicacion del lector hacia la computadera utilizamos un analizador de estados légicos para capturar todas sefiales que se generaban al leer el cédiga de una credencial. ‘Al principio leimos las serizles cuando pasamos una credencial con codigo valido; ya sea con acceso autorizado a la sala 0 sin él, En fos dos casos descritos se obtuvieron sefiales similares, ef lector lela el dato de fa credencial y mandaba informacion. Esta informacion se mandaba independientemente de que estuviera conectado 0 no al lector a la computadora Después se hicieron pruebas tratando de leer varios cédigo de barras que no eran de credenciales y no se obluvieron resultados, por lo que se concluye que el ‘e6digo que podia leer el aparato solo es de un formato especitico, En base a estos resultados preliminares buscamos desciftar que tipo de formato tenia que tener el cédigo de una credencial Investigamios Jos distintos oddigos que puede manejer el lector usado; esta informacién fue obterida de una pagina de Intemet, Luego de hacer comperaciones con los distintos e6digos que: puede manejar el lector VS1000 nos dimos cuenta que le ms parocide era of CODE. 39. Dedujmos que {os lectores se encontraban configutados para leer solo un tipo de estandar de cédigo, ef estancar “CODE 30° y 1 tipo de comunicacién que maneja es el tipe RS-232, Este codigo “CODE 30°, el cual se maneja para todas las credenciaies de alurmnos de la universidad se describe al final en un apéndice. Una vez determinado e! tipo de comunicacién entre el lector VS1000 y la PC (9800, 8 bits de datos. 2 de parada, sin paridad) y sabiendo que aunque las credenciales estan en formato CODE 39, el lector transmite serialmente el cédiga ASCII de ta matricula, se realizara el software. il Prosecta de Fayemetia Electronica I] Desarotia det Sortware El programa final fiene el propésite de validar credenciales que tengan acceso ala sala o a un servicio especifico Para esto se lee el dato de la credencial y se busca este valor en una base de datos donde se guardan todas fas matriculas: valida, Si el dato leido se encuentra, entonces se manda una sefal por e! puerto Paralelo indicando tal situacién para activar una cerradura magndtica. La base de datos donde se lean los registros para comparar seré realizada en ACCESS (de Microsoft por motivos de compatibtidad. La recepcién de datos del lector se nace con pardmetros de comunicacion fijos (la velocidad, datos, parada y paridad), adlo el puerto de comunicaciones y la longitud de ia entrada serin variables, El programa meneja acceso restringido para la configuracién de dichos pardmatros pues solo el administrador de la sala podré cambiarlos. El password de este acceso se encontrara almacenado en un archive de texto cadificado. Ademas maneja un archivo de registro donde se quardan todos los accesos a la sala para et propdsito de control. Como el sistema operative actus! de mayor uso es Windows, e! programa debera trabajar sobre esta plateforma, ademas, como deberé interfasarse con Access, lo mejor es utlizar una herramienta Vieual para la programacion, asi casi intutvamente fa mejor herramienta para realizar el softwate seré Visual Basic 0 Visual C++. Utiizaremos el primero por el uso de! Control Data que se interfasa cémodamente a Access y por el uso del MSCOMM para el control de acceso serial Proyecto de Ingenieria Electronica It Desarrollo dei Sofware PROGRAMA PARA EL CONTROL DE ACCESO Introducci6n: El programa en su conjunto presenta una sencilla interfaz para el control de acceso de los usuarios a las salas de cOmputo. Ha sido desarroliado de manera sencilla y clara para permitir 1a modificacion en versiones posteriores del cédigo o de la interfaz con el usuario. Se detallard el funcionamiento del programa, acompafiando cada una de las formas presentadas por su correspondiente cédigo en Visual Basic, haciendo hincapié cuando se considere pertinente en las secciones que podran ser modificadas posteriormente. Desarrollo: El proyecto en si consta de un conjunto de archivos agrupados en un proyecto de la siguiente manera: ‘Voterm (¥bterm.vbp) 8 Formularios » =U) frmabout (frmAbout. frm) 0 Frmitola (Hello.frm) O fimtogn (frmLogn.frm) O) frmProperties (FrmProps.frm) “-Q frmTerminal (vbterm. frm) ~& Modulet (vbterm.glo) Se observa que el proyecto Vbterm.vbp consta de Formularios y Médulos. Cada uno de los formularios contienen una ventana para desplegar en pantalla, y el médulo, las funciones y variables globales utilizadas por las formas. Proyecto de Ingenieria Electrinica esarrotio de! Sofware Realizarernos a descripcién del programa de manera secuencial y No necesariamente como aparecen en él érbol de niveles anterior. VENTANA DE AGCESO: Debido a que el programa permite modificar la base de datos de Access donde se encuentran registrados todos ios usuarios que tienen acceso a alguna sala determinado, ef control del programa debe restringir el uso del programa soio al administrador de la sala, asi, inicialmente el programa presenta una ventana de acceso al programa donde se pregunta el nombre de! usuario y el password de acceso (llamada a la forma frmLogin), El cédigo de la forma se muestra a continuacian: Option Explicit Public LoginCarrecto Ax Boolean Private Sub cmdCancel Click9 ‘establece ta variable global a false ‘para indicar un falio en el inicin de sesicn LoginCorrecia = False Me Hide End Sib Private Subs emdOK Click@ ‘comprucha la contrasetia correcta Dim sFiteName As Sirieg Dim iLen As hneger Dim iChurs As imeger iHileNum = Freekite Proyecta de Ingenieria Electronica I Desarratio det Sofware ‘sF tleMame.= "Cs PROPEC TO PASSWORD. TXT" (Open siteName For Input As iFileNum iLen = LOFGFiteNum) ihars fan Ingnat=FiteNiem, sPair WeiPassword - sData Then ‘site codigo aqui para indicar que ‘se conoce la cantraseha ‘to mas facil es establecer una variable global LeginCarrecto ~ True Paxe - tsPassword Me.Hide Else MsgBox “Coniraseha no valida, elves a tntentario", , “Inicio de sesion” ePassword SerFooes SendKeys "{Home} {End}™ End if Close iFiteNun End Sub ‘Se ve claramente que al pulsar el boton de Cancelar se cierta la forma y el programa termina. Por otro lado, cuando se presiona el botén de Aceptar, se compara la cadena de entrada del password con el contenido del archivo PASSWORD.TXT que se encuentra en G:APROYECTO. Si coinciden activa la bandera de LoginCorrecto y termina la funcién; si no envia una ventana de mensaje indicando el error. Al presionar OK reaparece la ventana anterior hasta que se teclee una contrasefia valida. Cuando se escribe una contrasefia valida, se despliega la siguiente ventana que corresponde a la ventana principal de trabajo llamada frmTerminal. Proyecto de Ingenieria Electrénica It (Desarrotio de! Sofware Vel Esta es la ventana de trabajo, permite configurar los parametros de recepcién de comunicaciin por el puerto serial (que se encuentra configurado para recibir informacién del lector de cddigo de barras), permite hacer cambios de Password, accader a la base de datos de usuarios en Access y modificarla, seleocionar el archivo de registro de Tecepciones del puerto serial, y mostrar informacién acerca del acceso. El diagrama muestra las partes principales de esta ventana. Detallaremos cada una de ellas a continuacién. Mi fini) Proyecto de Ingenieria Electronica tt Desarrollo del Sofware Esta serie de botones constituye el estandar en todas las aplicaciones Windows, se coloca mas por compatibilidad y comodidad qué por necesidad. 5) Barra de Informaciéi Permite desplegar mensajes del programa hacia e) usuario, como deteccién de sefales en el puerto serial, valor de los pines del DBS, puerto activo, etc. En general los estados y valores del puerto de comunicacién, asi como ej tiempo de conexién. EI usuario no puede escribir en esta barra, sin embargo si se coloca el mouse sobre las secciones de la barra se mostraré un cuadro de informacién sobre la seccion. £| Botones de Acceso Répido ¢ indicador de Puerto Abierto: Esta serie de botones permite tener acceso a las opciones de Abrir Archivo de Registro, Cerrar Archivo de Registro y Propiedades, asi como el indicador de puerto Abierto. Estos botenes son creados y administrados faciimente por el control toolbox. Aun el indicador de Puerto abierto pertenece también al mismo control. Con ambos es posible acceder a las opciones mencionadas sin tener que ocupar el mend, pues es mas Sencillo y directo simplemente hacer clic con el mouse sobre los iconos. También estos iconos muestran informacién sobre su uso al colocar el mouse sobre ellos. Proyecto de Ingenieria Elecirénica Il Desarrailo del Sofware Esta ventana se encarga de desplegar en pantalla la ultima matricula que ha accesado, independientemente si es valida o no. Muestra directamente e! contenido del puerto serial en forma de caracteres ASCII, se incluye para propésitos de monitoreo. El usuario No puede tener acceso a esta ventana. ft y *92322524 Estado: Valores. 2s 8) Barra de Meniis: Por ultimo se observa que esta ventana entre otras cosas presenta una Barra de menu con las opciones Archivo, Puerto, Propiedades y Ayuda. Estos ments se pueden accesar haciendo click con el mouse o utilizando Ja “tecla rapida ° correspondiente (indicada en el menu con el caracter de subrayado ). Por ajemplo, para el item Archivo del menu se puede presionar ALT-A. ai sie BRET Rateniena._ ayta ohrt ot aft La creacién de este ment se realiz6 de manera rapida y sencilla sin teclear cédigo sino utilizando el editor de ments. El arbol de mendes se observa a continuaci6n: Proyecto de ingenieria Eleetrénica I Desarrotte del Sotware Se observa entonces que al acceder ya sea mediante el teclado 9 mediante el mouse a los menis, la indentacién mostrada en el editor de menus se respeta de la siguiente manera: MENU ARCHIVO Las diferentes opciones del menu se describen a continuacion: 7 Proyecto da Ingeniaria Electrénica It Desarrotio del Sofwarn MENU ARCHIVO/ABRIR ARCHIVO DE REGISTRO, . MENU ARCHI IRRAR ARCHIVO DE REGISTRO: Para utilizar estas opciones se puede llegar via mend, o via botones de acoeso directo. Abrir Archivo de registro despliega la ventana predeterminada Open de Windows que sirve para abrir un archivo de texto para registrar las ltegadas por el puerto serie. Filles tipper — masts ge Por default el tipo que busca es del tipo LOG (que pertenece a los archivos de registro estandar de Windows). Una vez que se ha seleccionado, las entradas que lleguen por el puerto serial se iran almacenando en este archivo. Si el archivo no es abierto el programa funciona normalmente aun permitiendo el acceso, sin embargo no se llevara registro de la recepcion de! puerto serie. El archivo permanece abierto hasta que se ocupa la opcidén Cerrar Archivo de Registro. . MENU ARCHIVO/TABLA Al seleccionar esta opcién es llamada la forma frmTabla que hace uso del Contro! Data para el acceso a los datos de la base de datos de Access usuarios.mdb. Proyecto de ingenieria Electrica I Desarrallo dei Sotware sou Agiegas | _SBinay F-Pt sowie) agiets | 1 feat timo intro ral Registre Iral Registro Anterior ‘Siguiente En esta ventana se muestran los campos Matricula y Usuario de ja base de datos. La barra inferior corresponde al Control Data y tiene: botones para Ir al primer registro de la tabla o al ultimo, para ir al registro anterior o al posterior, ademas de mostrar el numero de registro actual en la tabla. tral primer Regietro Por otro lado se han adicionado botones para: + Agragar Registros. Se pueden agregar registros nuevos desde aqui sin tener que abrir Access para ello. El registro nuevo se adicionara al final de la tabla. Al efectuar el evento Agregar, fa base se modifica inmediatamente. + Eliminar Registros, Para hacerlo hay que posicionarse en el registro deseado y presionar este botén. La base se actualiza inmediatamente. « — Renovar fa Base de Datos. Proyecto de ingemeria Electronica |i Desarrotio det Sofware El renovar la base de datos permite cargar nuevamente la base de datos del disco en sistemas multiusuario para evitar incongriencias de datos. . Actualizar o Modificar Registros. Una vez que un registro aparece puede ser modificado sin problema tecleando directamente en las ventanas. Una vez que se haya realizado, pulse Actualizar y la base de datos sera actualizada. Si en vez de pulsar Actualizar, realiza cualquier otra accion la base no sera modificada . Cambiar la forma de Presentacién a Cuadricula. Este botén muestra otra presentacién de la base de datos del tipo GRID como se muestra en la figura. LSpez Pagola Airy 923225241 Rodriguez Gonzélez Ar 903249480 Roseles Piedragil Sail 23758 Auile Pozos Roberto 123456789 Desconocidol 123 Desconacido2 12345 Desconocido3 123486789012 Desconocido4 123456789012345 DesconocidoS La forma llamada es frmDataGrid para mostrar los registros de esta manera. 10 Proyecto de Ingenieria Electronica i Desarrollo del Sofware En esta nueva presentacién se puede Renovar la base de datos, Realizar ordenamiento de Registros o Hacer Filtrado de Registros, permitiendo una mayor sencillez en el control de los usuarios. Ademas permite modificar la base de datos al igual que la presentacién anterior de una manera un poco mas intuitiva. El cédigo de la forma frmDataGrid explicada anteriormente se muestra a continuaci6én: Dim msSortCol As String Dim mbCirlKey As Integer Private Sub Form Load) Dim bParmOry As Imeger Dim qdflmp As QueryDef On Error GoTo LoadErr "Para hacer : ‘gsDatabase es una cadena global que necesita ‘establecerse en el procedimiento startup de la aplicacton Datal. DatabaseName = gsDatabase ‘gsRecordSource es una cadena global que necesita ‘enel procedimiento que carga este formulario Datal. RecordSource ~ gsRecordsource Datal.Connect = gsConnect Datal. Recordset Type = | ‘dynaset Datal.Options = 0 Data. Refresh If Len(Datal. RecordSource) > 50 Then ‘Me.Caption = "SOL Statement" Else ‘Me.Caption = Datal.RecordSource End if Exit Sub LoadErr: ‘MsgBox "Error:" & Err &"" & Err Description Unload Me End Sub Sub cma lose_Click() Unload Me End Sub 11 Proyecto de Ingenieria Electrénica it Desarralio del Sohware Private Suh emdFitier Clickt) On Error (roto FilterErr Din reeHecordet! $3 Recordset, recRecordsel2 As Recordset Dam sFiterSir Av String [Donat Recordset Type - vbRSType Table The Beep MsgBox "Iuposible filtrac nm recordset de tipo buble" 43 Exu Sub tnd tf Ser recRecordset] - Datal.Recordset ‘Copia el conjnnio de resultados sbilterStr — InpuiBox( Eseribat la expresion de filtra:") If LentshitierSir) = 0 Then Exit Sub Screen MousePointer - vbHourglass reeRevardsetl Filter ~ sFilterStr Set revRecordsei2 recRecordset 1. OperRecordseitrecRecordse]. Type} ‘Establece el filtro Set Detal.Recordset recRecurdset? ‘Asigna de nnevo at objeto Reconiset original Screen MausePointer — voDefialt Exit Sub Filterire: ScreesMousePointer _vbDefoult ‘MigBox "Error." & Err 6°" Bre Description Exit Sub End Sib Proverte Sich emdRefresh Click() On Frees GoTo RefFrr Deuel Revordsei.Requery Exit Suh RefEar: ‘MsgBox “Fron: & Fre d"" & ker Description Exit Sub Find Subs Private Sub emdSort Click) On Error GoTo Sontrr Dim recReecordsett As Recordset, recRecordset? As Recordset Dim Sorter As Siring I Latad Recordset spe ~ vbRSTypeTable Then Beep MogBox "Imposible ardenet wi recordset le tipo Tale”, #8 Exit Sub End if 12 Proyecto de ingenieria Electrénica Desarrollo det Sofware “Copua el recordset PlenimsSariCol) 0 Then SortSir = InpuiBox("Eseriba ta cadena ue urden:"7 Uf LentSortSir) ~ 0 then Exit Sab ilse write saxSoriCol nd If creen. Mouse Painter ~ vbHourglass recRecordsei? Sort ~ SortStr ‘Esublece el ordett 1 recRecordset? recRecordset!.OpenRecordsettrecRecordsetl. ype) Set Dauat. Recordset ~ recRevordset2 Screen.MouseVomter ~ vbLefault Exit Sub Sort cron MousePonuer ~ vbDefault MsgBox "Error" & Err & "" & ErrDescription Exit Sub End Sub Private Sub Form Resize) On Frror Resunie Next Me.WindowSite 1 Then grdDdataGrid. Height = Me Height -(425 picButions. Height) End if End Sub Private Sub grdDataGrid BeforeDeletefCancel As Integer) Uf MsgBox(";Desea eliminar ta fila achat?” vbYesNo ~ vbQuestion) . - vbYes Then Cancel — Trne Fn If End Sb . Private Sub grdDataGrid_Beforet palate(Cancel As lneger) Uf MsgBox(";Desea realizar las cambios?”, vbYesNo + vbQuestion) —_ vb¥es Then Cancel ~ Trae band Uf End Si Privaw Sih grdPatetjrid_HeadClick(ByVal Calindex As Integer) ‘Ahora se urdena por esta cohmna 13 Proyecto de Ingenieria Electronica tt Desarrollo del Sofware f Daral.Recordserlype ~ vbRS Type Table then Exit Sub ‘Comprueba el uso de la tela Cirl para semido descendente IfmabCtrlKey Then msSartCol "I" & Datal. Recordses(Callndexy.Name & "J dese” abl triKey ~ 8 reset it Kise msSoriCol "7" & Datal RecordseColladex). Name & "J" Find ff cemdSort Click Sort ol - vbNuliString ‘Le restablece Aanid Sub Private Sub grdDataGrid Mowsellp(Buion As Integer, Shift As Integer. x As Single, ¥ As Single) mbCirlKey - Shift tend Sub Una vez modificada la base de datos, las formas no le permitiran salir si antes no ha actualizado la base de datos, preguntandole mediante un cuadro de didtogo de ta siguiente manera: El cédigo de la forma frmTabla que se dedica al contral de total de la base de datos se describe a continuacién. Private Sub emdAdd Click) Datal. Recordset AddNew Find Sub Private Sub emdDelewe Click ‘esto puede producir un error si elimina ef tiltimo ‘registro wel inico del recordset With Danad Recordset Delete “MoveNext 14 Proyecto de Ingenie Electronica It Desarrollo del Sofware W EOF Thwn Movelass Find With Ered Sub Private Subs emdRefresh Click} ‘silo es necesario pare uplicaciones le mmifiiples usnario Data Refresh Find Suh Private Sub crmdUpeate Click) Data}. Update Record Datal Recordset, Bookmark Dusal.Recordset LastModified End Sub Private Sub crmdGrid Click(j On Error Gola cmdirid Clicktire Dima f As New frmDotaGrid Set f Daial. Recordset = Datat Recordset f Caption - Me.Caption & "Grid" ‘fShow ‘Bicit Sub emdGrid ClickEer: End Sub Privare Sub Dauat_ErrortDaakirr As tuwger. Response As Imegers ‘Aqui es donde puede sitar el cédigo de tratamiento de errores 'Sé desea ignorar los errores, quite el cometnario de ta siguiente linea ‘Si dewa capurarlos, agregue cédigo agni para controlarlos AsgBox “Data error event hit err.” & ErrorS(DataErr) Response - 0 ‘despreciat el error End Sb Private Sub Datat_Reposttiony Screen. MousePoiater ~ vbDefault On Exvor Resume Next ‘Esta mostrard la postetéw acmal del registro ‘para dynasels y snapshois Datat-Caption ~ "Record: " & (Datat Recordse AbsolutePosition ~ 1) ‘para el objeto table debe establecer ta propiedad index cuando ‘ve cree ef recordset, y usar ia linea siguiente ‘Daral.Capiion =" "Record: " & — Dasal.Recordses RecordCoum —* (Datel Recordset PercentPostiton * 0.01) ~ 1 15 Proyecto oe ingenieria Electronica il Desarrollo dal Sofware Find Sub Private Sub Datta! VatidatetAction As Integer, Save Ax Integer) ‘Agu se sities ef cokliga the vatideciehe ‘xte evento se mvoca cuanda ceurre le siguiente accion Select Case Action Case vADatadctionMeve First Cane vADatadetonMovePrevions Cave rbDatadctionbtoveNext Case vbDauActionbiovel ast Case vbDatadctionAddNew Case vid ataAction| ipdette Cave vhDotadctionDelete Case vbDetuAction¥ ind Caye vDataActioniiookmark Case vbDataActionC lose Screen MousePoiner ~ vbDefault End Select Sereen MousePomter = vbHourglass End Sub Private Suh Form Untoad(Cance! As Integer) Screen MonsePotner = vbDefeult Fmd Sub ° MENU ARCHIVO/SALIR Esta opcién permite salir del programa cerrando todas las formas activas hasta el momento, y cerrando los archivos abiertos si es que los hubiera. 16 Proyecto de Ingenieria Electronica It Desarrollo del Sofware MENU PUERTO Las diferentes opciones de! ment! se describen a continuaci6n: Esta opciédn del menu permite abrir e! puerto de comunicacion seleccionado en propiedades a fa velocidad y parametros predeterminados (9600 bps, 2 bits de parada, 8 de datos y Sin paridad) para permitir la recepcién de datos por el puerto. Se puede acceder a la opcién via ments o por el icono de acceso directo indicador de puerto abierto. . MENU PUERTO/PR DADE: Esta opcién llama a la forma frmProperties que realiza la peticion del puerto de comunicacién. Esta forma caracteriza las propiedades del control de comunicacién seriat MSCOMM de la forma principal frmTerminal. La forma muestra los parametros de Velocidad Maxima, Bits de Datos, Sits de Paridad, Bits de Parada. Tipo de Control de Flujo de la comunicacién entre PC — Lector de Cédigo de Barras. La Unica opci6n seleccionable ¢! numero de puerto a utilizar debido a que distintos equipos pueden manejar diferente puerto de comunicacién. La forma luce asi: 17 Proyecto de Ingenieria Electronica II Desarrollo del Sofware El cédigo de la forma es el siguiente: Private iTempEcho As Boolean Sub LoadPropertySetings() Dim i As Imeger, Settings As String, Offset As Integer " Carga las configuraciones de puerto Fori= 11016 cboPort.Addltem "Com” & TrimS(StrS(i)) Nexti " Establece la configuracion predeterminada Settings = frmTerminal MSComm! Settings cboPort.Listindex = frmTerminal. MSComm1.CommPort - 1 End Sub Private Sub cmdCancel Click() Unload Me End Sub Private Sub emdOK Click() Dim OldPort As Integer, ReOpen As Boolean On Error Resume Next Echo = True 18 Proyecto de Ingenieria Electrénica I Desarrollo del Sofware OldPort = ferTerminal MSC omm!.CommPart NewPort - choPort.ListIndex ~ 4 [fNewPort — OhdPor! Then ‘St cantbia vl nimera de prerto, cierra ef emtigaio. H freaTerminal MSCommal Port pen Then drmTermainal MSComm|.PartUpen False ReCpen ~ Tre fod if frea Terminal MSComm!.CommPort NewPort ' Establece ef mevo imera de puerto. WEre 0 Then UH Retpen Then fimTerminal MSComm l,PortOpen ~ True “femTorminal. mm Open Checked ~ frmTerminal MSComm. PoriOpen End if Cad if Uf Fir Then Msgbior Errors, 18 fro Terminal MSCommt.CommPart ~ OldPort Exit Sub Ent if End If SaveSetting App-Tite, "Properties", "CommPort", Sem Terminal MSComm.CommPart Unload Me Fad Sich Private Sub Form Load) * Extablece el tamatto del formulario Me.Lefi = (Screen. Width - Me.Widihd 2 Me. Top ~ (Screen. Height - Me Height) 2 * Ajusia el tamaito del marco al control tabstrip fraSettings Move tabSetings.ClentLefi, tabSettings ChentTop “Se asemura de que ef marco sea ef contral situado encima fraSertings.LOrder ° Carga la coufiguracién actuet de las propiedades LoadPropertySenings Farid Sub . MENU PUERTO/LONG/TUD DE ENTRADA Esta opcién despliega un cuadro de entrada para teclear la longitud maxima de la cadena a recibir. Esta opcién es necesaria por propésitos de compatibilidad con aplicaciones futuras donde las 19 Proyecto de Ingenieria Electronica I! Desarroilo del Sofware matriculas o algun otro parametro registrado en cédigo de barras sea mayor que 12 caracteres. Lo cual es muy probable. La ventana mostrada es la siguiente: MENU PASSWORD Este meni permite cambiar el password de! sistema. Esto se hace necesario debido a que los passwords deben ser cambiados con regularidad por motivos de seguridad. Nunca se desea que usuarios no autorizados modifiquen algo en la base de datos o en la configuracion. La forma llamada es frmPassword. Al seleccionar este menti aparece la siguiente ventana Una vez que se teclea el password nuevo, se pide confirmacién para asegurar que el password fue tecleado correctamente. El Password es de cualquier longitud y acepta cualquier cardcter. La 20 Proyecto de Ingenieria Electronica It Desarrollo de! Sofware ventana tiene una tinea donde muestra informacién sobre las acciones tealizadas en esta ventana. El cédigo de esta ventana es el siguiente: Private Sub emdSalir Clickt) Uitlocad Me End Sub Private Sub Command! Click0) U Textl. Text ~ Text2. Text Then sFtleNum — Fre FileName ~ "CPROYECTO PASSWORD. TXT" Open sFileName For Output As iFiteMume sData = Textl Text Print iFileNum, sDaia Close tFileNum Text3.Text ~ "Password Modificado..." Comment. Enabled = Fatse Else Teul.Tent = *" Text2.Text =°" Text3.Text ~ "..Confirmacién no valida..." End if End Sub MENU AYUDA Este mend es solo para propositos de presentacién. Al seleccionaria se activa la siguiente forma frmAbout que se muestra a continuacion. 21 Proyecto de Ingenieria Electronica It Desarrollo de! Sofware Al presionar Informacién se llama el control Microsoft System Information el cual arroja informacién detallada sobre el sistema donde se esta utilizando el programa. 22 Proyecto de Ingenieria Electronica Nt Desarralla del Software | Windowe managed evap th on rive © C2BTME tree) Avalos space on dive C 2578 of 27ME FAT) Ava epece on drive 0: 185048 of 10428 (FAT) El cédigo de esta forma es el siguiente: Option Fplicie * Opciones de seguridad de claves del Registro... Const READ CONTROL = 丠 Const KEY QUERY VALUR = @H Const KEY SET_VALUE ~ 4H2 Const KEY CREATE_SUB_KEY ~ &#t4 Const KEY ENUMERATE SUB_KEYS = &H8 Const KEY NOTIFY ~ &H10 Const REY CREATE LINK = &F120 Const KEY ALL ACCESS ~ KEY QUERY VALUE + KEY SET VALUE KEY CREATE SUB. KEY ~ KEY. ENUMERATE, SUB_KEYS~ _ REY NOTIFY + KEV CREATE_TFINK ~ READ CONTROL ” Tipos principales de claves del Registro... Cons HREY LOCAL, MACHINE ~ 6180000002 Const ERROR_ SUCCESS = 6 Const REG SZ 1 " Cadena Unicode terminaxia en Null Const REG DWORD = 4 * Niimero de 32 bits Const gREGKEYSYSINFOLOC = "SOFTWARE Microsoft Shared Tools Location" Const gREGVALSYSINFOLOC ~ "MSINFO" Const gRNGKEYSYSINFO = "SOFTWARE Microsoft Shared Tools: MSINFOQ” Proyecto de Ingenieria Electrénica I Desarrollo det Sofware Const gREGVALSYSINFO = "PATH" Private Declare Function RegOpenKeyEx Lib “cubvapi32" Alias "RegOpenKeyExA” (ByVal hey Ax Lang, By\al ipSubKey As String, ByVal uiOptions Ax Long, ByVal samDesived As Long, BiyRef phkResult As Long) As Long Private Declare Function RegOQueryValweEx Lib “adoapi32” Alias "RegQneryValueBcA” (ByVal hKey As Long, ByVal fp¥alreName As String, ByVal IpReserved As Long, ByRef IpType As Long, ByVal ipData As String, ByRef IpcbDaia As Long} As Long Private Declare Function RegCloseKey Lib "advapi32” (ByVal hKey As Long) As Long Private Sub emdSysinfor Click Call StartSysinfo End Sub Private Sub emdOK_ Click) Unload Me End Sub Private Sub Form Load * Me.Capuon = "Acerca de " & App. Title IblVersion.Captton ~ "Version " & App Major & °." & App. Minor & "." & App Revision ' IbiTitle. Caption — App. Title End Sub Public Sub StartSystnfot) On Exror GoTo SysinjoFrr Dia ve As Long, Dim SysinfoPath As String “Prueba a obtener del Registro ta informacin del sistema sobre ef nombre y ka ruta det programe... Uf GetKeyValue(HKEY LOCAL MACHINE, gREGKEYSYSINFO, gREGVALSYSINEO, SystrifoPath) Then * Prueba a obener det Regisiro la informacion cel sistema sobre la resa del programa... Etself GetKepahre(HKEY LOCAL MACHINE, gREGKEYSYSINFOLOC, gREGVALSYSINFOLOC, SysinfoPath) Then * Comprueba la existencia de una versién conocida de un archivo de 32 bits I Dir(SpstnfoPath & “MSINFO32 EXE") <>") Then SysinfoPath = SysinfoPath & "MSINFO32 EXE" ‘Error - Impasible encontrar el archivo. Else Golo Sysinfokrr End if 24 Proyecto de Ingenieria Electiénica i Desarrolio det Sofware ' Error - imposible enconirar ta entrada de Registro... Else Gola Sysinfobrr Fu if Call Sheli(SysinfoPath, vbNormaiFocus) Exit Sub Svsdanfalirr: MsgBox "System Information 1s Unavailable At This Time”, vbOKOnly Fond Sub Public Function GetKeyWalue(KeyRoot As Long, KeyName As String, SubKeyRef As String, ByRef KeyVal As String) As Boolean Dim 1 As Long ‘Comador de bucte Dita re As Long " Cédigo ele retorno Dim hKey As Long ° Controlador a una clave de Registro abierta Dims hDepth As Long é Dim Key¥alType As Long "Tipo de dato de una clave de Registro Dien impVal As String ‘ Almacén temporal de wna valor de clave de Registro Dim KeyValSize As Long " Temaito de la variable de la clave de Regisiro ' Abre la clave e Registro en la raiz fAKEY LOCAL MACHINE... re = RegOpenKeyFx(KeyRoot, KeyName, 0, KEY_ALL ACCESS, hKey} * Abre la clave cle Registro. If fre» ERROR_SUCCESS) Then GoTo GerKeyError —_‘ Trata el error. ampVal ~ StringS(1024, 0) " Asigna espacio para la variable ReyWalSize = 1024 * Marca ef tamatio de ta variable ’ Recupera valores de claves de Registro... 10 ~ RegQueryWaluelex(hKey, SubKeyRef. 0, KeyValType, tmpVal, KeyValSize) ' Obtiene o crea un valor de clave Uffre~ » ERROR SUCCESS} Then GoTo GetKeyError —' Traktel error If (Asc(MiditmpVal, KeyValSize, 43) = 0) Then‘ Wind agrega wna cadena terminada en Nel. tinpV al = LefitempVal, KeyValSize - 1) "Se wncontrd Null, se extrac de fa Else “WinNT no tiene wna cadena terminasda en Null... 25 Proyecto de Ingenieria Elecirinica 1! Desarrollo del Somware dmph ial = Lejtftmplal, Key alSize) Na se encorirs Null, silo se extrae la cadens id if * Determina el po de valor de la clave para vanversién... Select Cave Key¥al Type * Busca tipos de datos... Case REG SZ “Tipa de dato de la cadena de ta clave de Registro Kes¥al ~ tmpVat * Copia el valor de la cadena Caw REG DWORD “Bl po de dato de la cadena de la clave es Double Word For i = LenfimpWal) To 4 Step -1 * Convierte cada byte ReyVal - KeyVal ~ HextAsc(Midfenp¥al, i, 11)}' Genera ef valor carccter a cardcier Next Key¥al - FormarS("&h” + KeyValy "Comvierte Doubfe Word a String End Select GeiKeyVatue = True ' Vuelve con éxito re = RegCloseKeythKey) * Cerra ta clave de Registra Exit Function ' Satir GetKeyError: —' Restaurar después de que ocurra un error... KeyVat -"" * Establece el valor de retorno para una cadena vacia GetKeyWalue - False ‘Devuelve wn error re = RegCloseKepthKey) " Cterra la clave de Registro aud Function Finalmente ya que se ha detallado en cada una de las formas y cddigos respectivos. Veremos el cédigo de la forma principal que une a todas las demas: 26 Proyecto de Ingenlesia Electrica it Deserta del Sofwere ‘ yBTerm - Este es un programa de demostracin del * control ActiveX de conmumicaciomes MSComan. ‘ Programsade para Proyecto de Ingenisrla Electrénica I. ‘por Arie! Rodrigues Ganziler, Lopez Pagoia Airy y Rosales Piedragit Sail, ‘WAME 1999 Opaion Explicit Dim Ret As Integer’ Envero cusiliar, Dim Temp As String ' Cadena cuciiar. Dim hLugtite As Integer ' Cautrotador de archivo de registro ablerto. ‘Dim StartTime As Date 'Almacena la hora de iicho del erondmetro def perio. 27 Proyecto de Ingenieria Electronica I Deserrolta del Sofware Private Sub Form Loadi) Dim CommPort As Siring. Hanishaking 4s Sirmg, Settings As String Dir flagia Ax New froeLogin _flogin Show vbModal Uf Not fLogi.LoginCorrecto Then "Error al iniciar. ta aplicacion termina End Kod if Unload fLogin (On Exrar Resume Next " Extablece (a hic indicadora de estado imgNotC onmected. Z0rder * Carga la configuraciin del regisire: Settings ~ GetSetting(App, Title, "Propertie fren Terrtinal. MSC orm | Settings} Ip Sotungs +" Then MSConann 1 Settings = Settings If Ese Then MsgBox Errors, #8 Exit Sub End if End if CommPart = GeiSening(App Tile, “Properties”, "CommPort”, "")' fronTerrninal MSComm!!. ComnPort Y CommPort ~~ """ Then MSComm 1.ComePort ~ CommPort Handshaking = GetSeritng(App. Tile, "Proparties", “Hlandshaking”, "") JrmTerminal MSComm! Hardshaking Uf Hawsdshaking "Then MSComme |. Handshakmng — Handshating Ere Then MsgBox Errors, $8 Exit Sub End if kind if Echo ~ GotSottinglApp Title, "Properties", "Echo", ")' Echa On Error GoTo 0 Find Sieh Private Sub Form Restze(j * Siti fa tue indicadora de estado Frame .Lept = ScateWidih - Framel. Width * 2.5 End Sub Private Sub Form Unload(Cancel As Integer) Dim Counter As Long YMSComm}.PoriOpen Then 28 Proyecto de Ingenieria Elecrénica | Desarrollo det Sotware " Experae 10 segunda pre (ranseitir tos datos Counter ~ Timer 10 Deo While MSCormel. OutBufferC aunt Ret Pak-vents() Uf Timer Coneuer Then Select Case MsgBoxt"Impasihle enviar las datos”, 34) *Comcelar, Case 3 Cancel True bxit Sub * Retntonver. Case 4 Counter Timer - 10 Ugnorar. Case 5 Exit Do End Select bad if Loop MSComm f. PortOpen — End if " Stel archivo de registro estd abierto, vuelea y fo clerra Shkoghite then mraCloseLog Click Frud ‘Bind Sub Private Sub imagCamnected Ctick() "Llama a ta retina rnCpen Click para aliernar entre conectar y desconectar. Call maneCpen_Click End Sub Prevate Sub imgNotCommected Click) “Lama a la ritina rowCpen Click para allernar entre conectar y desconectar. Call maOpen_Click ind Sub Private Sub taraCloseLog_ Click) Crerra el archiverde registro, Close hhogFile ihogtile — 0 mmau(pend.og. Enabled = True thr ToolBar Buttons(’ OpenLogt ite") Enabled = True mmaC loseLog.Enabled ~ False ‘he FualBeer Butons("ClaseLogF ite") Enabled ~ False JrmTerminal.Caption — "Terminal de Visual Basie” 29 Proyecto de Ingenieria Electrinica t Desarratle dot Sofware Private Sub rmwdcerca Click) frmahont Show vbModal End Seb Private Sub mmus-vekxit Clickt) “Utila Form Unload, ya que tiene cédizo para comprotar si leay datos “no eintados y st hay un archivo de registro abierta, Form Undosid Ret End Sub " Este procedimiento establece ta propiedad Inputlen, que determina ’ ef mimero de bytes de datos leidos cada vez que s¢ usa [npr para * recuperar datos del biifer de entrada. ’ Al establecer 0 en IngutLen se especipica que debe leerse todo eb * comteniddo de! bier. Private Sub moacinputlen_Cliokt) Temp ~ IngutBoxS/"Introdazca nuevo Ingutlen:", “Tapuaken", (StrS(MSComm |. inputlen)) {flenfTemp) Then MSComm f inputLen = Vaiffemp) Uf Err Then MygBox Exror5, 48 End if End Sich Private Sub mProperaes_ Chek " Muesira ef formularic de proptedcdes de CommPort _frmProperites Show vbifodt End Sub * Alterna ef esiado del puerta (ableria a cerrado). Private Sub memOpen Click) On Error Resume Next Dim OpenFlag MSComm PartOpen = Not MSCommi.Pori(pen Uf Err Then MsgBax Error8, 13 Open lag ~ MSCommi.PortOpen munddpen Checked ~ Opent lag If MdSComm 1. PortOpen Then imgCanaected 20rder StartTiminng 30 Proyecto de Ingenieria Electronica It Desarroilo del Sofware Else ImgNotC onnected. ZOrder SwpTiming End if End Sub Private Suh mnapenLog_Click(s Dim replace On Error Resume Nett Opent.og Flags - cdi OFNHideReadOnly Or edi NExplorer Openog. CancelErrar ~ True " Obtiene del usuario ef nombre de archivo largo. Openi.og.DialogTitle = "Abrir archivo de registro de comunicactones” Opentog. Filter ~ “Archives de registro ¢* LOG)'*,log: Todos los archivos (*.*) *.*” Do Opentog. filename Opentog. ShowOpen Wf Err ~ cancel Then Exit Sab Temp ~ Open.og filename 4 ‘Stel archivo ya existe, pregunta al wsuario si desea " sobrescribirlo o agregarle datas. Ret = Len(DirS(Temp)) HEr Then MsgBox Errors, 48 Fait Sub End if Ret Ten replace ~ MsgBox("Reemplazar ef archivo -" - Temp - "?", 35) Else replace ~ 0 band iF Laap White replace - 2 El usuario ha hecho elte en el boton Si, asl que elimina ef archiva, U replace ~ 6 Then Kill Temp Wf Err Then MugBox ErrorS, 48 Exit Subs Rad if nd if * Abe ef archivo de registro. hLogFile ~ FreeFile Open Temp For Binary Access Welle As hLogFile Wve Then MsgBox Errar8, 48 Close hlogFite : proyecto usnarios.mdb” 31 Proyecto de Ingenieria Electronica UL Desarrollo del Sofware Fa al final del archivo para poder agregarle nuevos datos. seek hLogPile, LOF(hLogFile) 1 Kad If _fronTeroninal.Caption ~ "Terminal de Visual Baste" - Opentog FileTitle nad pening Frathled - False thr ToolBar. Buttons("OpenLogt ile") Enabled ~ False med Tose Log.Enabled ~ Trite shr ToolBar. Burtons("CloseLngFile), Enabled ~ Trwe Exnd Sub Private Sub mmnarablaClick¢) fran Tablat, Show Find Sub El evento OnComm se usa para imerceplar eventos y errores ike comuricaciones. Privaie Statie Sub MSComm 1 _OnCommm() Dina EVMsgS Dita ERMsgS * Bifierca segio lo propiedad Convent. Select Case MSCoram!.CominEvent * Mensajes de eventa. Case comisRecere Dim Buffer As Siring Dien Aus As Variant Ane MSCommt.fuput W tAwst) ~ 13) Or findice ~ MSComumt. tnputLen) Then ‘fembdat¥ el Show ‘Primer. Part 1 * Prinwr. EretDoe indice 0 band - 6 find tf hand ~ 1) Then Buffer ~ Buffer & (Aus(0} - 48) indice ~ mice ~ 1 band f HlAux(d) = 42) Then indice ~ 0 band End "Debug Print "Recibir -" & SirConv(Buffer, vbtinicode) "Show Data het Term, (Sir on Buffer, vbUnicode)) 32. Proyecto de Ingenieria Electréaica it Desarrollo det Sofware ‘et Terim. Text ~ re1Term. Text ~ Bugfer Case comBy Senet Case coms TS EV MsgS ~ “Deteetato cambioen CIS" Case comEVDSR FI MbyS —"‘Detectadlo cambio en DSR” Case come’ D EINMGGS ~ "Derectado cambio en CD" Case camEvRing FV Msg = "Et eléfon est sonando” Case comEy EOF EV MsgS "Detected el final det archivo" * Mensajes de error, Case comBreak ERMsgS ~ "Parada recibicla” Case com DIO ERMsgS = “Sobrepasado ef ttempo de espera de detecetin de portadora" Case comCTSTO ERMsg8 - "Soprepasada el tiempo de espera de CTS" Case comDCB ERMogS — "Error recibiendo DCB” Coase camDSRTO ERMsg8 = "Sobrepasada el tiempo de espera de DSR” Case camFrame ERMegS - "Error de mareo” Case conOverran ERMsgS ~ "Error de sobrecarga” Case come Over ERM gS = "Desbordamienia en el biifer de recepctin” Case combsParity ERMsgS ~ "Error de paridad” Case comTxbull ERMsg8 = "Bigfer de tranemisién lleno” Coase Else ERMsg5 = "Error 0 evento desconocido” End Select If LerEVMogS) Then * Muesira los mensajes de evento en la barra de estado. sérStatus Panets("Stas"), Text ~ "Estado:” & EVMagS * Activa ef erondmetro para que el mensaje de la harra ‘de estato se borre después de dos segundos, Timer2.Lnabled - Tree Filsolf Leng RMsg5) Then "Iduestra tos mensajes de evento en la barra de estado, shrStatus. Panels("Status") Text = "Estados" & ERMggS ” Muestra los mensajes de error en un cvusdro de afer. 33 Proyecto de Ingenieria Electrénica It Desarrollo del Sofware Beep Ret MygBouERMfeyS. 1, "Haga clic en Camcelar para salir, etic en Acepuar para égnarar."} ' Si ed usuarin have clic en Canoviar (2)... ifRet Then ‘MSComm!,PorsCpen ~ Fube 'Cherra f puerto y sale End if * Activa ef cronimetro para que el trensaje de ta barra ‘de estado se barre despues de ox segundos, Timer2.Finubled True * Este procedimiemo ogrega datos a la propiedad Text det ‘ cameat Term. También filiea lox caracteres de control, * camo RETROCESO, retarna de carro y avances de Tita, y * escrthe datos un un archive de registra, * Los earacreres RETROCESO elimina el cardcter siimatla "su ioquierd, yor sea en fa propiedad Yert oen la cadena * pasada. Se agregan caracteres de avance de linea a todos ‘las retornos de carra, Fl tamaito de ka propiedad Text del * comrol Term también se controla para que munca exceda de *MANTERMSIZE caracteres. Private Static Sub ShowDaiatTerm As Control, Data As String) On Error GoTo Handler Const MAXTERMSIZE ~ 16000 Dira TermSize As Log. § "Se anegnra que el texto existente no se haga demasiade largo. TermSize - LenfLerm. Text) If TermSize MAXTERMSIZE Then Term Test = MUdtS(Term.Text, 4097} TermSize ~ LentTerm Testy End if * Apwite al fal de fos datos de Term, Term SelSiari = TermSize + Filira y procesa los caracteres RETROCESO. Do 4 inSfData, Chr$(8)) i then Wi = 1 Then Term SelStart ~ TermSize ~ t Term Seidengg — 1 Lara ~ MidS(Data, i ~ 1) Five Dara = Left SDrata, Fad i” 2) & MidS(Data, i 1) 34 Proyecto de Ingenieria Electrénica I Desarratio cet Sorware End Loap While i * Elintine das avances de lined, Da i - InSirtData, CheSt10)) wi Then Data LefiS(Pata, i 1) & MidS(Data, t - 1) End if Loop White | * Se asegurra de que todos fos retarnas de carro tengan un “avence de Hine sot Do i fi Data ~ LefiS{Data, i) & ChrS(10) & MidSfData, i - 1) ieint End if Loop While | * Agreges lax datos filrrexlos a ta propiedin! NefTew. —- TermSelTexs ~ Data * Registra tos datos en un archivo st asi xe solictia. Ub LogPite Then 1-2 Do Er - Put hLogtite, . Data I Fre Then 1 - MegBax(Errors, 21) i -2 Then amuCloseLog Click End ff Fail tf Loop While 2 End if ‘Term, setStart ~ Fan{Term. Text) Exit Sub Handler: MogBox Errors Resume Next Enel Sub i. Dae, ChrSU3)) Private Sub nmuPassword Click() * Muestra el formulario de propiedades de CommPort FirmHola.Show vbModal End Sub 35 Proyecto de ingenieria Electronica i Desarrollo det Sofware Provate Swh Timer2 Timerd shrStates Panets(*Siatus"). Fext — Homer? Fuusbhed ~ False Fad Sub * Las pubacrones interceptadas agni se enviant * al coutral MSComm, donde se devwelven a toavés ‘def eventa On omm (comEvReceive), ¥ 8e muestran * con el procedimiente Show Duta, Private Sub edTerm KeyPress(KeyAseii As lmeger) "Stel puerto extd abierto.. HEMSCommt PortOpen Then "Enwia la palsacten: af puerto. MSComml. Oupa ~ CheS(KeyAscil) “Si ef eco no esid activade, no hey ‘ necesidad de que ei contrat de texto " muesire iq tecla, Normalmente, ef mddem ‘devolverd:el carter, I Net Echo Then * Sitia la posicién al final del rermined sxtTerm.SelStart = Lenitet Term) KeyAsci - 0 End If Find if End Sub Estado.” Private Sub thr ToolBar BuitonClick(ByVal Burton As Select Case Button Key Case "pent ogtite” Catt mawOpentog Chek Case "Closetogt-ite” Call mana laselog Click Case "Properites” Call mouaProperties Click Foul Select End Sub Private Sub Timert_Tomert) "Mestre le hore de comexiins shrStanus. Panelst "Connect Tinta". Text ~ KormaitNow - StartTimme, “hhera Enel Sub " Llama a esta floreion para iniciar ef cronimetro ComuctTime yarn 36 Proyecto de Ingenieria Elsctrinica I! Desarotio det Sofware Private Sub StarrTommgi) SiartPime = Now Timer 1. Eraabled ~ True End Sud * Lama a ests funciin para dewner el eronomeraje Private Sub Siop Timing Timer |. Enabled — False sbrStatns. Panelsf Connect Time"). text =" Find Sub 37 Provecta de Ingenieria Exec |b Desarrollo del Sonware Apéndice |. Lector Optico Los lectores de cédigos de barras adquiridos por la Universidad, son los lectores de alto rendimiento disenados gara ser usados por periodos proiongados de tiempo. Algunas caracteristicas de este lector se mencionan a continuacion Simbologias decodificadas UPC/EANLIAN UPC-AIUPC-E EANG fEAN-13 JAN-BIJAN-13 ‘With P2 & PS Add-ons Cédigos Industriales: ITF (Interleaved 2 of 5) Code 128 Code 39 can stitching MSUPlessey Comunicaciones: IBM 468x / 469x OCIA ( PSC.NCR ) Keyboard Wedge RS-232 Git 38 Proyecto de Ingenieria Electrica If Desarrollo ei Software Apéndice Il. Cédigo 39 El cédigo 39 © “code 38” es un esténdar para cédigos de barras. de construccién sencilla y que maneja 44 caracteres distintos “Para convertir una cadena de datos a cbdigo de barras se realiza el siguiente procedimiento: Tomando como ejempic la cadena 91220680, la conversién o codificacion, comienza poniendo al inicio y al final de esta, dos asteriseos, con el fin de reconocer y establecer un inicio y un final, El resultado es la cadena *91320680" Cada cardcter tiene un patrén de lineas unico, los caracteres de la cadena ejemplo tendrian sus equivalente como se muestra en ia siguiente figura: Para cada cardcter se asignan cinco lineas negras y cuatro espacios biancos, que pueden vatiar de grosor y en conjunto ocupan el mismo ancho que cualquier otro cardeter codtficado. El grosor de las tineas, tanto negras como blances es de 08 tipos: sencillo o doble, 39 Proyecto de Ingenieria Electonics lt Desarrs dé Safisare El cédige final queda como se muestra en /a siguiente figura: *91320680* UAE Este es el formato que se usa para construir, los codigos de barras para tas credenciales de esta unidad universitaria, Ademas de la matricula. se anexa un numero mas al final de la cadena, este nimero es para fines de contrat interno del Area de Servicios a Usuarios, La cadena de caracteres final que quedaria impresa en la credencial seria entonces °913208801°.La separaciin de cada patron de Jineas de cada caracter es el de un espacio sencilo, En la siguiente figura se muestran los patrones de todos Ids caracteres que se manejan en el estandar "code 39°, ' : : : i 40 Provecto de Ingemera Elactrcneca If Desurrotio del Somare El siguiente diagrama se obtiene a la salide del pin 2 (RX) del conector DBS que sale del lector optico, las sefiales DRT, DSR, y RTS, se mantienen activas todo el tiempo y la sefial CTS solo durante la transmision serial da datos Coma se puede observar en el diagrama, el intervalo de tiempo base en la transmisién de datos es de aproximadamente 100us (104.16). De tal manera que ta velocidad de transmision es de 9600 baucios, Utiizamos un programa desarcollado en Visual Basic que es capaz de leer datos a través dei puerto serial a distintas velocidades y con distintas longitudes de datos. Conectando la computadora a la salida del lector Optica, reafizamos fa lectura de credenciales y se capturd lo que el lector mandaba, constatando que realmente s¢ transmitia a 9600 baudios 41 Proyecto de Ingemeria Elecironia I Desarrotiowdel Sottware Apéndice Ill. El puerto Serie RS-232 EI puerto serie RS-232 que se emplea en las computadoras, PC, médems, conmutadores (SMDR, CDR), terminales, impresoras, Phone Manager, tiene sus inicios en fos atios 60's por la ElA (Electronics Industries Association de los EEUU). y fue creado para ofrecer una interfase entre aparatos que requieren comunicacion de datos, como los arriba mencionados, durante los ultimos 30 afos que este ‘esténdar ha estado en uso, los equipos han evolucionado tremiendamente, sin ‘embargo, la forma inicial RS-232 ha cambiado muy poco y estos cambids son nommaimente debidos a la interpretacion propia de algunos fabricantes. Una interfase es un aparato 6 dispositivo que se conecta para comunicar dos aparatos, por ejemplo una PC con una impresora, un conmutador con una PC, etc. Las computadoras se conectan con cualquier equipo periférico, a través de sus puertos paralelo 0 serie, en este caso estaremos analizando el puerto serie RS-232. En una computadora puede haber varios puertos series, a los que normalmenta se Jes denamina COM1, COM2, COMS, ete. El tener un puerto serie estandar inlemacionalmente, permite que distintos fabricantes produzcan aparatos que, utlizando esta norma, se interconectan entre si, aumentando asi las posibles aplicaciones y la conectividad entre equipos. En el concepte de comunicacién serie de datos 6 informacién, se requiere un minimo de dos alambres, para poder establecer la comunicacién (esto es, una comunicacion full-dupiex tipo teleténica). $i desea tener una comunicacién bidireccional por un par de hilos y esta consiste en una serie de bits de informacion, se requieren otras terminales que indiquen a a interfase, cual de los aparatos interconectados transmite y cual recibe, que tipo de informacion es. cuando el aparato receptor esta listo para recibir, cuando el transmisor esta listo para recibir, a que velocidad va a ser la comunicacion, etc. Esto hace que el puerto tenga otras terminales que se usan para coordinar la comunicacién entre los equipos. Los equipos terminales de datos, sean estos conmutadcres, PC, impresoras u otras, envian sefiales en O's y 1's légicos binarios. que | modem debe convertir a 42 Proyecto de Ingemeria Electronica 1 ‘Desarrollo del Sorware sefiaies analégicas y enviarlas por la linea telefénica 6 el canal de comunicacian, sin ‘embargo, también es posible que das equipos se comuniquen siempre en digital, sin pasar a analégicos. tal es ei caso del puerto SMDR en una PC, 6 de Phone Manager con la PC. Para entender con mayor profundidad el funcionamiente de! puerta RS-232. es importante saber que este trabaja entre +12 volts y -12 volts, de manera que un caro légico es cuando la terminal este entre +9 y +12, y un uno lagico cuando este ente -9 y -12 volts de manera que un puerto serie que no esta transmitiendo, mantiene la terminal de transmision en un 1 lgico es decir entre -@ y -12 volts. El conector estandar RS-232 sea este hembra ¢ macho, es el DB-25, aunque en el caso dal lector Optico VS1000 se utiliza el DB-S La Estructura de Datos de Puerto Serie RS-232 La comunicacién de datos en un puerto serial, se usa normalmente para efectuar comunicacin asincronas, es decir, sin tiemipo preestablecido para inicia es decir. Los datos legan en rafagas 6 paquetes de informacién, normalmente cada paquete es de 8 bits = 1 byte (equivalente a un caracter en cddigo ASCII), algunos equipos envian caracter por cardcter, otros guardan muchos caracteres en la memoria y cuando les toca enviarios, lo envian uno tras otro, Uno de los parémetros mas importantes en comunicacion serie, es la velocidad con fa que los datos se transmiten, para el caso del RS-232, pueden transmitir de los Baudios (1 Baudios = 1 bitseg.) hasta 115,200 Baudios, la velocidad depende de los equipos conectados en el puerto serie y la calidad y longitud de jos cables. Otro de los parametros de trascendencia es el bit de inicio, es decir. el bit que le indica al puerto receptor que va a llegar un Byte de informacion serial es como se muestra en la figura siguiente: 43 Prayeoto de Ingenieria Electret I Desarolie dl Software WH 1 Ws eT 8 19 1158 ES EL OTT MENOS SIGHACATIVO MSBES EL BIT WAS SIGHFICATIVO En este caso se envia un bit de inicio, una palabra de 7 bits (101 0110), que ‘corresponde a Ia letra “V" en cédigo ASCII y luego un bit de pero. La palabra puede también tener, longitud de 5,6,7 u 8 bits, el bit de inicio siempre es un paso de -12 volts a +12 volts, y el bit de paro queda en -12 votts. Hay dos tipos de paridad adicional que se usan y estos son: Marca (mark): Elbit de paridad que se intercala siempre es un uno Espacio (space): El bit de paridad que se intercala siempre es un cero y el numero de bits que se emplean para cada paquete. pueden ser 5, 6, 7 u 8 Es asi como la comunicacion serie RS-232 es la comunicacién de datos mas empleada en el mundo, ya que utiliza pocos alambres 6 cables para logrario y mediante fos médems, es la forma de intercomuniear computadoras, comunicarse a través de Intemet, coniral a distancia y muchas otras aplicaciones. Proyecto de Ingeaueria Electeémica Id Desarrollo det Software Bibliografia Programacion en Dos, Manual de referencia. Jamsa, Kria. Ed McGraw-Hill, 1" impresién. Pags. 805. Edicién1994. Visual Basic an 24 horas. Perry, Greg. Ed Prentice Hall, 1* impresién. Pags. 460. Edicion1908. Paginas Web Consultadas: * Historia No Oficial de los Cédigos de Barras” bein tit him ‘twee mevicode,comidoc._labl him Ibias orga idiglobavfor_lang/germaniggais.. Nip: cx pAmpguidefBarcaselnptuldeBercoseN20GU.. ftp Awww clo-dpl.ge.cafts_ni¥SIGSATSN122/24_f him!

You might also like