Brevet FR2638629A1 — publié le 19900511

l La présente invention concerne de façon générale la mesure de la pression sanguine et, plus spécialement, un appareil et un procédé de surveillance en continu de la pression sanguine. On connait déjà divers types d'équipement de surveillance de la pression sanguine. Un dispositif non invasif de surveillance en continu de la pression sanguine, désigné par "Cortronic APM 770" est décrit dans un catalogue commercial de la société Cortronic Corporation, 105 Comac St. Ronkonkoma, New York 11779, Etats-Unis d'Amérique. Ce dispositif emploie un manchon classique, qui est fixé au bras du patient. Dans Journal of Clinical Monitoring, vol. 3, n 4, octobre 1987, p. 282287, l'article "Continuous, Real-Time, Noninvasive monitor of Blood Pressure: Penaz Methodology Applied to the Finger", de Robert D. Boehmer décrit un dispositif de surveillance de la pression sanguine du doigt produit par la société Ohmeda Monitoring Systems, 355 Inverness Drive S. Englewood, Colorado 80112, Etats-Unis d'Amérique. Un manchon pour le doigt, comportant une source lumineuse intégrée et un détecteur, est employé pour mesurer la dimension de l'artère du doigt, et une enveloppe gonflable est utilisée pour appliquer une pression externe à l'artère. Le dispositif de surveillance fonctionne à l'aide d'un microprocesseur, qui utilise des algorithmes pour déterminer la dimension de l'artère non chargée approximativement chaque minute et pour corriger automatiquement les variations éventuellement induites par la contraction ou la relaxation des muscles lisses. Un système de commande asservi électropneumatique à grande vitesse permet un étalonnage et un réglage automatiques. Dans Medical & Biological Engineering & Computing, septembre 1985, pages 459-465, dans un article intituLé "Longterm Ambulatory Monitoring of Indirect Arterial Blood Pressure Using a Volume-oscillometric Method", de K. Yamakoshe et al., il est décrit un instrument portatif fonctionnant à l'aide d'un microprocesseur, qui permet la surveillance sur une longue durée, pour un patient ambulant, de la pression artérielle indirecte du doigt, par mesure de pressions à l'aide d'un manchon. Dans le brevet des Etats-Unis d'Amérique n 4 475 554, il est décrit un dispositif non invasif de mesure en continu de la pression sanguine, comprenant un manchon souple gonflable pour le doigt, qui incorpore un émetteur-récepteur d'infrarouge et un circuit électronique connecté à l'émetteur-récepteur et commandant un compresseur dynamique. Le signal fourni par un transducteur de pression électronique correspond de manière très étroite à la pression artérielle instantanée. Les dispositifs décrits dans les publications ci-dessus mentionnées peuvent être tous caractérisés par le fait qu'ils mesurent les dimensions physiques de l'artère. Tous emploient un moyen actionné par fluide pour appliquer une pression physique. Tous sont des systèmes fonctionnant effectivement en boucle fermée, qui mesurent la pression nécessaire pour maintenir les dimensions physiques de l'artère à un niveau prédéterminé. Par leur nature même, ces dispositifs possèdent une vitesse de réponse limitée, puisqu'ils mesurent la compensation matérielle réalisée par le système face à des variations physiologiques et mesurent donc les variations physiologiques de manière indirecte. L'invention vise à fournir un dispositif et un procédé perfectionnés de surveillance non invasive continue de la pression du sang. Il est ainsi proposé, selon un mode de réalisation préféré de l'invention, un appareil non invasif de surveillance continue en temps réel de la pression sanguine, comportant un moyen transducteur optique servant à mesurer, en temps réel, la quantité de sang qui passe dans une artère et un moyen répondant au signal de sortie du moyen transducteur optique en produisant,hne indication de la pression du sang systolique et de la pression du sang diastolique. Selon un mode de réalisation préféré de l'invention, le moyen indicateur qui répond au signal de sortie du moyen transducteur optique fournit des indications directes de la pression du sang systolique et de la pression du sang diastolique. De plus, selon un mode de réalisation préféré de l'invention, le moyen indicateur qui répond au signal de sortie du moyen transducteur optique calcule la pression moyenne du sang en intégrant le signal de sortie du moyen transducteur optique. De plus, selon un mode de réalisation préféré de l'invention, il est également proposé un dispositif d'affichage servant à afficher la forme d'onde du signal de sortie du moyen transducteur optique, si bien que la marche des valvules cardiaques peut être détectée. La description suivante, conçue à titre d'illustration de l'invention, vise à donner une meilleure compréhension de ses caractéristiques et avantages; elle s'appuie sur les dessins annexés parmi lesquels: la figure 1 est un schéma de principe d'un appareil non invasif de surveillance continue de la pression sanguine, concu et fonctionnant selon un mode de réalisation de l'invention; et la figure 2, formée des parties dites figures 2a, 2a', 2b, 2b' et 2c, s'étend sur trois planches et est un schéma simplifié du circuit logique et de conversion analogique-numérique employé dans l'appareil de la figure 1. On va maintenant se reporter aux figures 1 et 2, qui représentent un appareil non invasif de surveillance continue de la pression sanguine conçu et fonctionnant selon un mode de réalisation préféré de l'invention. Un transducteur optique 10, comprend typiquement un émetteur optique 12, tel qu'une diode d'émission de lumière, par exemple la diode d'émission de lumière "MLED 77" fabriquée par la société Motorola, et un récepteur optique 14, tel qu'un ou plusieurs phototransistors ou diodes PIN, comme par exemple un phototransistor "MRD 711" fabriqué par la société Motorola. Le transducteur optique 10 peut également comprendre un circuit de production d'impulsions 16, comprenant typiquement un transistor 18, par exemple "2N222A", dont la base est connectée via une résistance 20 à une borne du circuit de commande 44 de la figure 2, ainsi qu'une résistance 22 et une résistance variable 24, connectée au transistor 18 par l'intermédiaire d'une résistance 26. Le transducteur optique peut fonctionner suivant l'un de plusieurs modes. Le transducteur 12 et le récepteur 14 peuvent être placés directement sur la peau du patient, par exemple sur un doigt, ou bien ils peuvent communiquer avec la peau par l'intermédiaire de fibres optiques ou d'autres guides d'ondes. On peut choisir le nombre des émetteurs et des récepteurs employés selon la résolution et l'angle de champ voulus. Le signal de sortie du transducteur optique 10 est typiquement fourni en parallèle à des circuits amplificateurs à courant alternatif 30 et à courant continu 32. On note que, lorsqu'il est employé un émetteur à impulsions, on peut éliminer le circuit amplificateur à courant continu 32, dans la mesure o généralement toute information intéressante est reçue par le circuit amplificateur à courant alternatif 30. Les circuits amplificateurs à courant alternatif et à courant continu fonctionnent typiquement sur la base de puces 33 et 33' 'TIL 72" ou bien "LF 356". Les signaux de sortie des circuits amplificateurs à courant alternatif 30 et à courant continu 32 sont additionnés dans un circuit d'addition 34, dont le signal de sortie est fourni à un convertisseur analogiquenumérique 36. Le signal de sortie du convertisseur analogique-numérique 36 est fourni à un micro- processeur 38 tel qu'un ordinateur personnel polyvalent, fonctionnant sur la base d'une puce "Intel 8088", qui commande un dispositif d'affichage 40. On peut effectuer l'étalonnage de l'appareil de la figure 1 à l'aide d'un manchon classique 42 de mesure électronique de la pression sanguine, par exemple le modèle "CAS 820", fabriqué par la société CAS Medical Systems, Inc., de Brandford, Connecticut 06405, Etats-Unis d'Amérique, qui reçoit un signal d'entrée de la part d'un circuit de commande 44 et four.nit un signal de sortie d'étalonnage au microordinateur 38. Selon une autre possibilité, on emploie un autre appareil approprié de mesure de la pression sanguine et on introduit manuellement dans le système, via un clavier 46, les lectures obtenues de cet appareil. Le circuit de commande 44 reçoit des signaux d'entrée de la part du microordinateur 38 et peut fournir également des signaux de sortie au convertisseur analogique-numérique 36, ainsi qu'aux amplificateurs à courant alternatif 30 et à courant continu 32. Un mode de réalisation préféré du circuit de la figure 1 est illustré en détail sur la figure 2, o chaque composant du circuit est identifié par le même numéro de référence que sur la figure 1. Plus spécialement, la figure 2 est représentée en trois planches de dessins, comportant cinq parties, qui sont respectivement appelées figure 2a, figure 2a', figure 2b, figure 2b' et figure 2c. La figure 2a se rattache à la figure 2b par les symboles de connexion entre planches),) , @, et à la figure 2c par le symboled. Dans La suite, on appelera simplement bornes ces symboles de connexion entre planches. Ces différentes parties sont, pour la plupart, divisées en blocs, lesquels sont entourés par des lignes en trait interrompu et représentent des blocs de la figure 1 à l'aide des mêmes références, à savoir: la figure 2a, la référence 10, qui désigne le transducteur optique (contenant un circuit 16 de production d'impulsions appliquées au transducteur optique 10), la référence 32, qui désigne l'amplificateur à courant continu, et la référence 30 + 34, qui désigne la combinaison de l'amplificateur à courant alternatif 30 et du circuit d'addition 34; conjointement pour les figures 2a et 2b, la référence 36, qui désigne le convertisseur analogique numérique; et pour la figure 2b, la référence 44 qui désigne le circuit de commande, et la référence 46 qui désigne le clavier numérique. Ainsi que cela a déjà été indiqué en relation avec la figure 1, les blocs 36, 44 et 46 sont connectés au microordinateur 38 et, comme on peut le voir plus spécialement sur la figure 2b, ces connexions avec le microordinateur 38 se font par l'intermédiaire d'un bus AO, A1, A2 à A9 et en outre, pour le circuit 44, par des lignes B2, B14, B20, B28. Les éléments de circuit représentés sur les figures 2a' et 2b' sont reliés à des sources d'alimentation continue, respectivement par l'intermé- diaire des lignes B7, B9, B10 et par celui des lignes B10 et B29. Comme on peut le voir sur la figure 2c, le circuit associé à la borne) est connecté à l'ordinateur 38 par les lignes AO à A16, A18, A19 qui constituent un bus de l'ordinateur 38, et par des lignes DO à D7 constituant un autre bus. On va maintenant décrire avec plus de précision les différentes parties de la figure 2. L'élément de circuit de la figure 2a' est un filtre d'entrée lrp du système, dont les entrées, repérées par B9, B10 et B7, sont respectivement connectées à des sources de tension de + 12 V, 0 V et - 12 V. L'entrée sous O V est connectée à la terre par une résistance Rl de faible valeur, dont l'autre extrémité est reliée à un trajet malimentant les bornes de circuit associées au symbole ( I). L'entrée sous + 12 V est connectée par l'intermédiaire d'une inductance L1 à un trajet, alimentant les bornes de circuit associées au symbole ( I +). L'entrée sous - 12 V est connectée par l'intermédiaire d'une inductance L2 à un trajet [] alimentant les bornes de circuit associées au symbole ( I-). Entre les premières extrémités de L1 et R1, sont connectés en parallèle les condensateurs C1 et C2, et, entre leurs autres extrémités, les condensateurs C3 et C4 en parallèle. De la même façon, entre les premières extrémités de R1 et L2, sont connectés en parallèle les condensateurs C5 et C6 et, entre leurs autres extrém tés, les condensateurs C7 et C8 en parallèle. Comme représenté sur la figure 2a, l'émetteur 12 est une diode d'émission de lumière D1 ("MLED77") qui est alimentée à l'anode par le circuit de production d'impulsions 16. La cathode est à la terre. Le transistor 18 ("2N222A") du circuit 16 est à la terre par son émetteur. Son collecteur, qui alimente l'anode de la diode D1, est connecté à une borne (- +) (trajet m) par la connexion série d'une résistance 22 (R11), d'un potentiomètre 24 (P3),associés au trajet] , et d'une résistance 26. Sa base est connectée via une résistance 20 à la borne du circuit de commande 44 (figure 2b). Le récepteur 14 est un phototransistor Q1 ("MRD711") qui est connecté par son émetteur à la terre. Son collecteur fournit le signal de sortie du transducteur optique 10 à l'amplificateur à courant alternatif 30 et à l'amplificateur à courant continu 32. La partie principale de l'amplificateur à courant continu 32 est constituée d'un amplificateur opérationnel "TIL72", désigné par La référence 33', qui reçoit le signal de sortie du transducteur optique 10 sur sa borne d'inversion par t'intermédiare d'une résistance R4. Son entrée de non-inversion est connectée à la terre et, entre ses entrées d'inversion et de non-inversion, sont placés deux condensateurs en parallèle, C9 et C10. Un signal de sortie (trajet n4) est fourni par l'intermédiaire d'une résistance R7 à la borne d'inversion d'un autre amplificateur opérationnel, 33, qui constitue la partie principale de l'amplificateur à courant alternatif 30. La sortie de l'amplificateur opérationnel 33' est également reliée à la terre par une résistance R3 et à son entrée d'inversion par l'intermédiaire d'un circuit parallèle formé, pour une branche, par un condensateur Cll et, pour l'autre branche, par la connexion série d'une résistance R2 et d'un potentiomètre P1. Aux bornes de la résistance R2 est monté un dispositif qui peut mettre la résistance R2 en court-circuit sous commande de la borne) reliée au circuit présenté sur la figure 2c et, par l'intermédiaire de ce dernier, à l'ordinateur 38. L'amplificateur opérationnel 33 constituant la partie principale de l'amplificateur à courant continu 30 est lui aus i un dispositif "TIL72", qui reçoit le signal de sortie du transducteur optique 10 sur sa borne de non-inversion par l'intermédiaire d'un condensateur C15. Cette borne de non-inversion est connectée à la terre par une résistance R9. L'extrémité du condensateur C15 non reliée à la borne de non-inversion est connectée à la terre par un condensateur C16 et à une résistance R5, dont l'autre extrémité est connectée à la terre par un condensateur C17, ainsi que, via une résistance R6, à une borne ( I -t-). L'autre entrée de l'amplificateur opérationnel 33, c'est-à-dire son entrée d'inversion, outre qu'elle reçoit le signal de sortie de l'amplificateur opérationnel 33', est connectée à la terre par la connexion série d'une résistance R8 et d'un potentiomètre P2. La sortie de l'amplificateur opérationnel 33 est connectée, par l'intermédiaire d'une résistance R12 à la borne t (trajet [) du convertisseur analogique-numérique 36 de la figure 2b. La sortie de l'amplificateur opérationnel 33 est également connectée à son entrée d'inversion par l'intermédiaire d'un circuit parallèle formé, pour une branche, par un condensateur C12 et, pour l'autre branche, par une résistance R10 aux bornes de laquelle est monté un dispositif qui peut mettre la résistance R10 en court-circuit sous commande de l'ordinateur 38, par l'intermédiaire de la borne @)et du circuit de la figure 2c. On notera que, de manière classique, l'amplificateur opérationnel 33 est doté d'un circuit d'alimentation faisant intervenir, d'une part, une borne (-- +) découplée de la terre par un condensateur C13 et, d'autre part, une borne ( - -) découplée de la terre par un condensateur C14. On va maintenant décrire le convertisseur analogique- numérique 36. La borne.)(figure 2a) est reliée à la cathode d'une diode Zener D2 ("1N4733"). En parallèle avec la diode D2, est monté un condensateur C18. L'anode de la diode D2 est à la terre. Les bornes d et C) (figure 2a) sont connectées entre elles par l'intermédiaire du circuit parallèle formé d'une diode D3 ("1N4733") et d'un condensateur C19. La borne est connectée à la terre. La borne dest connectée (trajet M) à une résistance R13, tle-même étant connectée à une borne ( -). Comme on peut le voir sur la figure 2b, le circuit de conversion analogique- numérique est principalement constitué par un dispositif U7 formé d'une puce "7820". On voit que la borne 3 d'un dispositif U4" ("74LS74"), via le trajet 3. L'élément de circuit de la figure 2b' comprend un trajet a connectant la ligne B29 aux bornes d'alimentation de circuit associées au symbole ( -+) et, via une résistance de 2,2 k 2, aux bornes d'alimentation de circuit associées au symbole (-.). La ligne B29 est découplée de la ligne B10, elle-même connectée à la terre, par la combinaison en parallèle de deux condensateurs de caractéristiques respectives 100 pF, 15 V et 0,1 pF, 50 V. Le clavier 46, représenté sur la figure 2b, comporte des éléments de touches collectivement désignés par CL, qui permettent de relier séparément à la terre les sorties 3, 4, 7, 8, 13, 14, 17, 18 d'un dispositif du type conformateur d'onde, V1, formé d'une puce "74LS374". La sortie 18 est connectée à une résistance de 4,7 kQ, elle-même connectée à une borne ( I). La sortie 10 du dispositif V1 est connectée à la terre, et sa sortie 20 à une borne d'alimentation ( -). Une porte NON- ET, désignée par la référence VO, reçoit à l'une de ses deux entrées, le signal de la ligne B14, qui est également appliqué à la sortie 11 du dispositif V1. La sortie de la porte VO est reliée à la sortie 1 du dispositif V1. L' autre entrée de la porte VO est connectée à la borne Q5 d'un dispositi U3, décrit ci-après, du dispositif de commande 44. Les sorties 2, 5, 6, 9, 12, 15, 16, 19 du dispositif V1 fournissent le signal de sortie du clavier 46, sous la forme d'un signal propre, aux lignes respectives A2 à A9 du bus du microordinateur 38. On va maintenant décrire le circuit de commande 44 de la figure 2b. Le signal de la ligne B28 est appliqué via un inverseur U1 à la borne CP d'un dispositif U4 formé par une puce "74LS74". Le signal de la ligne B2 est appliqué, via un inverseur UI', à une des entrées d'une porte NON-ET à deux entrées, soit UlO', dont la sortie est connectée à la borne S du dispositif U4 formé d'une puce "74LS74". Quant à l'autre entrée de la porte NON-ET U10', elte est connectée à la borne Q d'un dispositif U4', formé également d'une puce "74LS74". La ligne B14 est connectée, outre à la sortie 11 du dispositif V1 comme ci-dessus indiqué, aux deux entrées d'une porte NON-ET désignée par la référence U5''', dont le signal de sortie est appliqué à une des deux entrées d'une porte NON-ET U5' recevant par son autre entrée le signal de sortie de la borne V du dispositif U4. En ce qui concerne les autres bornes du dispositif U4, on notera que sa sortie 7 est à la terre, que ses sorties 1 (c'est-à-dire la borne RD) et 14 sont respectivement connectées à des bornes d'alimentation (--), et que sa borne D est connectée à la sortie 7 du dispositif U3, ci-après décrit. Le signal de la ligne B20, qui est un signal d'horloge désigné par la référence CLK, est appliqué à la borne Cp d'un dispositif U6, formé d'une puce "74LS161". Les bornes DO, D1, D2, D3 et GND du dispositif U6 sont connectées ensemble et à la terre. La sortie 8 du dispositif U6 est connectée à la terre et, via un condensateur de 0,1 pF, à sa sortie 16, laquelle est connectée à une borne d'alimentation (). Les bornes CET, CEP, PE du dispositif U6 sont connectées ensemble et à une borne d'alimentation (->). Les bornes MR et TC du dispositif U6 sont respectivement connectées à la borne Q du dispositif U4' (via le trajet 1) et aux deux entrées réunies d'une porte NON-ET U5, dont la sortie va à la borne SD du dispositif U4. On note que la borne restante, soit Q3, du dispositif U6 est connectée à un inverseur Ul"'' et à une des deux entrées d'une porte NON-ET U5". L'autre entrée de la porte U5" est connectée à la sortie 5 d'un dispositif U4", ("74LS74") dont la sortie 2 est connectée à la terre et la sortie 4 reçoit le signal de sortie de la porte NON-ET U5'. La sortie 3 du dispositif U4" reçoit le signal de sortie de l'inverseur UI'" ', lequel va également (trajet) à la borne WR du dispositif U7. La borne Rp et la borne D du dispositif U4' vont respec- tivement à une borne d'alimentation ( -) et à la terre. On voit aussi que la sortie de la porte NON-ET U5' va à la borne CP du dispositif U4', à la broche 4 du dispositif U4", à une entrée de la porte ET U10 et à l'entrée RD du dispositif U7. Le signal de sortie de la porte U5" est appliqué à une des deux entrées d'une porte ET, U10, dont la sortie va (trajet 12) à la borne CS du dispositif U7. L'autre entrée de la porte U10 reçoit le signal de sortie de la porte NON-ET U5'. Les lignes AO, A1 et A2 du bus sont respectivement connectées aux sorties 1, 2 et 3 du dispositif U3, ci-dessus cité. Le dispositif U3 est une puce "74LS138". Comme déjà indiqué, sa borne Q5 est connectée à une des entrées de la porte NON-ET VO du circuit 46 du clavier, et sa borne 7 à la borne D du dispositif U4. Sa borne 8 est à la terre et sa borne 16 est reliée à une borne (-). Ses broches 4, 5 et 6 sont les entrées d'une porte intégrée au dispositif U3. Les entrées 4 et 5 sont des entrées d'inversion. L'entrée 6 est connectée à la ligne A3. L'entrée 5 est connectée à la sortie d'une porte NON-ET U2 à quatre entrées respectivement désignées par 1, 2, 4 et 5. Les entrées 1 et 4 de la porte U2 reçoivent respectivement les signaux des lignes A4 et A6 via des inverseurs Ul" et U1'''. Les entrées 2 et 5 de la porte U2 reçoivent respectivement les signaux des lignes A5 et A?. La broche 4 du dispositif U3 reçoit le signal de sortie d'une porte NON-ET U2' à quatre entrées, respectivement désignées par 9, 10, 12 et 13. Les entrées 9 et 10 de la porte U2' sont respectivement connectées aux lignes A8 et A9 et les entrées 12 es 13 sont connectées en commun à une borne (). On notera que les inverseurs U1, UM', Ul", U1"' et Ul"" peuvent être regroupés dans un même circuit intégré présentant une seule borne d'alimentation 14 reliée à la borne ( -) et décou- plée de la terre par un condensateur relié à la borne de masse unique 7. De la même manière, les portes U2 et U2', les bascules U4, U4' et U4", tes portes U5, U5', U5" et U5"' et les portes U10, U10" peuvent être regroupées sur des circuits intégrés communs. On va maintenant passer à la description du circuit associé à la borne( dqui apparaît sur la figure 2c et est reliée aux circuits de réaction entre l'entrée d'inversion et la sortie des amplificateurs opérationnels 33 et 33' de la figure 2a. Comme on peut le voir sur la figure 2c, la borne/\ est connectée au point de jonction de deux résistances variables (100 kQ) dont les autres extrémités sont respectivement connectées à une borne ( -) et à La sortie 14 d'un dispositif W3, qui est une puce "DAC06" constituant un dispositif de conversion numérique- analogique. La sortie 15 de ce dispositif convertisseur est connectée au point de jonction d'une diode Zener, dont l'autre extrémité est reliée à une borne ( -), et d'une résistance reliée à une borne d'dlimentation ( a) . Ses sorties 11 et 13 sont connectées à des bornes ( -), et sa sortie 16 à une borne d'alimentation (). Pour le reste, ses sorties 10 et 18 sont connectées l'une à l'autre, et ses sorties I à 9 recevant un signal numérique sont respectivement connectées à une sortie muette et aux sorties 2, 5, 6, 9, 12, 15, 16, 19 d'un dispositif W2, formé par une puce "74LS373". La sortie 10 du dispositif W2 est à la terre et sa sortie est connectée à une borne d'alimentation ( _). Ses sorties 3, 4, 7, 8, 13, 14, 17, 18 sont respectivement connectées à des lignes DO à D7 s'intégrant dans un bus de l'ordinateur 38. Les lignes AO, A1 et A2 sont connectées aux sorties 1, 2 et 3 d'un dispositif W1, formé par une puce "74LS138". La sortie 5 (borne E2) de ce dispositif W1 reçoit le signal de sortie d'une porte NON-ET N2 dont les quatre entrées sont respectivement connectées aux lignes A3 à A6. Sa sortie 6 (borne E3) est reliée à la sortie d'une porte NON-ET N1 à quatre entrées, recevant respectivement les signaux de sortie des lignes A7 à A10. Sa sortie 4 (borne El) est connectée à la sortie 15 (borne QO) d'un dispositif Wl' via un inverseur I2. La sortie 8 du dispositif W1 est à la terre. Ses sorties 7, 9 et 10 sont respectivement reliées à une des deux entrées d'une porte NON-ET N5 et aux deux entrées respectives d'une porte NON-ET N4, dont le signal de sortie est fourni, via un inverseur I3, à la deuxième entrée de la porte N5. La sortie de la porte N5 est connectée à la sortie 1 (borne (E) du dispositif W2 cité ci-dessus. D'autre part, les sorties 7, 9 et 10 sont respectivement connectées à des bornes () (OPT). La sortie de l'inverseur I2 est également connectée, outre à la borne E1 du dispositif W1, aux deux entrées connectées en commun d'une porte NONET N3 dont la sortie est connectée à une des deux entrées d'une porte ET T2, ayant sa sortie connectée à la borne CLK d'horloge du dispositif W2. L'autre entrée de la porte ET T2 est connectée à la sortie d'une porte ET T1 recevant respectivement sur ses deux entrées les signaux des lignes A18 et A19. Le dispositif W1' est une puce "74LS138". Ses bornes A, B, C, E2, E3 sont respectivement reliées aux lignes Ail à A15. Sa borne E1 est connectée, via un inverseur I1, à la ligne A16. On sait déjà que sa borne Q0 est connectée, via l'inverseur I2, à la borne E1 du dispositif W1 et aux deux entrées connectées de la porte NON-ET N3. Voici la liste des composants cités, ces valeurs étant données naturellement à titre d'exemple. Les valeurs indiquées peuvent varier dans une certaine mesure, pour autant qu'elles permettent toujours d'exercer les fonctions pour lesquelles elles sont faites. Capacité (en pF) des condensateurs (le signe * indique un condensateur polarisé): C1 = 0,1 C2 = 100 C3 = 100 C4 = 0,1 C5 = 0,1 C6 = 100 C7 = 100 C8 = 0,1 C9 = 4,7* Co10 = 1 Cll = 4,7 C12 = 0,1 C13 = 0,1 C14 = 0,1 C15 = 4,7 C16 = 0,1 C17 = 0,1 C18 = 0,1 C19 = 0,1 Inductances L1 = L2 = 1 500 pH Valeurs (en 2) des résistances (la lettre kindique qu'il s'agit de kQ): R1 = 4,7 R2 = 87 k R3 = 12 k R4 = 330 k R5 = 12 k R6 = 75 R7 = 100 k R8 = 1,2 k R9 = 100 k R10 = 100 k Rll = 510 h R12 = 75 R13 = 1,2 k Potentiomètres (résistances maximales): P1 = P2 = 100 kQ P3 = 500 L'appareil selon l'invention fonctionne typiquement à l'aide d'un logiciel, et un listage du code source de ce logiciel apparait dans l'annexe A ci-jointe. Bien entendu, l'homme de l'art sera en mesure d'imaginer, à partir de l'appareil et du procédé dont la description vient d'être donnée à titre simplement illustratif et nullement limitatif, diverses variantes et modifications ne sortant pas du cadre de l'invention. r-- ----------__---_---_----------------------------------------------------- L.E. OPTRONICS CCCI I I*3*$*#**********pI**5e*5**}* *********4** * ile Iceycni.c * l* Nare main - main caller for * * CNIBP software system * * * Usage * * * * Prototpe in - cnibp.H * * * * Description main caller for system, * * handling; user input, * data acquisition, data * * processing, and data * display. *- * Peturn value none * * * * Clls ga'phicinit * * minit * * startcnibp * * work_tmode * *SF gotoxy * c key_inp * * * * Called by none * * * **********#****# *************************/ #include finclude mrnir C int init(int); int nuT = 1l /* variables.declarations *1 char keychl struct time tmi graphiciniti); /* initialize graphie mode *1 tm.tihour-OI /* set clock ta O */ tm. t imin-O; t. tisec=0; tm. ti-hundO01 %ettime(&tm)l I while (11 t switch(num) l 1* case *1 c /* *1 case 59:init(tmode); /* restore graphic mode k * exit(O); /* exit. * case 60 1* system calibration (cnibp) k *1 if(hartx>2201 numw60; else C start_cnibp (); nocycle -11 num - 1; workmode()-1 * work-mode (sensor). breakl '* * case 61:num - 1 4* trend oit blood pressure. */ *, (uosu4s) *pom->IlJOM:lnw**p,/ f()opom-IJOM:;înu.p /* -(JosU4é) 4pO- JOMT SfI t lapow--JOM: T m 5U! I:wMJq I T *Inu is. ja^>adg do. 4, f .)IuTIad I {sZT}oo S T *:t4% YSJeIU> .} ilu;d I A.ço7a /*.siTun u-1 Aq llmil q61q*1 IOT-- sq--6T; /*]yIO)BX!.0) lOauewJap(gd) i/)( =. 6ulT--14ill);: j,9 abe: /*,s;un uol Aq H;lM? 4G11/ OT.+ sXs-qSqt /4Q5olscs *u M..u /4 *w.3-S UJU Ua- /4 ';w;i q;6q 3;1iossA lllC 4/ 6Z98ú9Z Y fr.. ieyinp.c X t.,n ceal the heys from new * k {;hoard * Y * - t t'e-! - * * Prototype in - DO05.1 * V IK t * e nf-cription Feeld data from appropri-* e -te address snd transla-* r >t- It to ASCII codes. Y * r Fet-rn velurt urn - ASCII code * rai1s inpnrtb * Y * l Cl.4 b.vfnote * Y * Ifnrlude ( tptic prev_key - OxFFFFi r.-..r Ikcyicl; rnt r' m; IecrF, nportb( KEYPORT)I qqi tch {'eych) care FI: num n59; break I rase r2: timpm - 60; break; cà.e F3: if (prev_l $$ #î î$X wt t i Xliii tt* 11*1%* ttiti III I X>* y F* Je beep.c me bep * * tP. * * Use. void beep(int,int)l * * * 4 Prototype in cnibp.h * i * De*crjption turn on the speaker * + tuntil is * *+ pressed. * * Peturn non. * * -4 * Calls none. * * * * Called by write results. * * 4 ê***Pi**XI*i5x*1*******4*******ttt*i******/ fttncit.d Cdos. h> 9rtern int speakerresetl void beep(int divlint div2) int cv'l,j speaker_reset inportb(Oxél)i outportb(Ox43,OxB6)1 eutportb(Ox42, div2> outportb(Ox42, divil); cvl - (speaker_remet I 3 i outportb(Ox6icvi)l ) F i 1 t.c% 1 c-neb-.. XXSXJ!.XYXi XXXiXXX**XXX**#X***XX******* F File calcne].c * calc netq factor - * computes calibration * S 4efactor * * * Uaa3e void calcnewjactor Description compute factor agairnst * * ncalibration results, for* data processin. * F* * Roturn value none * ** Calis none * 1'* * Called by workmode * *f * ************ ********* K******************I extern int max, mini extern int maxi,minil extern float factors; eYtr-n int after_calibl e'tern 4loat systoltc,diastolicl void cdlcnewfactor() int temp; mlvi ' maxi "tni * min; if ( (temp - max-min) - O) lactors = 0. 01 ls- factors = (systolic-diastolic)/temnp; /* systolic factor - after_calib = O; /* Remet after-calib flag. * K Fil. clear.C* $ ^'q^im ale&rw1ndaw * K * * * r atotype in * I* * Dscription * * * Pet.jr. value # K X I (CA 1 1 # I* Called by * I K KIIîKNII"IXIXIKI#IIIKK*KK*Kf#"ih*II**#II*/ x - column y r- w etid - width of window hght height oa window *1 *include #include *mtern unsigned xaddrC640],yaddrt2002 void cl--r_windcw(x ywidhght) unsigned int x,y,wid,hghtl union REGS regsi recs.x.ax - Ox0600S regs.h.bh - 01 regs.x.cx - (y&ddr[y] " 8) I x&ddrúx3l regs.x.dx - " * * * * Usea- vald count_h_pulse()i * * * * Prototype in c&s8.h * * * * Description Calculate the heart * * pulse. * * * * Return none * * * * Calls none * t* * Called by dlsplay_value * I* * * *î***nfifl* *f***c***I******K*K *IXX*K*I*/ extern int keart_pl extern int l1ocyclel extern float oldtimenewtimel void count_lpulse() f1ort hpuise; if (inew_time - oldtime Il (no_cycle -- -t>> hert_p - 01 tlse h_pulse (60.0 * nocycle/2.0)/(new_time - aldtinel> heart_p - hpulsi; -I Mm0-q l"5"*#*MXi Y* #>"XX >##****le File diepval.c * * lame display_value dtisplayrs* * values graphically. * * * * Use7 void display_value * f # * * Prototype in * * * Description displays a value graph- * * ically, in the form oa * * dot, and a line drawn * #4 from it to the last dr- X * *1awn dot. * *, * * Return value none * * * Calls draw line * * count_hpulse * * * * CAled by workmode * * X(IXIIXIXIKXIIINKKXII#XXXuK*XI**KIXXXXIXXX #include (time.h> Mir.rlude 'hart_w.11 #include #define XDIST 2 *xtern floaat oldtim-, new_timel extern Int clr,nocycle,hartxl extern float mean,systolic, factor_sl extern int max acc,min_acc! extern int maxcounter,maxil vold display_valuetilnt pointl int newyti,Joldx,res4,window_ hight - HARTY2 HARTYII float epsilon-IE-51 utruct time time_old,timenewl static int printratb-3 l static int oldy-l, x-HART_XI+ll static long meanpoint Oi static float *ummean - 0.01 static float ylevel-O.O1 static int cyclex HARTXI+I, cycle-_point 01O newy - point/HART_SCALEI /* Translate the signal to the dimensions*/ new.y - HART_Y2 - newyl /* of the displaywindow. * if toldy -= -11 oldy-newyl clear_windowt(x+6,HART_YI,O, window_hight)l If CsieWy /* after calibration *1 t gummean. pointt s#eAr.-point ++! } i (C(y_level>oldy) kL(y_level≤newyHI -newy)] t if (no-cyclo -- -1) 9ettime(&time_oldJ; oldtme = timeoldtihour * 3600.0 + timeold.ti_ min * 60.01 oldtime - old_time + time aold.ti_sec + timeold.ti_hiun/1000.1 ? f14 (x-cycle-x) > cycle-point/4) rnocycle++; jeLtime(&time _letlu neeltime = time_neta ti hour * 3600.0 + time_tnew.timin * 60.0; new time - newtime + time_new.ti_sec + time new. ti_hund/100.01 cycle-x z x; } x += XJIIST; if Cx > IIARTX2) /* 14 it reached the end of the */ t( /* dleplay- window C */ count_h_puilse(l /* Calculate heart pulse. ylevel = (O.S*(max_acc - min_accl + min_acc)/maxcounterl y_level = HARTY2 - ylevel/HARTSCALEI if epsilon) mean - systolic + factor_s * (summmean / meanpoint) - factors * maxil sum mean - 0.0; mern point - 01 w. it Presu;lts1) /* Write meamurifg results. *1/ trendii; /* Write systolic trend. * if (nocycle > 0) cycle_point - (HARTX2 - IIART_X1) / no_cycle; else cycle_point - tHARTX2 - HART_XI) / 111 nocycle - -11 xHART_xlii; f* * cleai_windoiqx+3,HARTYl,X_DST,.indow_hi9ht>; dre'_box(HART.1,HARTY-iHARTX2+1,HART_Y2)Ij cycle x - xi prlint_rate++{ if (tprintrate%3--O) print_resultsl() printrate - O; ) ) /*) *1 hsrtr - x; heeder files included _....____ _ _ _ _. _....._- _*/ eytern unsigned yaddrt200]; ertern unsigned xaddrEt640J eytern cher shiftE6402; tern char pointt64031 e'tern int clrl erterr char fer *scrnl I**k*f*4*******t************************** *File dot.c * * Name dot draws a dot. * * * Usage void dot tint xint y)l * ** * * Prototype in cas.h * * * * escription computes the offset in * * the screen buffer of * * the bit to b set. * * * * Return value none * * * * Calit none * * * Called by drawline * * * void dot ( int x, int y> unsigned total; total - xaddrlxj + yaddrty3l scrnttotal] - (clr I**.** * *****#********************** * Filc drawbox.c * * Farme drawbox - drawS a box. * * * Usage void drawbox * * V(int xlylx2,y2)i* * * * Prototype in cas.h * * * * Description draws a box bounded by * * colomns XIX2 and rows * * Y1,Y2. * * * * Return value none * * * * Calls draw-line * * * * Called by drawcreen * * * ********,:******************************l void draw_boxxtnt xl, int yl, int x2,sint y2) void drawlirne (int xl,int yl,int x2,int y2)1 dra zline l(xylsx2,ylJ; draw_line Il /f*****f*********" "*******" I*********l*** * File drawl. c * * Name draw_line - draws a line* * * * Usae void dralin * * tint xlylx2,y2)> * * * * Prototype in cash * * * * Description draws line from CXl,Yl) * * to (X2,Y2z. * * '* * Return value non * * * * Calls dot * * * * Called by diuplay_value * * draw_scren * * ' drawbox * * void drawline(int xl,int yl, int x2, int yZ) void dot(int x,int y)l int x,y, xstep,ystepdxdydirectl x - xl y - yll xstep m I ystep - Il if t xl > x2! xstep - -il if ( yl) yz2 ystep - -11 dx - abt x2 - xl)I1 dy = ab-t y2 yI)I if t dx -- O) direct - -11 else direct m 0f while I!( tx-mx2) LL (y-y2))) dot tx,y)l if tdirect * * * Usage void draw_screen * * * Prototype in trend_w. h, hart_w.h * * * * Description draws ail the windows * * for graphic and numeric * * - displays of parameters. * * * * Return value none * * * * Calls drawbox * * drawline * * got.oxy * * - rewritemain_menu * * * * Called by graphic-init * * * ** *** **** ** **** *** **** * ******** ***** **** I flinclude #include void draw_screeni) intL 1; dra. _box ) /l Menu window. * qnta y(1,21}; /* trend scale mark *I iirintf"l O 11 ntoxy(l1,16)1 printf( 120"11 gotoxy 9otoxy(68,10>i printfl(MEAN BP'}{ gotuxy(68,15)9 printf(H. RATE")1 rewrite_ main_menu(lI K It!"#NXN*NNI* Xlf X*N*t**I*#*****"Xl**l** File getmode.c * * Name gteLmode - vots display * I adapter type and mode. * r * X tnsagirt getmode(ll * * * N Prntotype In aes8.h * X * I Descrtpiion g-ts mode of display ad-* I apter. * ** * Peturn velue mode of adapter card. * w t'l 15 non- * X * * Called by graphic_init * * * **N********NX**** N********* ******* X-*******/ tlinclude F Description position cursor et X,Y * *" coordinates. * * * * Return value none * IF IF y Cal l note * * * * Called by many ' * * 11 xî. Ie Ny teK te dn.1 KKKKK IKKKKIK I I t r.' Iu'lr' v'Id gnKnxyC1nt x,lnt y> union REGS regs; egs.h.ah - 21 regs.h.dh - yi regs.h. dl - xl re9s.h.bh -;01 int96(VIDCO,kres,kregs)il ) I* ******************I*******#************** * File 9raph_in.c * * Name graphicinit * * * * Usage void 9raphtcint(li * * * * Prototype in cas.h * ** * Description initializing hi - ras * * Bgraphics on a CGA cards * * *and drawing the systems * * {4unctional screen. * r * * Return value rone * * * * Calls Init * * urawscreen * * * * Called by main * * * extern int tmodei void graphic_initi) ( int getodutelIl void etartprinter()l int tnit(int)g void drawscreen(}I tmode = getmode(It f* Save th- current mode. * init(6)1 /* Initialize graphic mode. * start_printer(g drawscreen(]{ /* Dieplay systemu screen. i *ú************ ****************X********** * File tnit.c * * Name init intialize display* X- adapter to graphic mode.* * *F * Usa-e int inittint numil * * * * Prototype in - * * * * Description initialites CGA card to * * hi-rex graphic mode. * * * * Return value mode adapter card le in.* * * * Calls nons * * * * Called by main * *grahpicinit * * * lincludse :include (video. h> extern unsigned yaddrú200o3 extern unsigned xaddrC640]l extern char shiftC64031 *xtern char pointC6401 extern char fer *scrnl int init(int num) int indx - 0, indx2 - O= static tnt max_clr,max_x,maxy,shifterl unsigned clr_wid,manskl union REGS inregs, outregsl if numl > 63 t putseinvalid mode.\x07?') exit(0)l switch (num) ( case 4 max_clr - 31 maxx - 3201 maxy * 2001 shifter - 41 clrwid - 21 break case S maxclr - 1l Maxx - 3201 maxy - 2001 shi+ter * 4l clr_wid - 21 break cAre 6 maxcir - ú maxx = 6401 maxy - 2001 shifter - 0I clrwid - 1I Dtb ak; If (num) 31 C I/*For graphics Modes only*/ while (lin4x clrwid * (indx % *hJifter)ll *4 (num 61 ({ /* Nedium resolution offsets *1 mask I- (mask)> 1>1 shift[indx] à - - clr_wid * (indx % shifterl)l else /* High resolution ofcsets *1 shiftltindx] 7 (indx % shifter)l pointtindx] - -moskl xaddrtindx] m- tndx / shifterg ) ) inregs.h.ah * 01 inregs.h.al nuwl inte6(VIDEOLinregstoutregs)l returntnum)l i* end cf init *1 I ***4****> ***4**fl ******4**4****K#********* * tlj printrs.c * X Nd%.e prilnt_reults * X * ** * Usae void print_results()i * * * Prototype in cas.h * X * Description Print blood pressure * * results. * * * * Returni none * * * * Calls none * * * * Called by displayvalue * * * * * ****************4*************#***********I #include (bios.h) Nir.rlude e-tern int systo,diast,heartp; ctern float mean; pt'intrenults(l int i,a[Bljmean_vall lons timell char *strnowl for (i01i * * * * W Usage void rewrit*_mainmenu(* * * * Prototype in * * * * Description * Y * * * Return none. * * * Calls none * * Called by * * tt extern lnt clr,1arv&m 41&9 ewrittmainmenu l void dra&0_lIne(int xl,int yl,int x2, int y2){ void gotoxy tint xint yll int il dIarrfIlag - O; cSr-O dr awline (120,181,120,19511 draw.linel220, 191,220,1951{ draw3 tne(290, 11,290,1951; dr&w=line(370, 81^3?O,19SI{ gotoxy(1,231 print+t"Fl:EXIT F2:CALIB F3:HISTORY F4:SET ALARtI lsM +or (itli * * Lisege void eet_alarmtI * * * * Prototype *n * * - Description Display alarm menu * * ntwindow and set alarm * K +lag. * I Petur1 lnnt. * ** * Cals draw_linegotoxy * * draw_box. * * Called by work_mode. * * * *4* 1*********** X***C********************I finclude ALARt OFF SYS %3d UP CF6>DOWN MAIN MENU",high_my ); clr-li for drawlinetlOO*ii19,100*i,1951H dral._line{120,181,120,195} draw_linet220, 1el8,220,195)1 draw_linet290,181,290,195)i draw_ljne(370,181,370,195>ú if (alarmlwitchl> gotoxy(12,23)1 printf('N 'Il) File ecah_,C * * Nme aSmoothdata - Smothe * converted 4data * * * t'sage3 Int Smooth_data() * * * * Prtotype in cnlbp.h * * * Description smoothdata gets the * * artthmatlc average of a * * ashli4ting window of x * * samplee at a time, to * * get a smoothed curve of * * the Sampled data. * * * f Return value smooth_data raturns the * *fi value of the ne-Y co- * *. rdlnate of the smoothed * sample. * * * Calls none * * * * Called by workmode * * * #include (dos.h> #include exte-n int AtlOII Int smooth-datal) int i,sum - Oucx_A,iln_A{ At41 - inportb(IPORT)} /* Recleve the sl'xth sample. * if 1(Ar4] > 240) Il (AC4] i for (i-0 1i !****-* * lStleti *stX**l ****i IE*F** FSile start_pr.c * * Narne *tartprinter * * * v* * * * I Prototyp in cas.h * ** Description * * * * * ** * * * * * Return value none * * * * Calls * * * * * * * * Called by * * * Ircu* Ninclude (c IIS clude (biash> strtprinter() char {e -- \nO char aCSgO] = ICT Ltd Rehovo t, ISRAEL\nlt char c[80 - ^ BPTEST P R O 3 E C T\nli char di0] - dat- \n1l char.e[ao - nawe a \n l char bt[O] * not-s:\n "I char 9t801 " TINE SYSTOLIC MEAN DIASTOLIC HEART RATE \n i iF (biosprint(2,O0O0 - Ox90) write * * * Usae void trendIl * * * * Prototype *n * * !1, t.aijft 1l,11IloIgatilitIbi *])l tie I i I.,,I. I I! Peturn none * * * * Cal!I trenddraw * * * Cal!id by dijplayvalue * f * *. * K***+***t-***#****f****************f********/ #include * * v* r Usage void trenddraw * * i(tnt num,int xint val) * * * * Prototype in trendw.h * ** Description Print blood pressure * * trend. * * * * Return none * I* Calls draw_ line * * * * Called by trend * * * * * Ninclude extern int clre void trend_drawtint num, int x, int value) static int yt31 - TREND_Y2) nextyTRENDY21 i+ (ytnum3 -n o) yúnum] - nextyl draw_lineCx,ytnum3,x+2,nexty)i; yCtnum3 - nexty; ) Ire WORK_MODE.C * ll^ t-orl'mode - acquires * z pr rrcesses. and displays * *X converted data. * t * Y Kis7e vuid.Jrkmode(; * I * K r.mtyp. ir, cnlbp.h * t -* DeSeription acqaire data from sensaor* * process it, display th- * e results graphically and * YK hnuterically. * * Pt.rn value none * w * r Ca!ls smnoth data * K drdplay_value * clrc new fartort * 1jr t t e_- -esu I t5 I * * C11ied b./ main - * r* oincld-e eilv4 +unct.h -,rsrn jt [lO], mvax,*mJn,maxcounter,aftercal bl _rin, maa-_cc,min_acc,endcalibration; or a 'It y_level; n t s tIr 1_mnde) ms tamoothdata(; int i,point; 1 t!er. dcal ibrat ion) stftrtcnibpt)l far (iOI 1 *r ma-_-cc - mn"_acc + maxi Mtl aarc t-in-cc * mini epxcounter++l /* calculations. * 9'0toay 70,20);. / Go to clock window. * CI.OCKIl) /* Display current time. */ if tifterrallb) /I If after calibration then calculate */ talc new {actor)il /* the new factur of systolic t diastolic.*/ )1 Ifs* el.d of work mode / b vv y vxNK KXFXKKI*I EkKXXKXXAX'IX ry rlb, -} i. I - r - r rN1 *,n. *z*> I - I 4niyt tK results nurnerically. * * U lsag void writeresultsl; * * * * Defcription displays numerical res- * { ults in tie appropriate * F places or, the screen. * ti * t Peturn value none * *L * } Calls 9otoxy * * * * CalleJ by workmode * * * *****************K**********K ****K****** i extern int maxmlmaxcounteralarmns Jtchmaxt! =.xtern int maxacc, minaccg extern int prevmaxacc, prevminacc, prev maxcounterl e-tern int systo,diast, heart_phighsys; extkrn float systolic,diastolic,meanl e +erl flout factormsl v3id ttriteresults() void gotoxy(int,intl; Int lmeani Max max_acc/max_counter; min - ninacc/maxcounter{ Systo = systolic + factors*(max - maxill /* Syst - syst_factor * my% tiFrort sensorl *1 diast - systolic + factor_s*(min - maxili 1* Diast - diastfactor * d iast(from mensorl*! max * Qg min - 300; iz i(alarmswitch> L (max ≥ high_sys) /{* If systolic over the aystolic.high I imit*t beep(9,76)1 /* turn on alarm system. * gotoxy(71,2); printf'"%3d',systoli /* Numerical display of systolic. *1 9oto:yt71,7]1 printf(1%3d',diastl; /* Numerical display of diastolic. * gcotoxy(71, 12) t imean * mean; printfl * * * Description main caller for hoast to * iKF cntbp communication drIv-* * ers and protocol. * * * * R*turn value none * * * * Calls com_setup * * c-Snd mus * * get_m * *.9-t_rs9g * * disp_cal_res * * * * Called by main (casS.c module) * * * Hinclude #include e-tern int af tercaib,cal ibfl-g, endcalibrationl void startcnibp ; /* just for cal-stop version */ ) 1K K #R*# K KK*t*#**3f****fi*K*#***KK WI#**flfi***** File comset.c * rnte cnm setup setup com * Y pi.r ameters. * K * r 1ISi. void comsettpi( * t * * Description setup communications at * * 9600,n,1,i. * * * * Returr, value none * * * Calls none * *F * * Called by startcnibp * - Ninclude (dos.h) tinclude vold commsetup() t otUtpor.tb(LCR,Ox80); /* set DLAB - ú outportb(lER,OxO0); 1* set Divisor Latch LSB (DLL> ta 0 outportb(RBR,12); /* set Divisor Latch MSS (DLM) to 12 *1 oautportb(LCR,OxO3)i t* met B bits, I stop bit no parity *1outportbER reset Intrrupt Enab Restr outpcrtb g 1* remet Int.rrupt Enable Regimter yfl*+ **y********4f**************I*t***f**** K File Send_msg.c * * Name send_ms9 - RS232 output * W> driver * * K Useee void sendmg() * * * * * Description driver for sending mes- * * msages over the serial * * communication port. * * * * Return value none * * * * Colis none * * * * Called by start_cnibp * * * Ninclude extr-n char ms[gt8l void send4msg() int tj1 {or i1-OI 1 ) *%u; Jd 1{2t 'Ti) xo-o4 I {Z' TC). I*********** "***************************; sw=--3dls Zq pal' * * * * euou 5et3 * * * *.uauou *nie^ uJn * * * uo* l*X * * * q'suwt-o. ul dXIoGoad * * f * ()9s--i-dutp p!o^ aCes * * * * uws1j"4 uofl-JcqItwz * selds5p - s*4-tje-dsip tP114 i *6=0 tro-ú59p,1 td f 6Z98ú9Z *.............. AXAA WW p Fi!e getu.c * * flame 9et_m reads real time * * cuff pressure.- * * * * Usage Snt get_m(> * * * * Description reads real time cuff * *, pressure. * * * * Return value TRUE or FALSE * * * Calls nonc * * * * Called by startcnibp * * * ************************************** A* Vinclude fInclude êrclude int get_ml) rharChi static int trit9 flag-O; whilr (niportb(l.SPI L OxOl)I t* while bit O of Line Control Register */ outportb(MCR,OxOO)I 1* is on, disable DTR or RTS C, clI - inportb(PBRi /i* get character form e'eceive buffe? if (tri 9_{1g > 2 ch -= 131(t * 1if last 4 characters are 919191CR' *1 tri_9_4lag - O; / * reset +lag Sndicating 3 '9 s *f return(TRUEII /* terminalte caller's while loop k, if (Ch -= 571 * Description prepares a message for * * transmisslion by setting * *$ the proper *equence of * K characters of a comm&nd.* * * * Return value non * * * * Calls none. * * * * Called by startcnibp * * * *K***K* X f***K* ***K KK*K******tt X****i ** 1*1XX- *xtPrn char ms9Gt8i vold prepare_msgtfnt in) It I; chali chs[lB3L2] ), , óOx3l0Ox33), (Ox31,0x34), }; N prf ti.- aprapriate characters in ms9 * *Y*r If**********fi*************t************i if O}{ us9tI] * cmdtin - 13ú03; ams912] cmdtin - 13C124 ueste t - chutin - l)O[ u'33t63 - chutin - litll 4S*S*Sf *******+**t ****W-******a*"******** * FIle get_mnsg c * H a-me getmsg RS232 input * * driver. * * U L'-ge int 9et_m() * IF * * Dcription driver for receiving * *,messages over the'serial* * communication port. * * * X Ret+rn value O if RX succesaful. * * NOSTX If no text RXd * * * * Calls none * * * * Called by start_cnibp * * * **>*********k****8**X********J* 5***fi****I Ninclude 4dcs.h> Ntnclude 'time.h> Minclude Ninclude o{include éinclude eterni f!oat systolicdiastolicmean; extern Int heartp; e':tern int clr; extern int prev.maxacc, prev_min_acc, prev_max_counter; int getms(gt) int ref_upref_bot; int Ijdone,re4; char rmsgt37]3a-LOl; Int line; long timel; char *strnow; for (i-Oair80i++l aCl ' 321 done - FALSEI /* set initial condition for whi le loop */ i O{ /* initialize message index */ while(!done){ /* while no ETX receive characte rs *1 ifCinportb(LSR) & OxOl)( /* if bit O of Line Control Regi ster on*/ outportbtiICROxOO)l /* no DTR or RTS *1 rmsgtil = inportb(RBR)I /* read cha-acter from R eccive Duffer *1 if(rmsgcti] -- ETX) /* if ETX terminate while loop *1 done - TRUEI *++i /* otherwise incremel.t m essage index *1 outportb(MCR,Ox02)1 /* met RTS ) I **********4.*********************4** * 4tsplay recelved data on scraeen * systolic 100*rm.sg9132-48) 4 10*irmmgú142-48) +(rmugtl5I-48)1 dfl&tolic - 100 * (rmugtl6] - 481 + 10 * (rmsgtl7l - 481 + (rmsgt[IS - 49a mean - 100 * irmsgt191 - 48) + 10 * (rmsgt203 - 481 + trmsg[2i - 48); heart_p - 100*trmsgt243-48) + 10ltrmsgC2t2-4BI 4(rmsg9263-48)1 for tJ1l; I printf DW 128 DUP('7 _has ends dCg oup group _data,_bss * a tqA.'ca,. t asrt itrb db "0123456289" h M'i dw s, 6 t.i vu dlq ?it lecond dw ? 'S; -sep-r-t db,' ten db 10 thu dw 1092 eisht db 18 urpaos dw 163fh toprint db 1 dupC'd')) '*' _data erfd -printstring mac",o mov ah,9 int 21h endm t------*-=-.=.... ......................................................,.....,.,,....._..DTD: I Code segment containing the main and subroutines. I =ats$=t*=s=s=s===a=ssm=rs=ssss= a===ts==w==.==aa===ss===---=-=r ---= _tenxt.!SEGHENT PUBLIC assume cs:_text,ds:dgroup public _CLOCK CLOCK proc near mOv ax,dgroup;establish data segment Mov dsax : blznl, cursnr and get time trom system clock gt_t i mre: mov ch,Offh;transfer cursor blankinq code mov ahl t- to BIOS ir t lOh mov ah,O iget time of day int lah iusing BIOS lec bxasciitab 1get address of translation tabl e t- translate retrr-,ed value for hour into ASCII tl 1h1: tuv escx tget value for ihour in AX div ten -divde by 10 to convert to dectun xlat asciitab; translate to ASCII xchg *hal lexchange AH and AL xlat asciitab Itrnaslate the remainder to ASC] xch9g al,ah Iget back in riglht order 4or dis play mov hourax;save value for display : tr^t."rt- r-tutl rE' val u fr,. fil. tets à.to AS 1l :4. mo x h a amaca1..tab *'hg I Ijh Mov tl*flutex I. triprsltte returned value for seconds into ASCII Infv xnd>x 4iv eight -or ahah 4iv ter. xlat ascii tab Ichg ahal xlIat asciti tab xchg aI,ah Mnov secondax raov dx,cur_pos ov ah,2 int loh isp_h: rov ax,hour push ax Ira bxtoprint mav tbxl,al Inv dx,bx _print_string pop ax xch3 ah,-l lee bx,toprint mnv tbx], a& Mav dxbx _printstrin9 1*a dx,separat _pr int_str itn MIOv axtnute push ax lea bx,toprint mov tbx],al mnv dx,bx _print_striln9 pop *x xchg ahal lea bxtoprtnt mov tbx3,al mov dx,bx _printstring l-a dx,5-p-rat _print_str ing 4 ',.p.F mnv Mx, Second p'joih Rax mov [bx],al mov dx,bx _printstr i n pcp ax xc1.9 ah'al ] 3 bx,tcpr i nt m-v tbxl,al IftrlV J X m [3 X rfir nt_tr tin ret Ci['OCk ondp *ndp e =5= =. = = = ==H===D=_== =g _text. l'iS l; [In REVENDICATIONS 1. Appareil de surveillance non invasive continue de la pression sanguine, caractérisé en ce qu'il comprend: OS un moyen transducteur optique (10) servant à détecter une information relative 'à la quantité de sang qui circule dans un conduit sanguin; et un moyen (30, 32, 34, 36, 38, 44) qui répond au signal de sortie du moyen transducteur optique en produisant une indication de la pression du sang systolique et de la pression du sang diastolique. 2. Appareil selon la revendication 1, caractérisé en ce que ledit moyen indicateur qui répond au signal de sortie du moyen transducteur fournit des indications directes de la pression du sang systolique et de la pression du sang diastolique. 3. Appareil selon la revendication 1 ou 2, caractérisé en ce que ledit moyen indicateur répondant à un signal de sortie du moyen transducteur calcule la pression sanguine moyenne en intégrant le signal de sortie du moyen transducteur optique. 4. Appareil selon l'une quelconque des revendications 1 à 3, caractérisé en ce qu'il comprend également un moyen d'affichage (40) servant à afficher la forme d'onde du signal de sortie du moyen transducteur optique, si bien que la marche des valvules cardiaques peut être détectée. 5. Appareil selon l'une quelconque des revendications 1 à 4, caractérisé en ce qu'il fonctionne en temps réel. 6. Appareil selon l'une quelconque des revendications 1 à , caractérisé en ce qu'il comprend également un moyen (42) servant étalonner le moyen in dicateur. 7. Appareil selon la revendication 6, caractérisé en ce que ledit moyen d'étalonnage comprend un manchon tensiométrique de type électrique. 8. Appareil selon la revendication 6, caractérisé en ce qu'il comprend également un clavier (46) servant à introduire manuellement des informations d'étalonnage. 9. Procédé de surveillance non invasive continue de la pression sanguine, caractérisé en ce qu'il comprend les opérations suivantes: détecter optiquement une information relative à la quantité de sang passant dans un conduit sanguin; et répondre au signal de sortie obtenu par l'opération de détection optique en produisant une indication de la pression du sang systolique et de la pression du sang diastolique. 10. Procédé selon la revendication 9, caractérisé en ce que ladite opération de production d'une indication fournit des indications directes de la pression du sang systolique et de la pression du sang diastolique. 11. Procédé selon l'une quelconque des revendications 9 et 10, caractérisé en ce que ladite opération de production d'une indication calcule la pression sanguine moyenne en intégrant le signai de sortie de l'opération de détection optique. 12. Procédé selon l'une quelconque des revendications 9 à 11, caractérisé en ce qu'il comprend également l'opération consistant à afficher la forme d'onde du signal de sortie de l'opération de détection optique, si bien qu'on peut détecter la marche des valvules cardiaques. 13. Procédé selon l'une quelconque des revendications 9 à 12, caractérisé en ce que ladite opération de détection optique mesure le débit sanguin dans une artère.