シリアル通信プログラミングをサポートするための Linux システムの構成
シリアル通信プログラミングをサポートするための Linux システムの構成
シリアル通信は、コンピューターと外部デバイス間のデータ送信に使用される一般的なハードウェア通信方法です。 Linux システムでは、構成を通じてシリアル ポートのサポートを実装し、シリアル通信プログラミングを実行できます。この記事では、Linux システムでシリアル ポートを構成する方法を紹介し、関連するコード例を示します。
1. シリアル ポート デバイスを確認する
Linux システムでは、シリアル ポート デバイスは TTY デバイスと呼ばれます。ターミナル コマンド ls /dev/ttyS*
を使用して、システム内に存在するシリアル デバイスを表示できます。通常、システムにシリアル ポート デバイスがある場合は、/dev/ttyS0
または /dev/ttyS1
のような出力が表示されます。このうち、/dev/ttyS0
は最初のシリアル ポート デバイスを表し、/dev/ttyS1
は 2 番目のシリアル ポート デバイスを表します。
2. シリアル ポート パラメータの設定
シリアル通信をプログラミングする前に、ボー レート、データ ビット、チェック ビット、ストップ ビットなどのシリアル ポートのパラメータを設定する必要があります。シリアル ポート パラメータは、ターミナル コマンド stty
を使用して設定できます。コマンドの例を次に示します。
stty -F /dev/ttyS0 9600 cs8 -cstopb -parenb
上記のコマンドでは、「-F /dev/ttyS0」は、シリアル ポート デバイスを /dev/ttyS0
, として設定することを指定します。 9600
は指定されたボーレートです。cs8
はデータ ビットが 8 ビットであることを意味します。-cstopb
はストップ ビットが 1 ビットであることを意味します。-parenb
はデータ ビットが 1 ビットであることを意味します。パリティチェックテストはありません。必要に応じて、これらのパラメータは実際の状況に応じて調整できます。
3. シリアル ポート デバイスをオープンします
シリアル通信プログラミングを実行する前に、動作するシリアル ポート デバイスをオープンする必要があります。 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; }
上記のコードでは、シリアル デバイス パス /dev/ttyS0
を渡すことによって open()
関数が開かれます。およびいくつかのフラグ シリアルデバイス。 O_RDWR
はデバイスを読み取り/書き込みモードで開くことを意味し、O_NOCTTY
は開いているシリアル ポートを制御端末として使用しないことを意味し、O_NONBLOCK
はデバイスを読み取り/書き込みモードで開くことを意味します。ブロックしない方法。正常に開くと、以降の使用のためにファイル記述子 fd
が返されます。
4. シリアル ポート パラメータの設定
シリアル ポート デバイスを開いた後、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);
上記のコードでは、tcgetattr()
関数を使用してシリアル ポートの元のパラメータを取得し、それらを struct に保存します。 termios
構造体変数 options
。次に、cfsetispeed()
および cfsetospeed()
関数を使用して入出力ボーレートを 9600 に設定し、ビット操作を通じてデータ ビット、パリティ、ストップ ビットなどのパラメータを設定します。 。最後に、tcsetattr()
関数を使用して、変更したパラメータをシリアル ポートに書き込みます。
5. シリアル通信
シリアル ポートのパラメータを設定した後、read()
関数を使用してシリアル ポートからデータを読み取り、write を使用できます。 ()
関数はシリアル ポートにデータを書き込みます。以下は、シリアル ポート データを受信するための簡単なコード例です。
char buffer[255]; int bytes_read = read(fd, buffer, sizeof(buffer)); if (bytes_read == -1) { perror("读取串口数据失败"); return -1; } printf("接收到的数据:%s ", buffer);
上記のコードでは、まず受信データを保存するバッファ buffer
を定義します。次に、read()
関数を使用してシリアル ポートからデータを読み取り、読み取ったデータをバッファに保存します。次に、printf()
関数を使用して、受信したデータを印刷します。
6. シリアル ポート デバイスを閉じる
プログラムが終了したら、開いているシリアル ポート デバイスを閉じる必要があります。以下に示すように、close()
関数を使用してシリアル ポート デバイスを閉じることができます。
close(fd);
上記のコードは、以前に開いたシリアル ポート デバイスを閉じ、関連リソースを解放します。
上記の構成とコード例を通じて、Linux システムにシリアル通信プログラミングを実装できます。もちろん、実際のアプリケーションでは、例外処理やバッファ管理など、さらに多くの状況を考慮する必要があります。この記事が少しでもお役に立てれば幸いです。
以上がシリアル通信プログラミングをサポートするための Linux システムの構成の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









「Linux にはタスク マネージャーはありますか?」、「Linux でタスク マネージャーを開くにはどうすればよいですか?」 Linux 初心者がよく尋ねる質問は数多くあります。Windows のユーザーは、タスク マネージャーが非常に便利であることを知っています。 Windows で Ctrl+Alt+Del を押すと、タスク マネージャーを開くことができます。このタスク マネージャーには、実行中のすべてのプロセスとそれらが消費するメモリが表示され、タスク マネージャー プログラムからプロセスを選択して強制終了できます。初めて Linux を使用するときは、Linux のタスク マネージャーに相当するものを探すこともあります。 Linux の専門家は、プロセスやメモリ消費量などを確認するためにコマンド ラインを使用することを好みますが、そうする必要はありません。

Zabbix の中国語サポートはあまり良くありませんが、それでも管理目的で中国語を選択することがあります。これは、グラフィック アイコンの下に小さな四角形が表示されます。これは間違っており、フォントをダウンロードする必要があります。たとえば、「Microsoft Yahei」、「Microsoft Yahei.ttf」は「msyh.ttf」という名前になり、ダウンロードしたフォントを /zabbix/fonts/fonts にアップロードし、/zabbix/include/defines.inc.php 内の 2 つの文字を変更します。ファイルの定義('ZBX_GRAPH_FONT_NAME','DejaVuSans');define('ZBX_FONT_NAME'

Linux システムでアカウントの作成日を確認する方法をご存知ですか?知っていたら何ができるでしょうか?成功しましたか? 「はい」の場合、どうすればよいですか?基本的に Linux システムはこの情報を追跡しません。では、この情報を取得する別の方法は何でしょうか?なぜこれをチェックするのか疑問に思われるかもしれません。はい、この情報を確認する必要がある状況があり、そのときに役立ちます。以下の7つの方法で確認できます。 /var/log/secure を使用する aureport ツールを使用する .bash_logout を使用する chage コマンドを使用する useradd コマンドを使用する passwd コマンドを使用する last コマンドを使用する 方法 1: /var/l を使用する

システム全体のインストール フォントをシステム全体にインストールすると、すべてのユーザーがそのフォントを使用できるようになります。これを行う最善の方法は、公式ソフトウェア リポジトリから RPM パッケージを使用することです。開始する前に、Fedora Workstation の「ソフトウェア」ツール、または公式リポジトリを使用する他のツールを開きます。選択バーで「アドオン」カテゴリを選択します。次に、カテゴリ内の「フォント」を選択します。以下のスクリーンショットにあるような、使用可能なフォントが表示されます。 フォントを選択すると、いくつかの詳細が表示されます。いくつかのシナリオに応じて、フォントのサンプル テキストをプレビューできる場合があります。 「インストール」ボタンをクリックしてシステムに追加します。システム速度とネットワーク帯域幅によっては、このプロセスが完了するまでに時間がかかる場合があります。

1. インターネットからフォント wingdings、wingdings2、wingdings3、Webdings、および MTExtra を見つけます。 2. メイン フォルダーに入り、Ctrl+H (隠しファイルを表示) を押し、.fonts フォルダーがあるかどうかを確認します。 3. wingdings、wingdings2、wingdings3、Webdings、MTExtra などのダウンロードしたフォントをメイン フォルダーの .fonts フォルダーにコピーし、wps を起動して、「システムにフォントがありません...」というリマインダー ダイアログがまだあるかどうかを確認します。そうでない場合は、「成功」をクリックしてください。

1 本のネットワーク ケーブルを使用して 2 つの ubuntu ホストをインターネットに接続する方法 1. ホスト A: ubuntu16.04 とホスト B: ubuntu16.042 を準備します。ホスト A には 2 つのネットワーク カードがあり、1 つは外部ネットワークに接続され、もう 1 つは外部ネットワークに接続されます。ホストBに。 iwconfig コマンドを使用して、ホスト上のすべてのネットワーク カードを表示します。上に示したように、作成者の A ホスト (ラップトップ) 上のネットワーク カードは次のとおりです。 wlp2s0: これはワイヤレス ネットワーク カードです。 enp1s0: 有線ネットワーク カード、ホスト B に接続されているネットワーク カード。残りの部分は私たちには関係ないので、気にする必要はありません。 3. A の静的 IP を構成します。ファイル #vim/etc/network/interfaces を編集して、以下に示すようにインターフェイス enp1s0 の静的 IP アドレスを構成します (#==========

実験環境: OS: LinuxCentos7.4x86_641。現在のサーバーのタイムゾーンを表示し、タイムゾーンをリストし、タイムゾーンを設定します (すでに正しいタイムゾーンである場合はスキップしてください): #timedatectl#timedatectllist-timezones#timedatectlset-timezoneAsia /上海2. タイムゾーンの概念の理解: GMT、UTC、CST、DSTUTC: 国際無線通信の状況では、統一するために、地球全体が 24 のタイムゾーンに分かれています。協定世界時 (UTC) :UniversalTim と呼ばれる統一時刻が使用されます。

CPU アーキテクチャが異なるため、Raspberry Pi 上で DOS を実行するのは簡単ではありませんが、それほど問題はありません。 FreeDOS は誰にとっても馴染みのあるものかもしれません。これは、DOS 用の完全な無料の互換性の高いオペレーティング システムであり、一部の古い DOS ゲームや商用ソフトウェアを実行でき、組み込みアプリケーションも開発できます。プログラムが MS-DOS 上で実行できる限り、FreeDOS 上でも実行できます。 FreeDOS のイニシエーターおよびプロジェクト コーディネーターとして、多くのユーザーが内部関係者として私に質問をします。私が最もよく聞かれる質問は、「FreeDOS は Raspberry Pi 上で実行できますか?」というものです。この質問は驚くべきことではありません。結局のところ、Linux は Raspberry Pi 上で非常にうまく動作します
