Exemples de programmation à partir du port com. Anatomie d'un port COM. Cartes d'extension COM

Description de l'interface RS-232, du format des connecteurs utilisés et de la fonction des broches, des désignations des signaux, du protocole d'échange de données.

description générale

L'interface RS-232, assez officiellement appelée "EIA / TIA-232-E", mais mieux connue sous le nom d'interface "port COM", était auparavant l'une des interfaces les plus courantes en technologie informatique. On le trouve encore aujourd'hui dans les ordinateurs de bureau, malgré l'émergence d'interfaces plus rapides et plus intelligentes telles que USB et FireWare. Ses avantages du point de vue des radioamateurs incluent une vitesse minimale faible et une facilité de mise en œuvre du protocole dans un appareil fait maison.

L'interface physique est mise en œuvre par l'un des deux types de connecteurs : DB-9M ou DB-25M, ce dernier est pratiquement introuvable dans les ordinateurs actuellement produits.

Brochage du connecteur à 9 broches


9 broches mâle DB-9M mâle
Numérotation des broches du côté des broches
La direction des signaux est indiquée par rapport à l'hôte (ordinateur)
Contact Signal Direction La description
1 CD entrée Transporteur détecté
2 RXD entrée Données reçues
3 TXD Sortir Données transmises
4 DTR Sortir Hôte prêt
5 GND - Fil commun
6 DSR entrée L'appareil est prêt
7 RTS Sortir L'hôte est prêt à transférer
8 CTS entrée L'appareil est prêt à recevoir
9 IR entrée Appel détecté

Brochage du connecteur à 25 broches

Contact Signal Direction La description
1 BOUCLIER - Écran
2 TXD Sortir Données transmises
3 RXD entrée Données reçues
4 RTS Sortir L'hôte est prêt à transférer
5 CTS entrée L'appareil est prêt à recevoir
6 DSR entrée L'appareil est prêt
7 GND - Fil commun
8 CD entrée Transporteur détecté
9 - - réserve
10 - - réserve
11 - - Non utilisé
12 SCD entrée Transporteur n° 2 détecté
13 SCTS entrée Appareil prêt à recevoir #2
Contact Signal Direction La description
14 STXD Sortir Données transférées #2
15 CVR entrée Pointage de l'émetteur
16 SRXD entrée Données reçues #2
17 RCC entrée Récepteur horloge
18 BOUCLE Sortir Boucle locale
19 SRTS Sortir Hôte prêt pour le transfert #2
20 DTR Sortir Hôte prêt
21 BOUCLE Sortir Charnière extérieure
22 IR entrée Appel détecté
23 DRD entrée Débit de données déterminé
24 TRCO Sortir Pointage de l'émetteur externe
25 TEST entrée Mode d'essai

On peut voir dans les tableaux que l'interface à 25 broches se distingue par la présence d'un deuxième canal d'émission-réception à part entière (signaux désignés "# 2"), ainsi que de nombreux signaux de contrôle et de surveillance supplémentaires. Cependant, souvent, malgré la présence d'un connecteur "large" dans l'ordinateur, des signaux supplémentaires ne lui sont tout simplement pas connectés.

Caractéristiques électriques

Niveaux logiques de l'émetteur :"0" - de +5 à +15 Volts, "1" - de -5 à -15 Volts.

Niveaux logiques du récepteur :"0" - au-dessus de +3 Volts, "1" - en dessous de -3 Volts.

l'impédance d'entrée du récepteur est d'au moins 3 kOhm.

Ces caractéristiques sont définies par la norme comme le minimum, garantissant la compatibilité des appareils, cependant, les caractéristiques réelles sont généralement bien meilleures, ce qui permet, d'une part, d'alimenter des appareils de faible puissance à partir du port (par exemple, c'est combien sont conçus les nombreux câbles de données maison pour téléphones portables), et d'autre part, à fournir à l'entrée du port inversé Niveau TTL au lieu du signal bipolaire.

Description des principaux signaux d'interface

CD- L'appareil définit ce signal lorsqu'il détecte une porteuse dans le signal reçu. Généralement, ce signal est utilisé par les modems, qui informent ainsi l'hôte qu'un modem fonctionnel se trouve à l'autre extrémité de la ligne.

RXD- La ligne sur laquelle l'hôte reçoit les données de l'appareil. Il est décrit en détail dans la section "Protocole de communication".

TXD- Ligne de transmission hôte de données vers l'appareil. Il est décrit en détail dans la section "Protocole de communication".

DTR- L'hôte active ce signal lorsqu'il est prêt à échanger des données. En effet, le signal est activé lorsque le port est ouvert par le programme de communication et reste dans cet état tant que le port est ouvert.

DSR- L'appareil émet ce signal lorsqu'il est sous tension et prêt à communiquer avec l'hôte. Ce signal et les signaux précédents (DTR) doivent être définis pour l'échange de données.

RTS- L'hôte définit ce signal avant de commencer à transmettre des données à l'appareil, et signale également qu'il est prêt à recevoir des données de l'appareil. Utilisé pour le contrôle de la communication matérielle.

CTS- L'appareil définit ce signal en réponse au réglage précédent (RTS) par l'hôte lorsqu'il est prêt à recevoir des données (par exemple, lorsque les données précédentes envoyées par l'hôte sont transmises par le modem à la ligne ou qu'il y a de l'espace libre dans le tampon intermédiaire).

IR- L'appareil (généralement un modem) émet cette tonalité lorsqu'il reçoit un appel du système distant, par exemple lorsqu'il reçoit un appel téléphonique si le modem est configuré pour recevoir des appels.

Protocole de communication

Dans le protocole RS-232, il existe deux méthodes de contrôle des échanges de données : matérielle et logicielle, ainsi que deux modes de transmission : synchrone et asynchrone. Le protocole permet à n'importe quelle méthode de contrôle d'être utilisée en conjonction avec n'importe quel mode de transmission. Il permet également un fonctionnement sans contrôle de flux, ce qui implique que l'hôte et l'appareil sont toujours prêts à recevoir des données lorsque la communication est établie (les signaux DTR et DSR sont établis).

Méthode de contrôle du matériel implémenté à l'aide de signaux RTS et CTS. Pour transmettre des données, l'hôte (ordinateur) active le signal RTS et attend que l'appareil définisse le signal CTS, puis commence à transmettre des données tant que le signal CTS est activé. Le signal CTS est vérifié par l'hôte juste avant que l'octet suivant ne commence à être transmis, de sorte que l'octet qui a déjà commencé à être transmis sera entièrement transmis quelle que soit la valeur CTS. En mode d'échange de données semi-duplex (l'appareil et l'hôte transmettent des données à leur tour, en mode duplex intégral, ils peuvent le faire simultanément), la suppression du signal RTS par l'hôte signifie sa transition vers le mode de réception.

Méthode de contrôle du logiciel est pour le destinataire d'envoyer les caractères spéciaux stop (caractère avec le code 0x13, appelé XOFF) et reprendre (caractère avec le code 0x11, appelé XON) de la transmission. A la réception des données de caractères, le côté émetteur doit respectivement arrêter la transmission ou la reprendre (s'il y a des données en attente de transmission). Cette méthode est plus simple du point de vue de la mise en œuvre matérielle, cependant, elle fournit une réponse plus lente et, par conséquent, nécessite une notification préalable de l'émetteur lorsque l'espace libre dans le tampon de réception diminue jusqu'à une certaine limite.

Mode de transmission synchrone implique un échange de données continu, lorsque les bits se succèdent sans pauses supplémentaires à une cadence donnée. Ce mode par port COM non supporté.

Mode de Transfert Asynchrone consiste en le fait que chaque octet de données (et le bit de parité, s'il y en a un) est « enroulé » dans une séquence de synchronisation d'un bit de départ zéro et d'un ou plusieurs bits d'arrêt simples. Le diagramme de flux de données en mode asynchrone est représenté sur la figure.

Un des algorithmes possibles pour le récepteur suivant:

  1. Attendez le niveau de signal de réception "0" (RXD en cas d'hôte, TXD en cas de périphérique).
  2. Comptez à rebours la moitié de la longueur de bit et vérifiez que le niveau du signal est toujours « 0 »
  3. Comptez la durée totale du bit et écrivez le niveau de signal actuel dans le bit de données le moins significatif (bit 0)
  4. Répétez l'étape précédente pour tous les autres bits de données
  5. Comptez la durée totale des bits et utilisez le niveau de signal actuel pour vérifier l'exactitude de la réception à l'aide du contrôle de parité (voir ci-dessous)
  6. Comptez la durée totale du bit et assurez-vous que le niveau de signal actuel est "1".

Bits d'arrêt- définit le nombre de bits d'arrêt. Le terrain peut
prendre les valeurs suivantes :


  • UN ARRÊT- un bit d'arrêt ;
  • ONE5STOPBIT- un bit d'arrêt et demi (pratiquement pas
    utilisé);
  • DEUX ARRÊT- deux bits d'arrêt.

Une fois tous les champs de la structure DCB renseignés, vous devez
configurer le port en appelant la fonction SetCommState :

BOOL SetCommState (

GÉRER hFichier,

LPDCB lpDCB

En cas de succès, la fonction renverra une valeur différente de zéro
valeur, ou zéro en cas d'erreur.

La deuxième structure requise pour la configuration du port est
Structure COMMTIMEOUTS. Il définit les paramètres des temporisations
lors de la réception et de la transmission. Voici une description de cette structure :

typedef struct _COMMTIMEOUTS (

DWORD ReadIntervalTimeout;

DWORD ReadTotalTimeoutMultiplier;

DWORD ReadTotalTimeoutConstant ;

DWORD WriteTotalTimeoutMultiplier;

DWORD WriteTotalTimeoutConstant;

) COMMTIMEOUTS, * LPCOMMTIMEOUTS ;

Les champs de la structure COMMTIMEOUTS ont les significations suivantes :


  • ReadIntervalTimeout- intervalle de temps maximum
    (en millisecondes) autorisé entre deux lectures de
    ligne de communication en caractères séquentiels. Pendant
    opérations de lecture, la période de temps commence à compter à partir du moment
    recevant le premier caractère. Si l'intervalle entre deux
    avec des caractères consécutifs dépassera la valeur spécifiée, l'opération
    la lecture est terminée et toutes les données accumulées dans le tampon sont transférées
    dans le programme. Une valeur zéro pour ce champ signifie que ce
    le délai d'attente n'est pas utilisé.
  • ReadTotalTimeoutMultiplicateur- définit le multiplicateur (en


    multiplié par le nombre de caractères demandés à lire.
  • ReadTotalTimeoutConstant- définit une constante (dans

    opérations de lecture. Pour chaque opération de lecture, la valeur donnée
    plus au résultat de la multiplication de ReadTotalTimeoutMultiplier par
    le nombre de caractères demandés pour la lecture. Valeur de champ zéro
    ReadTotalTimeoutMultiplier et ReadTotalTimeoutConstant signifient
    que le délai d'attente général pour l'opération de lecture n'est pas utilisé.
  • WriteTotalTimeoutMultiplicateur- définit le multiplicateur (en
    millisecondes) utilisé pour calculer le délai d'attente total

    multiplié par le nombre de caractères écrits.
  • WriteTotalTimeoutConstant- définit une constante (dans
    millisecondes) utilisé pour calculer le délai d'attente total
    opérations d'écriture. Pour chaque opération d'écriture, la valeur donnée
    ajouté au résultat de la multiplication de WriteTotalTimeoutMultiplier par
    le nombre de caractères à écrire. Valeur de champ zéro
    WriteTotalTimeoutMultiplier et WriteTotalTimeoutConstant signifient
    que le délai d'attente total pour l'opération d'écriture n'est pas utilisé.

Un peu plus de détails sur les délais d'attente. Lisons du port 50
caractères à une vitesse de 9 600 bps. Si cela utilise 8 bits
par caractère, complément de parité et un bit d'arrêt, puis par un
un caractère sur la ligne physique a 11 bits (y compris le bit de départ).
Cela signifie que 50 caractères à 9 600 bps seront acceptés

50 × 11/9600 = 0,0572916 s

ou environ 57,3 millisecondes, en supposant un intervalle de zéro
entre la réception de caractères consécutifs. Si l'intervalle entre
caractères est environ la moitié du temps de transmission d'un
caractère, c'est-à-dire 0,5 milliseconde, alors le temps de réception sera

50 × 11/9600 + 49 × 0,0005 = 0,0817916 s

ou environ 82 millisecondes. Si plus de
82 millisecondes, alors nous avons le droit de supposer qu'une erreur s'est produite dans
fonctionnement d'un appareil externe et nous pouvons arrêter la lecture,
éviter le blocage du programme. Il s'agit du délai d'attente total de l'opération.
en train de lire. De même, il existe un délai d'attente général pour l'opération d'écriture.

Formule pour calculer le timeout total d'une opération, par exemple
la lecture ressemble à ceci :

NumOfChar x ReadTotalTimeoutMultiplier +
ReadTotalTimeoutConstant

où NumOfChar est le nombre de caractères requis pour l'opération de lecture.

Dans notre cas, les délais d'enregistrement peuvent être omis et
les mettre à zéro.

Après avoir rempli la structure COMMTIMEOUTS, vous devez appeler
fonction de réglage du délai d'attente :

BOOL SetCommTimeouts (

GÉRER hFichier,

LPCOMMTIMEOUTS lpCommTimeouts

Étant donné que les opérations d'émission-réception sont effectuées à faible vitesse,
la mise en mémoire tampon des données est utilisée. Pour définir la taille du tampon de réception et
transfert, vous devez utiliser la fonction :

BOOL SetupComm (

GÉRER hFichier,

DWORD dwInQueue,

DWORD dwOutQueue

Disons que vous échangez des paquets avec un périphérique externe
des informations de 1024 octets, puis une taille raisonnable de buffers
aura une valeur de 1200. La fonction SetupComm est intéressante en ce qu'elle peut
il suffit de noter vos mesures en effectuant vos réglages, ou
rejetez complètement les tailles de tampon que vous avez suggérées - dans ce cas
cette fonction échouera.

Je vais donner un exemple d'ouverture et de configuration d'une série
port COM1. Par souci de concision - aucune définition d'erreur. Dans cet exemple
le port est ouvert pour fonctionner à une vitesse de 9 600 bps, 1 est utilisé
bit d'arrêt, aucun bit de parité utilisé :

#inclure

. . . . . . . . . .

POIGNÉE poignée;

COMMTIMEOUTS CommTimeouts ;

DCB dcb;

handle = CreateFile ("COM1", GENERIC_READ | GENERIC_WRITE,
NULL, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);

SetupComm (handle, SizeBuffer, SizeBuffer);

GetCommState (handle, & dcb);

dcb.BaudRate = CBR_9600 ;

dcb.fBinary = TRUE;

dcb.fOutxCtsFlow = FAUX ;

dcb.fOutxDsrFlow = FAUX ;

dcb.fDtrControl = DTR_CONTROL_HANDSHAKE ;

dcb.fDsrSensitivity = FAUX ;

dcb.fNull = FAUX ;

dcb.fRtsControl = RTS_CONTROL_DISABLE;

dcb.fAbortOnError = FAUX ;

dcb.ByteSize = 8 ;

dcb.Parité = NOPARITÉ;

dcb.StopBits = 1 ;

SetCommState (handle, & dcb);

CommTimeOuts.ReadIntervalTimeout = 10;

CommTimeOuts.ReadTotalTimeoutMultiplier = 1;

// les valeurs de ces timeouts sont bien suffisantes pour se confier
accueil

// même à 110 bauds

CommTimeOuts.ReadTotalTimeoutConstant = 100 ;

// utilisé dans ce cas comme timeout
colis

CommTimeOuts.WriteTotalTimeoutMultiplier = 0;

CommTimeOuts.WriteTotalTimeoutConstant = 0;

SetCommTimeouts (gestionnaire, & CommTimeOuts);

PurgeComm (gestionnaire, PURGE_RXCLEAR);

PurgeComm (gestionnaire, PURGE_TXCLEAR);

Après avoir ouvert le port, la première chose à faire est de le réinitialiser, donc
comment les tampons de réception et de transmission peuvent contenir des "ordures". Par conséquent, dans
à la fin de l'exemple, nous avons appliqué une fonction inconnue auparavant
Comm de purge :

BOOL PurgeComm (

GÉRER hFichier,

DWORD dwFlags

Cette fonction peut faire deux choses : vider les files d'attente
réception et transmission dans le pilote ou effectuer toutes les opérations
entrée sortie. Quelles actions à effectuer est donnée aux autres
paramètre:


  • PURGE_TXABORT
    enregistrements, même s'ils sont incomplets;
  • PURGE_RXABORT- met immédiatement fin à toutes les opérations
    lectures, même si elles ne sont pas terminées;
  • PURGE_TXCLEAR- efface la file d'attente de transmission dans le pilote ;
  • PURGE_RXCLEAR- efface la file d'attente de réception à
    chauffeur.
    Ces valeurs peuvent être combinées à l'aide du bitwise
    OU opérations. Il est recommandé de vider les tampons également après des erreurs
    réception et transmission et après achèvement des travaux avec le port.

Il est temps de considérer les opérations elles-mêmes
lecture-écriture pour le port. Ainsi que pour travailler avec des fichiers, sont utilisés
les fonctions ReadFile et WriteFile. Voici leurs prototypes :

BOOL LireFichier (

GÉRER hFichier,

LPVOID lpBuffer,

DWORD nNumOfBytesToRead,

LPDWORD lpNumOfBytesLire,

LPOVERLAPPED lpOverlapped

BOOL ÉcritureFichier (

GÉRER hFichier,

LPVOID lpBuffer,

DWORD nNumOfBytesToWrite,

LPDWORD lpNumOfBytesÉcrit,

LPOVERLAPPED lpOverlapped

Considérons le but des paramètres de ces fonctions :


  • hFichier- descripteur du fichier de communication ouvert
    Port;
  • lpBuffer est l'adresse du tampon. Pour une opération d'écriture, les données de
    ce tampon sera envoyé au port. Pour une opération de lecture dans ce
    les données reçues de la ligne seront placées dans le buffer ;
  • nNumOfBytesToRead, nNumOfBytesToWrite- le nombre de prévu
    pour recevoir ou destiné à la transmission des octets ;
  • nNumOfBytesLire, nNumOfBytesEcrit- le nombre en fait
    octets reçus ou transmis. Si reçu ou transmis moins
    données que celles demandées, alors pour un fichier disque cela indique
    erreur, mais pas nécessaire pour le port de communication.
    La raison en est les délais d'attente.
  • LpChevauchement est l'adresse de la structure OVERLAPPED utilisée
    pour les opérations asynchrones.

En cas de terminaison normale, les fonctions renvoient une valeur,
non nul, nul en cas d'erreur.

Je vais donner un exemple d'opération de lecture et d'écriture :

#inclure

…………..

numbytes DWORD, numbytes_ok, temp ;

COMSTAT ComState;

CHEVAUCHEMENT Chevauchement ;

char buf_in = "Bonjour !";

nombres = 6 ;

// si temp est différent de zéro, alors le port est capable de
erreurs

if (! temp) WriteFile (handle, buf_in, numbytes,
& numbytes_ok, & Chevauchement);

ClearCommError (handle, & temp, & ComState);

if (! temp) ReadFile (handle, buf_in, numbytes, & numbytes_ok,
& Chevauchement);

// la variable numbytes_ok contient un nombre réel
transféré

// octets reçus

Dans cet exemple, nous avons utilisé deux que nous ne connaissions pas auparavant
les structures COMSTAT et OVERLAPPED et la fonction ClearCommError. Pour
dans notre cas de communication "sur trois fils", la structure OVERLAPPED peut être omise
considérer (il suffit d'utiliser, comme dans l'exemple). Prototype de fonction
ClearCommError ressemble à :

BOOL ClearCommError (

GÉRER hFichier,

Erreurs LPDWORD,

LPCOMSTAT lpStat

Cette fonction réinitialise l'indicateur d'erreur de port (le cas échéant.
place) et renvoie des informations sur l'état du port dans la structure
COMSTAT :

typedef struct _COMSTAT

DWORD fCtsHold : 1 ;

DWORD fDsrHold : 1 ;

DWORD fRlsdHold : 1 ;

DWORD fXoffHold : 1 ;

DWORD fXoffEnvoyé : 1 ;

DWORD fEof : 1 ;

DWORD fTxim : 1 ;

DWORD réservé : 25 ;

DWORD cbInQue;

DWORD cbOutQue;

) COMSTAT, * LPCOMSTAT;

On peut utiliser deux champs de cette structure :


  • CbInQue- le nombre de caractères dans le buffer de réception. Ces symboles
    déconnecté, mais pas encore lu par la fonction ReadFile ;
  • CbOutQue- le nombre de caractères dans le buffer de transmission. Ces
    les caractères n'ont pas encore été transférés sur la ligne.

Les autres champs de cette structure contiennent des informations sur
les erreurs.

Enfin, une fois que vous avez fini d'utiliser le port, vous devez le fermer.
La fermeture d'un objet dans Win32 se fait par la fonction CloseHandle :

BOOL CloseHandle (

HANDLE hObjet

Sur notre site, vous pouvez trouver le texte intégral de la classe pour travailler avec
port série en mode asynchrone à trois fils, et
Voir aussi un exemple de programme utilisant cette classe. Tout ça
écrit sous Builder C++, mais puisque seules les fonctions sont utilisées
API Win32, le texte du programme peut être facilement modifié pour n'importe quel compilateur C++.
Il est également possible que la classe ne soit pas écrite tout à fait "selon les règles" - s'il vous plaît
désolé, l'auteur n'est pas un programmeur "correct" et écrit comme ceci,
comme cela lui convient J.

Salutations, amis. Nous continuons à étudier l'unité centrale. Aujourd'hui, je vais parler des ports informatiques. Ce que c'est? Avec le développement rapide des technologies Internet, le concept de « port », « socket » est entendu par beaucoup. C'est une autre branche, et nous n'en parlerons pas aujourd'hui. Le sujet de cet article contient des informations sur les connecteurs (ou ports) purement "en fer", "réels", qui sont conçus pour connecter divers périphériques à l'unité centrale.

Le matériel est également amélioré et à chaque génération, nous découvrons de nouveaux types de connecteurs (ou ports) sur les unités système achetées. Divers appareils dits périphériques y sont connectés. Unité système + moniteur = ordinateur. Tout ce qui s'y connecte (imprimantes, scanners, programmeurs, cartes vidéo, moniteurs, etc.) sont des périphériques.

Il existe de nombreux ports sur l'ordinateur. Ils sont situés sur la carte mère de l'unité centrale et sont des connecteurs (la plupart se trouvent à l'arrière). Certains des connecteurs sont affichés sur le panneau avant et ils sont également connectés à la carte mère.

Il est également possible d'y installer des périphériques supplémentaires via des connecteurs d'extension spéciaux. Ces appareils comprennent des cartes vidéo discrètes, des cartes réseau, des adaptateurs Wi-Fi, des concentrateurs USB, des lecteurs de cartes, des serrures électroniques, des cartes vidéo et bien plus encore.

La présence de connecteurs d'extension vous permet d'assembler indépendamment un ordinateur comme un constructeur, en fonction de vos préférences, sans perdre une journée supplémentaire. Car les développeurs ont depuis longtemps standardisé les équipements qu'ils produisent. Si nécessaire, vous pouvez le mettre à jour. C'est la principale raison pour laquelle les ordinateurs compatibles IBM-PC (comme une telle plate-forme est appelée) ont une fois évincé l'Apple Macintosh du marché.

Leurs unités centrales étaient à l'origine non séparables et l'équipement n'était pas remplaçable. Il est impossible de mettre à niveau un tel appareil, et la maintenabilité d'un tel appareil est réduite.

Une courte liste de ports d'ordinateur

Vous devez être capable de distinguer visuellement les connecteurs les uns des autres. Le fabricant n'indique pas toujours leurs noms. Les connecteurs étant regroupés sur le panneau arrière de l'unité centrale, commençons par lui. Tous les ports ont un nom en anglais, vous ne pouvez rien y faire. En bref, ils peuvent être divisés :

  1. Ports série;
  2. Port parallèle;
  3. Ports pour ordinateur et souris;
  4. ports USB ;
  5. ports SCSI ;
  6. Ports vidéo ;
  7. Connecteurs pour câbles réseau;
  8. connecteurs audio ;
  9. lecteurs de cartes ;

Certaines de ces variétés sont déjà tombées dans l'oubli et ne se trouvent plus sur les cartes mères modernes. D'autres variétés, au contraire, étendent leurs fonctionnalités et il existe des cartes mères pour les gourmets - amateurs d'audio ou de vidéo de bonne qualité.


Ces cartes peuvent également prendre en charge les formats audio ou vidéo de fabricants tiers (Sony, Philips), et vous pouvez alors trouver un connecteur correspondant sur un tel ordinateur. Les ports audio et vidéo offrent aujourd'hui une variété particulière.

Ports d'ordinateur pour connecter des périphériques

Port série- aujourd'hui est déjà une chose moralement obsolète. Mais pour les spécialistes qui s'occupent de la réparation d'appareils électroniques, ils sont précieux. Initialement, ce port servait à connecter un modem. Le débit en bauds est généralement de 110 à 115 200 bps. Il y en avait généralement deux avec des connecteurs. DB 9 tapez "papa":

La vitesse est tout à fait suffisante pour que le programmeur flashe un microcontrôleur ou un téléphone portable. Ou pour échanger des données avec une alimentation sans interruption. Ces ports sont appelés COM1 et COM2.

Port parallèle- familier à beaucoup, car il était principalement destiné à connecter une imprimante. Aussi une espèce presque éteinte. Il a également été utilisé pour connecter des clés de protection matérielles.


Le connecteur est utilisé pour la connexion DB25 tapez "maman". Le taux de transfert de données est faible - mais suffisant pour un programmeur ou une vieille imprimante laser. La plupart des ordinateurs plus anciens avaient toujours deux ports série et un parallèle.

Ports clavier et souris familier à tous les utilisateurs. Dans les ordinateurs modernes, ils sont violets et verts. Les prises de la souris et du clavier sont de la même couleur. Il est difficile de confondre. Connecteurs femelles à six broches (mini-Din). Ils ont été inventés en Allemagne et c'est devenu la norme. Autre nom pour IBM / PC2

depuis qu'ils ont été utilisés pour la première fois sur la plate-forme IBM PC déjà mentionnée. Si les connecteurs sont confus lors de la connexion, les appareils ne fonctionneront pas. Un avantage certain - ils économisent les ports USB. Moins - il est nécessaire de redémarrer l'ordinateur s'il est mal connecté. D'ailleurs, c'est aussi une espèce en voie de disparition. Sur de nombreux ordinateurs modernes, ce port n'en reste qu'un - et il est peint en même temps en violet-vert. Vous ne pouvez y connecter qu'un seul appareil ou une souris - ou un clavier.

Ports USB. Bus universel en série, ( Bus universel en série). Depuis 1998, il remplace d'autres ports ; même sur les autoradios et caméscopes, vous trouverez ce connecteur aujourd'hui. Les premières générations avaient un taux de transfert de données d'environ 12 Mb/s. - époustouflant pour cette époque. Aujourd'hui, nous utilisons l'USB 3, qui a une vitesse de 5 Gbps.

Ces ports n'ont pas changé en externe. L'ordinateur a des connecteurs "A". Le connecteur de tout appareil connecté est appelé "B". Il a quatre contacts, deux pour le courant, deux pour la transmission de données. En conséquence, il y a deux fois plus de contacts sur les ports USB 3.0.

Ports SCSI(Interface des petits systèmes informatiques) . Chose assez particulière et rare chez nous ; il me semble que vous ne le trouverez pas non plus chez un utilisateur ordinaire à l'étranger. Je crois que les appareils avec de telles interfaces ont été fabriqués sur commande - pour une utilisation en entreprise. Il s'agit d'une interface réseau pour l'échange de données à des vitesses allant jusqu'à 160 Mbps.


Une fois, je suis tombé sur un ordinateur portable apporté d'Amérique en 1999 par Dell. Il avait l'un de ces ports multibroches. Il était situé de telle manière qu'il ne pouvait être utilisé qu'en plaçant l'ordinateur portable sur la table. Le connecteur lui-même est recouvert de volets à ressort. Par conséquent, quelque part en Amérique, il y avait des tables dans lesquelles ce connecteur est construit... Vous l'apportez, le posez sur la table et il est connecté au réseau de l'entreprise.

Les variétés de l'interface nous sont déjà familières DB-25, ainsi que 50-High-Density, 68-pin -High-Density, 80-pin SCA, Centronics. Des disques durs peuvent également être connectés à cette interface. Une carte spéciale est responsable de la connexion - l'adaptateur hôte.


Ports vidéo... Ils ne peuvent pas non plus être confondus avec d'autres. Le port vidéo standard est un connecteur VGA femelle bleu de type D à 15 broches. Utilisé pour connecter un moniteur. Il s'agit d'une ancienne norme, adoptée en 1987. Toutes les cartes mères ne l'ont pas. Si vous ne l'avez pas « à bord », il se trouve au bas de l'unité centrale. Une carte vidéo est installée dans le connecteur d'extension :

Si vous décidez d'installer une carte vidéo en plus de celle existante ("à bord"), alors cette dernière ne fonctionnera plus. C'est bon. Le moniteur ne fonctionnera que s'il est connecté à celui installé.

Sur les cartes vidéo modernes, le port VGA est déjà devenu difficile à trouver ; ils sont remplacés par une autre variété - DVI. Sur une carte mère de transition, cela ressemble à ceci :

Il arrive très souvent qu'une carte vidéo VGA tombe en panne. Après en avoir acheté un nouveau, il s'avère qu'il n'a que des ports DVI. Dans ce cas, vous devez acheter un adaptateur et l'installer sur le connecteur DVI :

Faites attention au type d'adaptateur. Le fait est que les connecteurs DVI sont également différents - les nouvelles cartes vidéo coûteuses ont des ports DVI-D ou DVI-I. Les adaptateurs ne sont pas interchangeables, vérifiez ce point auprès du vendeur.

Dans ce cas, vous n'aurez pas besoin d'acheter un nouveau moniteur. Jusqu'à présent, les nouveaux moniteurs sont également livrés avec deux types de connecteurs - VGA et DVI.

Prise HDMI. Où est maintenant sans elle au 21e siècle? L'interface multimédia est conçue pour la transmission vidéo et audio haute définition avec protection contre la copie. Remplace simultanément la vidéo ci-dessus et certains ports audio (SCART, VGA, YPbPr, RCA, S-Video.). Peut-être que cette interface finira par remplacer tout le reste. Il peut être trouvé sur n'importe quelle technologie numérique - d'un appareil photo à un ordinateur (ou ordinateur portable).

La taille est comparable à un port USB et la vitesse de transfert de données est énorme par rapport à ce qui précède - jusqu'à 48 Gbps. La transmission des données s'effectue via un câble avec une bonne protection contre les interférences. Le câble peut être connecté à un ordinateur portable et à un téléviseur et regarder une vidéo. La longueur du câble ne doit pas dépasser 10 mètres, sinon un amplificateur/répéteur de signal est nécessaire.

Sur prises audio Je ne parlerai pas en détail. Tout a à peu près la même apparence que sur un lecteur DVD de salon lorsqu'il s'agit de quelque chose de spécial. Un exemple de ceci est le connecteur SPDiF, qui pourrait être installé sur un slot d'extension :

Norme audio de SONY et PHILIPS, cette carte se connecte à la carte mère à l'aide d'un connecteur au connecteur correspondant. Les prises standard pour connecter un microphone, des haut-parleurs, des écouteurs ressemblent à ceci :

Si vous souhaitez un son HD, vous devrez peut-être brancher l'adaptateur approprié ici. Lisez la documentation de votre carte mère :

Ports réseau. A notre époque, on ne peut plus s'en passer. Nous recevons Internet précisément via l'interface réseau via câble ou radio. Les cartes mères ont un connecteur intégré standard RJ45 pour connecter un câble Internet :

Sur les ordinateurs plus anciens, la norme de vitesse était de 100 Mbps, les cartes réseau modernes donnent 1000 Mbps. Si une carte réseau ne vous suffit pas, vous pouvez en acheter une supplémentaire et l'insérer dans le connecteur d'extension :

Une telle carte convient pour un slot PCI. Il existe également des options plus petites pour PCI-express :

Vérifiez le taux de transfert de données d'une carte particulière lors de l'achat. Pour les amateurs de réseaux sans fil, il existe également un large choix d'adaptateurs Wi-Fi :

Ils peuvent également être branchés sur des connecteurs d'extension PCI ou PCI - express. Cependant, si vous ne voulez pas fouiller dans l'unité centrale, vous pouvez acheter une clé USB - une variante d'une telle carte :

Vous l'insérez dans le port et entrez le mot de passe WIFI. Et vous avez un périphérique de plus connecté. De nombreux modèles d'imprimantes domestiques ont également un adaptateur Wii-Fi, et avec cette configuration, vous pouvez imprimer sans fil. Heureusement, il existe aujourd'hui un large choix de cartes réseau et d'imprimantes.

Comment désactiver les ports USB lors de l'arrêt de mon ordinateur ?

Enfin, je vais vous dire comment résoudre un problème. J'ai un casque avec un microphone pour l'enregistrement vidéo et la communication Skype. Les Chinois adoraient pousser là où c'était nécessaire et n'avaient pas besoin de LED pour la beauté. Lorsque l'ordinateur est éteint, le rétroéclairage reste allumé de toute façon, car il est alimenté par le port USB.

Le clavier brille également, ce qui n'est pas très pratique la nuit, mais pas mal (si on tape dans le noir). Afin de couper définitivement l'alimentation des ports, essayez de taper le raccourci clavier Gagner + R et dans la ligne "Exécuter" insérez la commande powercfg/h éteint.

Ensuite, vous devez éteindre l'ordinateur. Les symptômes sont susceptibles de disparaître. Cette commande désactive le mode veille et l'ordinateur s'éteint complètement. Vous pouvez voir les paramètres d'alimentation dans le "Plan d'alimentation" du panneau de configuration. Mais, il existe certains modèles de cartes où ce paramètre est désactivé via le BIOS. Et sur les plus avancés, cette fonction n'est pas désactivée ou cachée très profondément. On suppose qu'il est si pratique de charger des gadgets la nuit.

Dans les cas difficiles, la documentation de la carte mère peut vous aider. Trouvez le cavalier requis (cavalier) et coupez manuellement l'alimentation. Mais c'est trop difficile. Et le moyen le plus simple est d'acheter un hub USB avec des commutateurs et d'y connecter les périphériques nécessaires. Et ne souffre pas. Aurevoir à bientot!

Récemment, la méthode série de transmission de données a remplacé la méthode parallèle.
Il ne faut pas chercher bien loin pour trouver des exemples : l'émergence des bus USB et SATA parle d'elle-même.
En effet, le bus parallèle étant difficilement évolutif (allonger la boucle, augmenter la fréquence d'horloge du bus), il n'est pas surprenant que les technologies se tournent à nouveau vers les bus parallèles.

Interfaces série

Il existe aujourd'hui de nombreuses interfaces de données série différentes.
En plus des ports USB et SATA déjà mentionnés, vous pouvez toujours vous rappeler au moins deux normes RS-232 et MIDI bien connues (alias GamePort).
Ils sont tous unis par le même - la transmission séquentielle de chaque bit d'information, ou interface série.
Les avantages de telles interfaces sont grands et le plus important d'entre eux est le petit nombre de fils de connexion et, par conséquent, le prix inférieur.

Transfert de données

La transmission de données en série peut être mise en œuvre de deux manières : asynchrone et synchrone.

La transmission de données synchrone implique la synchronisation du fonctionnement du récepteur et de l'émetteur en incluant des informations d'horloge dans le signal transmis ou en utilisant une ligne de synchronisation spéciale.
Le récepteur et l'émetteur doivent être connectés avec un câble de synchronisation spécial, qui assure le fonctionnement des appareils à la même fréquence.

La transmission asynchrone implique l'utilisation de bits spéciaux qui marquent le début et la fin des données - bit de début (zéro logique) et d'arrêt (un logique).
Il est également possible d'utiliser un bit de parité spécial, qui détermine le nombre pair ou impair de bits simples à transmettre (selon la convention adoptée).
Côté réception, ce bit est analysé, et si le bit de parité ne correspond pas au nombre de bits simples, alors le paquet de données est à nouveau envoyé.

Il est à noter qu'un tel contrôle ne permet de détecter une erreur que si un seul bit a été mal transmis, si plusieurs bits ont été mal transmis, ce contrôle devient déjà incorrect.
L'envoi du prochain paquet de données peut se produire à tout moment après l'envoi du bit d'arrêt et, bien entendu, doit commencer à partir du bit de départ.
Vous ne pouvez rien comprendre ?

Bon, si toutes les technologies informatiques étaient simples, alors n'importe quelle femme au foyer aurait depuis longtemps sculpté de nouveaux protocoles en parallèle des boulettes...
Essayons de voir le processus différemment.
Les données sont transmises par paquets, similaires aux paquets IP, avec les données il y a des bits d'information, le nombre de ces bits peut varier de 2 à 3 et demi.
Avec une moitié ?!
Oui, vous avez bien entendu, exactement avec la moitié !

Le bit d'arrêt, ou plutôt le signal émis correspondant au bit d'arrêt, peut avoir une durée plus longue que le signal correspondant à un bit, mais inférieure à deux bits.
Ainsi, le paquet commence toujours par un bit de début, qui a toujours une valeur de zéro, suivi de bits de données, puis d'un bit de parité, puis d'un bit d'arrêt, qui est toujours égal à un.
Puis, après un certain laps de temps arbitraire, la marche des beats jusqu'à Moscou se poursuit.

Cette méthode de transmission implique que le récepteur et l'émetteur doivent fonctionner au même débit (enfin, ou presque au même débit), sinon le récepteur n'aura pas le temps de traiter les bits de données reçus, ou acceptera l'ancien bit pour un nouveau.
Afin d'éviter cela, chaque bit est bloqué, c'est-à-dire qu'il est envoyé de manière synchrone avec un signal spécial - un "stroboscope" formé à l'intérieur de l'appareil.
Il existe un certain nombre de vitesses définies pour les appareils asynchrones - 50, 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600 et 115200 bits par seconde.

Vous avez probablement entendu dire que "baud" est utilisé comme unité de mesure du débit de transmission de données - la fréquence du changement d'état de la ligne, et cette valeur ne coïncidera avec le débit de transmission de données que si le signal peut en avoir un. de deux valeurs.
Si, cependant, plusieurs bits sont codés dans un changement de signal (et cela se trouve dans de nombreux modems), le taux de transmission et la fréquence du changement de ligne seront des valeurs complètement différentes.

Quelques mots maintenant sur le terme mystérieux "paquet de données".
Dans ce cas, un paquet signifie un ensemble de bits transférés entre les bits de démarrage et d'arrêt.
Leur nombre peut varier de cinq à huit.
On pourrait se demander pourquoi exactement cinq à huit bits ?
Pourquoi ne pas transférer d'un coup, disons, un kilo-octet de données à l'intérieur d'un paquet ?

La réponse est évidente : lors de la transmission de petits paquets de données, nous perdons même en envoyant trois bits de service avec eux (de 50 à 30 pour cent des données), mais si le paquet est endommagé pendant la transmission, nous pouvons facilement le reconnaître (rappelez-vous la parité peu ?) Et retransmettez-le rapidement.
Mais dans un kilo-octet de données, il sera difficile de détecter une erreur, et il sera beaucoup plus difficile de la transférer.

A titre d'exemple de périphérique série asynchrone pour le transfert de données, on peut citer le port COM d'un ordinateur, un modem favori conçu par Trussardi et une souris connectée au même port, que pour une raison quelconque des secrétaires stupides essaient toujours de se faufiler dans le PS/2.
Tous ces appareils fonctionnent via l'interface RS-232, ou plutôt, sur sa partie asynchrone, puisque la norme décrit également la transmission de données synchrone.

Pilote optionnel AMD Radeon Software Adrenalin Edition 19.9.2

Le nouveau pilote optionnel AMD Radeon Software Adrenalin Edition 19.9.2 améliore les performances dans Borderlands 3 et ajoute la prise en charge de Radeon Image Sharpening.

Mise à jour cumulative de Windows 10 1903 KB4515384 (ajouté)

Le 10 septembre 2019, Microsoft a publié une mise à jour cumulative pour Windows 10 version 1903 - KB4515384 avec un certain nombre d'améliorations de sécurité et de correctifs pour un bogue qui perturbait la recherche Windows et provoquait une utilisation élevée du processeur.

Un port COM est le plus souvent utilisé pour communiquer entre un microcontrôleur et un ordinateur. Dans cet article, nous montrerons comment transférer des commandes de contrôle depuis un ordinateur et transférer des données depuis un contrôleur.

Préparation au travail

La plupart des microcontrôleurs ont plusieurs ports E/S. Le protocole UART est le plus adapté pour la communication avec un PC. Il s'agit d'un protocole de transfert de données asynchrone série. Pour la convertir en interface USB, la carte dispose d'un convertisseur USB-RS232 - FT232RL.
Pour compléter les exemples de cet article, vous n'avez besoin que d'une carte compatible Arduino. Nous utilisons . Assurez-vous que votre carte a une LED connectée à la broche 13 et a un bouton de réinitialisation.

Par exemple, chargeons le code de sortie de la table ASCII sur la carte. L'ASCII est un codage pour les chiffres décimaux, les alphabets latins et nationaux, les signes de ponctuation et les caractères de contrôle.

symbole entier = 33 ; void setup () (Serial. begin (9600); Serial. println ("ASCII Table ~ Character Map");) void loop () (Serial. write (symbole); Serial. print (", dec:"); Serial . print (symbole); Serial. print (", hex:"); Serial. print (symbole, HEX); Serial. print (", oct:"); Serial. print (symbole, OCT); Serial. print ( ", bin:"); Serial.println (symbole, BIN); if (symbole = = 126) (while (true) (continue;)) symbole + +;)

Le symbole de la variable stocke le code du symbole. Le tableau commence à 33 et se termine à 126, le symbole de variable reçoit donc initialement la valeur 33.
Pour démarrer le fonctionnement du port UART, utilisez la fonction Serial.begin ()... Son seul paramètre est la vitesse. La vitesse doit être négociée à l'avance côté émission et réception, car le protocole de transmission est asynchrone. Dans cet exemple, la vitesse est de 9600bps.
Trois fonctions sont utilisées pour écrire une valeur sur un port :

  1. Serial.write ()- écrit les données sous forme binaire sur le port.
  2. Impression.série () peuvent avoir de nombreuses significations, mais elles servent toutes à afficher des informations sous une forme conviviale. Par exemple, si les informations spécifiées comme paramètre de transfert sont mises en évidence par des guillemets, le programme du terminal l'affichera sans modification. Si vous souhaitez afficher une valeur dans un certain système numérique, vous devez ajouter un mot de service : BIN - binaire, OCT - octal, DEC - décimal, HEX - hexadécimal. Par exemple, Impression.série (25, HEX).
  3. Serial.println () fait la même chose que Impression.série (), mais traduit également la ligne après l'affichage des informations.

Pour vérifier le fonctionnement du programme, il est nécessaire que l'ordinateur dispose d'un programme terminal qui reçoit les données du port COM. L'IDE Arduino en a déjà un intégré. Pour l'appeler, sélectionnez Tools-> Port Monitor dans le menu. La fenêtre de cet utilitaire est très simple :

Maintenant, appuyez sur le bouton de redémarrage. Le MK va redémarrer et afficher la table ASCII :

Faites attention à cette partie du code :

if (symbole = = 126) (while (true) (continue;))

Il arrête l'exécution du programme. Si vous l'excluez, le tableau sera affiché à l'infini.
Pour consolider les connaissances acquises, essayez d'écrire une boucle sans fin qui enverra votre nom au port série une fois par seconde. Ajoutez des numéros d'étape à la sortie et n'oubliez pas de traduire la ligne après le nom.

Envoi de commandes depuis PC

Avant de faire cela, vous devez vous faire une idée du fonctionnement d'un port COM.
Tout d'abord, tous les échanges se font via la mémoire tampon. C'est-à-dire que lorsque vous envoyez quelque chose d'un PC à un appareil, les données sont placées dans une section spéciale de la mémoire. Dès que l'appareil est prêt, il lit les données du tampon. Vous pouvez vérifier l'état du tampon en utilisant la fonction Série.disponible ()... Cette fonction renvoie le nombre d'octets dans le tampon. Pour soustraire ces octets, vous devez utiliser la fonction Serial.read ()... Voyons comment ces fonctions fonctionnent à l'aide d'un exemple :

valeur int = 0 ; void setup () (Serial. begin (9600);) void loop () (if (Serial. available ()> 0) (val = Serial. read (); Serial. print ("J'ai reçu:"); Serial. écrire (val); Serial. println ();))

Une fois le code chargé dans la mémoire du microcontrôleur, ouvrez le moniteur du port COM. Entrez un caractère et appuyez sur Entrée. Dans le champ des données reçues, vous verrez : "J'ai reçu : X" où au lieu de X sera le caractère que vous avez entré.
Le programme s'exécute indéfiniment dans la boucle principale. Au moment où un octet est écrit sur le port, la fonction Serial.available() prend la valeur 1, c'est-à-dire que la condition est remplie Série.disponible ()> 0... Fonction supplémentaire Serial.read () lit cet octet, vidant ainsi le tampon. Après cela, à l'aide de fonctions que vous connaissez déjà, la sortie se produit.
L'utilisation du moniteur de port COM intégré à l'IDE Arduino présente certaines limitations. Lors de l'envoi de données de la carte au port COM, la sortie peut être organisée dans un format arbitraire. Et lors de l'envoi d'un PC à une carte, les caractères sont transmis conformément à la table ASCII. Cela signifie que lorsque vous entrez, par exemple, le caractère "1", via le port COM est envoyé sous forme binaire "00110001" (c'est-à-dire "49" en décimal).
Modifions un peu le code et vérifions cette déclaration :

valeur int = 0 ; void setup () (Serial. begin (9600);) void loop () (if (Serial. available ()> 0) (val = Serial. read (); Serial. print ("J'ai reçu:"); Serial. println (val, BIN);))

Après le chargement, dans le moniteur de port lors de l'envoi de « 1 », vous verrez en réponse : « J'ai reçu : 110001 ». Vous pouvez modifier le format de sortie et voir ce que la carte accepte avec d'autres symboles.

Contrôle de l'appareil via le port COM

Évidemment, toutes les fonctions du microcontrôleur peuvent être contrôlées par des commandes à partir d'un PC. Téléchargez le programme qui contrôle le fonctionnement des LED :

valeur int = 0 ; void setup () (Serial. begin (9600);) void loop () (if (Serial. available ()> 0) (val = Serial. read (); if (val = = "H") digitalWrite (13, ÉLEVÉ); if (val = = "L") digitalWrite (13, LOW );))

Lorsque le caractère « H » est envoyé au port COM, la LED sur la 13ème broche est allumée et lorsque le « L » est envoyé, la LED s'éteint.
Si, en fonction des résultats de la réception de données du port COM, vous souhaitez que le programme effectue différentes actions dans la boucle principale, vous pouvez vérifier les conditions dans la boucle principale. Par exemple.

gastroguru 2017