Maison Opération et maintenance exploitation et maintenance Linux Configuration des systèmes Linux pour prendre en charge la programmation de communication série

Configuration des systèmes Linux pour prendre en charge la programmation de communication série

Jul 04, 2023 am 11:42 AM
linux系统 串口通信 编程配置

Configurez le système Linux pour prendre en charge la programmation de la communication série

La communication série est une méthode de communication matérielle courante utilisée pour la transmission de données entre des ordinateurs et des appareils externes. Dans le système Linux, nous pouvons implémenter la prise en charge du port série via la configuration, puis effectuer une programmation de communication série. Cet article explique comment configurer le port série dans un système Linux et fournit des exemples de code pertinents.

1. Vérifiez le périphérique de port série

Dans le système Linux, le périphérique de port série est appelé périphérique TTY. Nous pouvons utiliser la commande de terminal ls /dev/ttyS* pour afficher les périphériques série existants dans le système. Habituellement, s'il y a un périphérique de port série dans le système, une sortie similaire à /dev/ttyS0 ou /dev/ttyS1 sera affichée. Parmi eux, /dev/ttyS0 représente le premier périphérique de port série, /dev/ttyS1 représente le deuxième périphérique de port série, et ainsi de suite. ls /dev/ttyS*来查看系统中存在的串口设备。通常,如果系统存在串口设备,会显示类似 /dev/ttyS0/dev/ttyS1 的输出。其中,/dev/ttyS0 代表第一个串口设备,/dev/ttyS1 代表第二个串口设备,以此类推。

二、配置串口参数

在进行串口通信编程之前,我们需要配置串口的参数,包括波特率、数据位、校验位、停止位等。可以通过终端命令stty来进行串口参数的配置。以下是一个示例命令:

stty -F /dev/ttyS0 9600 cs8 -cstopb -parenb
Copier après la connexion

上述命令中,“-F /dev/ttyS0”指定了要配置的串口设备为/dev/ttyS09600是指定的波特率,cs8表示数据位为8位,-cstopb表示停止位为1位,-parenb表示不进行奇偶校验。根据需要,可以根据实际情况调整这些参数。

三、打开串口设备

在进行串口通信编程之前,需要通过打开串口设备来进行操作。可以使用open()函数来打开串口设备。以下是一个简单的代码示例:

#include<unistd.h>
#include<fcntl.h>
#include<errno.h>

int fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NONBLOCK);  
if (fd == -1) {
    perror("打开串口设备失败");
    return -1;
}
Copier après la connexion

上述代码中,open()函数通过传入串口设备路径/dev/ttyS0以及一些标志来打开串口设备。O_RDWR表示以可读写的方式打开设备,O_NOCTTY表示不将打开的串口作为控制终端,O_NONBLOCK表示以非阻塞的方式打开设备。打开成功后,会返回一个文件描述符fd供后续使用。

四、设置串口参数

在打开串口设备后,我们需要使用tcgetattr()函数获取串口的原始参数,然后通过修改这些参数来进行串口参数的配置。以下是一个简单的代码示例:

#include<termios.h>

struct termios options;
tcgetattr(fd, &options);

cfsetispeed(&options, B9600);   // 设置输入波特率为9600
cfsetospeed(&options, B9600);   // 设置输出波特率为9600
options.c_cflag |= CS8 | CLOCAL | CREAD;  // 设置数据位为8位,并开启本地连接和接收使能
options.c_cflag &= ~PARENB;    // 关闭奇偶校验
options.c_cflag &= ~CSTOPB;    // 设置停止位为1位

tcsetattr(fd, TCSANOW, &options);
Copier après la connexion

上述代码中,tcgetattr()函数用于获取串口的原始参数,并将其存储在struct termios结构体变量options中。接着,通过cfsetispeed()cfsetospeed()函数设置输入和输出波特率为9600,再通过位操作设置数据位、奇偶校验和停止位等参数。最后,使用tcsetattr()函数将修改后的参数写回串口中。

五、串口通信

在配置完串口参数后,我们可以使用read()函数从串口中读取数据,使用write()函数向串口中写入数据。以下是一个简单的接收串口数据的代码示例:

char buffer[255];
int bytes_read = read(fd, buffer, sizeof(buffer));
if (bytes_read == -1) {
    perror("读取串口数据失败");
    return -1;
}

printf("接收到的数据:%s
", buffer);
Copier après la connexion

上述代码中,我们先定义了一个缓冲区buffer用于存储接收到的数据。然后,使用read()函数从串口中读取数据,并将读取到的数据存储在缓冲区中。接着,使用printf()函数打印出接收到的数据。

六、关闭串口设备

在程序结束后,我们需要关闭打开的串口设备。可以使用close()

2. Configurer les paramètres du port série

Avant de programmer la communication série, nous devons configurer les paramètres du port série, y compris la vitesse de transmission, les bits de données, les bits de contrôle, les bits d'arrêt, etc. Les paramètres du port série peuvent être configurés via la commande du terminal stty. Voici un exemple de commande :

close(fd);
Copier après la connexion
Dans la commande ci-dessus, "-F /dev/ttyS0" spécifie que le périphérique série à configurer est /dev/ttyS0 et 9600 est le débit en bauds spécifié, <code>cs8 signifie que le bit de données est de 8 bits, -cstopb signifie que le bit d'arrêt est de 1 bit, -parenb signifie qu'aucune vérification de parité n'est effectuée. Si nécessaire, ces paramètres peuvent être ajustés en fonction de la situation réelle. 🎜🎜3. Ouvrez le périphérique de port série🎜🎜Avant la programmation de la communication série, vous devez ouvrir le périphérique de port série. Vous pouvez utiliser la fonction open() pour ouvrir le périphérique série. Ce qui suit est un exemple de code simple : 🎜rrreee🎜Dans le code ci-dessus, la fonction open() ouvre le périphérique série en passant le chemin du périphérique série /dev/ttyS0 et quelques drapeaux. O_RDWR signifie ouvrir l'appareil en mode lecture-écriture, O_NOCTTY signifie ne pas utiliser le port série ouvert comme terminal de contrôle et O_NONBLOCK signifie ouvrir Allumez l'appareil de manière non bloquante. Après une ouverture réussie, un descripteur de fichier fd sera renvoyé pour une utilisation ultérieure. 🎜🎜4. Définir les paramètres du port série🎜🎜Après avoir ouvert le périphérique du port série, nous devons utiliser la fonction tcgetattr() pour obtenir les paramètres d'origine du port série, puis configurer les paramètres du port série. en modifiant ces paramètres. Voici un exemple de code simple : 🎜rrreee🎜Dans le code ci-dessus, la fonction tcgetattr() est utilisée pour obtenir les paramètres d'origine du port série et les stocker dans le struct termios dans la variable <code>options. Ensuite, définissez le débit en bauds d'entrée et de sortie sur 9600 via les fonctions cfsetispeed() et cfsetospeed(), puis définissez les bits de données, la parité et les bits d'arrêt via des opérations sur les bits. .paramètre. Enfin, utilisez la fonction tcsetattr() pour réécrire les paramètres modifiés sur le port série. 🎜🎜5. Communication du port série🎜🎜Après avoir configuré les paramètres du port série, nous pouvons utiliser la fonction read() pour lire les données du port série et utiliser la fonction write() code> fonction pour écrire des données sur le port série. Ce qui suit est un exemple de code simple pour recevoir des données du port série : 🎜rrreee🎜Dans le code ci-dessus, nous définissons d'abord un tampon <code>buffer pour stocker les données reçues. Ensuite, utilisez la fonction read() pour lire les données du port série et stocker les données lues dans le tampon. Ensuite, utilisez la fonction printf() pour imprimer les données reçues. 🎜🎜6. Fermez le périphérique de port série🎜🎜Une fois le programme terminé, nous devons fermer le périphérique de port série ouvert. Vous pouvez utiliser la fonction close() pour fermer le périphérique de port série, comme indiqué ci-dessous : 🎜rrreee🎜Le code ci-dessus fermera le périphérique de port série précédemment ouvert et libérera les ressources associées. 🎜🎜Grâce à la configuration et aux exemples de code ci-dessus, nous pouvons implémenter la programmation de communication série dans les systèmes Linux. Bien entendu, davantage de situations doivent être prises en compte dans les applications réelles, telles que la gestion des exceptions, la gestion des tampons, etc. J'espère que cet article pourra vous apporter de l'aide. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Utiliser le Gestionnaire des tâches sous Linux Utiliser le Gestionnaire des tâches sous Linux Aug 15, 2024 am 07:30 AM

Il existe de nombreuses questions que les débutants sous Linux posent souvent : « Linux a-t-il un gestionnaire de tâches ? », « Comment ouvrir le gestionnaire de tâches sous Linux ? » Les utilisateurs de Windows savent que le gestionnaire de tâches est très utile. Vous pouvez ouvrir le Gestionnaire des tâches en appuyant sur Ctrl+Alt+Suppr sous Windows. Ce gestionnaire de tâches vous montre tous les processus en cours d'exécution et la mémoire qu'ils consomment, et vous pouvez sélectionner et tuer un processus à partir du programme gestionnaire de tâches. Lorsque vous utiliserez Linux pour la première fois, vous rechercherez également quelque chose qui équivaut à un gestionnaire de tâches sous Linux. Un expert Linux préfère utiliser la ligne de commande pour rechercher les processus, la consommation de mémoire, etc., mais ce n'est pas obligatoire

Résoudre le problème de l'affichage tronqué des graphiques et des diagrammes sur le serveur de surveillance chinois Zabbix Résoudre le problème de l'affichage tronqué des graphiques et des diagrammes sur le serveur de surveillance chinois Zabbix Jul 31, 2024 pm 02:10 PM

La prise en charge du chinois par Zabbix n'est pas très bonne, mais parfois nous choisissons toujours le chinois à des fins de gestion. Dans l'interface Web surveillée par Zabbix, le chinois sous l'icône graphique affichera des petits carrés. Ceci est incorrect et nécessite le téléchargement de polices. Par exemple, "Microsoft Yahei", "Microsoft Yahei.ttf" est nommé "msyh.ttf", téléchargez la police téléchargée dans /zabbix/fonts/fonts et modifiez les deux caractères dans /zabbix/include/defines.inc.php. fichier dans definition('ZBX_GRAPH_FONT_NAME','DejaVuSans');define('ZBX_FONT_NAME'

7 façons de vous aider à vérifier la date d'enregistrement des utilisateurs Linux 7 façons de vous aider à vérifier la date d'enregistrement des utilisateurs Linux Aug 24, 2024 am 07:31 AM

Saviez-vous comment vérifier la date de création d'un compte sur un système Linux ? Si vous le savez, que pouvez-vous faire ? Avez-vous réussi ? Si oui, comment faire ? Fondamentalement, les systèmes Linux ne suivent pas ces informations, alors quelles sont les autres manières d'obtenir ces informations ? Vous vous demandez peut-être pourquoi je vérifie cela ? Oui, il existe des situations dans lesquelles vous devrez peut-être consulter ces informations et elles vous seront utiles à ce moment-là. Vous pouvez utiliser les 7 méthodes suivantes pour vérifier. Utilisez /var/log/secure Utilisez l'outil aureport Utilisez .bash_logout Utilisez la commande chage Utilisez la commande useradd Utilisez la commande passwd Utilisez la dernière commande Méthode 1 : Utilisez /var/l

Apprenez à ajouter des polices à Fedora en 5 minutes Apprenez à ajouter des polices à Fedora en 5 minutes Jul 23, 2024 am 09:45 AM

Installation à l'échelle du système Si vous installez une police à l'échelle du système, elle sera disponible pour tous les utilisateurs. La meilleure façon de procéder est d'utiliser les packages RPM des référentiels de logiciels officiels. Avant de commencer, ouvrez l'outil "Logiciel" dans Fedora Workstation, ou d'autres outils utilisant le référentiel officiel. Sélectionnez la catégorie « Modules complémentaires » dans la barre de sélection. Sélectionnez ensuite « Polices » dans la catégorie. Vous verrez les polices disponibles similaires à celle de la capture d'écran ci-dessous : Lorsque vous sélectionnez une police, certains détails apparaîtront. Selon plusieurs scénarios, vous pourrez peut-être prévisualiser un exemple de texte pour la police. Cliquez sur le bouton "Installer" pour l'ajouter à votre système. En fonction de la vitesse du système et de la bande passante du réseau, ce processus peut prendre un certain temps.

Que dois-je faire si les polices WPS manquantes sous le système Linux entraînent une déformation du fichier ? Que dois-je faire si les polices WPS manquantes sous le système Linux entraînent une déformation du fichier ? Jul 31, 2024 am 12:41 AM

1. Recherchez les polices wingdings, wingdings2, wingdings3, Webdings et MTExtra sur Internet 2. Entrez dans le dossier principal, appuyez sur Ctrl+h (afficher les fichiers cachés) et vérifiez s'il existe un dossier .fonts. Sinon, créez. 3. Copiez les polices téléchargées telles que wingdings, wingdings2, wingdings3, Webdings et MTExtra dans le dossier .fonts du dossier principal. Ensuite, démarrez wps pour voir s'il existe toujours une boîte de dialogue de rappel « Police manquante dans le système ». sinon, juste du succès Notes : wingdings, wingdin

Installation et configuration de Centos 7 Serveur de synchronisation de l'heure réseau NTP Installation et configuration de Centos 7 Serveur de synchronisation de l'heure réseau NTP Aug 05, 2024 pm 10:35 PM

Environnement expérimental : OS : LinuxCentos7.4x86_641. Affichez le fuseau horaire actuel du serveur, répertoriez le fuseau horaire et définissez le fuseau horaire (s'il s'agit déjà du fuseau horaire correct, veuillez l'ignorer) : #timedatectl#timedatectllist-timezones#timedatectlset-timezoneAsia. /Shanghai2. Compréhension des concepts de fuseau horaire : GMT, UTC, CST, DSTUTC : La terre entière est divisée en vingt-quatre fuseaux horaires. Dans les situations de communication radio internationale, dans un souci d'unification, une heure unifiée est utilisée, appelée Temps coordonné universel (UTC : UniversalTim).

Comment connecter deux hôtes Ubuntu à Internet à l'aide d'un seul câble réseau Comment connecter deux hôtes Ubuntu à Internet à l'aide d'un seul câble réseau Aug 07, 2024 pm 01:39 PM

Comment utiliser un câble réseau pour connecter deux hôtes Ubuntu à Internet 1. Préparez l'hôte A : ubuntu16.04 et l'hôte B : ubuntu16.042. L'hôte A possède deux cartes réseau, l'une est connectée au réseau externe et l'autre est connectée. pour accueillir B. Utilisez la commande iwconfig pour afficher toutes les cartes réseau sur l'hôte. Comme indiqué ci-dessus, les cartes réseau sur l'hôte A (ordinateur portable) de l'auteur sont : wlp2s0 : Il s'agit d'une carte réseau sans fil. enp1s0 : carte réseau filaire, la carte réseau connectée à l'hôte B. Le reste n’a rien à voir avec nous, inutile de s’en soucier. 3. Configurez l'adresse IP statique de A. Modifiez le fichier #vim/etc/network/interfaces pour configurer une adresse IP statique pour l'interface enp1s0, comme indiqué ci-dessous (où #==========

lancer! Exécuter DOS sur Raspberry Pi lancer! Exécuter DOS sur Raspberry Pi Jul 19, 2024 pm 05:23 PM

Différentes architectures de processeur signifient qu'exécuter DOS sur le Raspberry Pi n'est pas facile, mais ce n'est pas très compliqué. FreeDOS est peut-être familier à tout le monde. Il s'agit d'un système d'exploitation complet, gratuit et bien compatible pour DOS. Il peut exécuter certains anciens jeux DOS ou logiciels commerciaux, et peut également développer des applications embarquées. Tant que le programme peut fonctionner sur MS-DOS, il peut fonctionner sur FreeDOS. En tant qu'initiateur et coordinateur du projet FreeDOS, de nombreux utilisateurs me poseront des questions en tant qu'initié. La question qu'on me pose le plus souvent est : « FreeDOS peut-il fonctionner sur un Raspberry Pi ? » Cette question n'est pas surprenante. Après tout, Linux fonctionne très bien sur le Raspberry Pi

See all articles