Rumah Operasi dan penyelenggaraan operasi dan penyelenggaraan linux Mengkonfigurasi sistem Linux untuk menyokong pengaturcaraan komunikasi bersiri

Mengkonfigurasi sistem Linux untuk menyokong pengaturcaraan komunikasi bersiri

Jul 04, 2023 am 11:42 AM
sistem linux Komunikasi bersiri Konfigurasi pengaturcaraan

Konfigurasikan sistem Linux untuk menyokong pengaturcaraan komunikasi bersiri

Komunikasi bersiri ialah kaedah komunikasi perkakasan biasa yang digunakan untuk penghantaran data antara komputer dan peranti luaran. Dalam sistem Linux, kami boleh melaksanakan sokongan untuk port bersiri melalui konfigurasi, dan kemudian melaksanakan pengaturcaraan komunikasi bersiri. Artikel ini akan memperkenalkan cara mengkonfigurasi port bersiri dalam sistem Linux dan memberikan contoh kod yang berkaitan.

1. Periksa peranti port bersiri

Dalam sistem Linux, peranti port bersiri dipanggil peranti TTY. Kita boleh menggunakan perintah terminal ls /dev/ttyS* untuk melihat peranti bersiri yang sedia ada dalam sistem. Biasanya, jika terdapat peranti port bersiri dalam sistem, output yang serupa dengan /dev/ttyS0 atau /dev/ttyS1 akan dipaparkan. Antaranya, /dev/ttyS0 mewakili peranti port bersiri pertama, /dev/ttyS1 mewakili peranti port bersiri kedua, dan seterusnya. ls /dev/ttyS*来查看系统中存在的串口设备。通常,如果系统存在串口设备,会显示类似 /dev/ttyS0/dev/ttyS1 的输出。其中,/dev/ttyS0 代表第一个串口设备,/dev/ttyS1 代表第二个串口设备,以此类推。

二、配置串口参数

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

stty -F /dev/ttyS0 9600 cs8 -cstopb -parenb
Salin selepas log masuk

上述命令中,“-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;
}
Salin selepas log masuk

上述代码中,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);
Salin selepas log masuk

上述代码中,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);
Salin selepas log masuk

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

六、关闭串口设备

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

2. Konfigurasikan parameter port bersiri

Sebelum pengaturcaraan komunikasi bersiri, kita perlu mengkonfigurasi parameter port bersiri, termasuk kadar baud, bit data, bit semak, bit henti, dll. Parameter port bersiri boleh dikonfigurasikan melalui perintah terminal stty. Berikut ialah contoh arahan:

close(fd);
Salin selepas log masuk
Dalam arahan di atas, "-F /dev/ttyS0" menentukan bahawa peranti bersiri yang akan dikonfigurasikan ialah /dev/ttyS0 dan 9600 ialah Kadar baud yang ditentukan, <code>cs8 bermaksud bit data ialah 8 bit, -cstopb bermaksud bit henti ialah 1 bit, -parenb bermakna tiada pariti dilakukan semakan. Jika perlu, parameter ini boleh diselaraskan mengikut keadaan sebenar. 🎜🎜3. Buka peranti port bersiri🎜🎜Sebelum pengaturcaraan komunikasi bersiri, anda perlu membuka peranti port bersiri. Anda boleh menggunakan fungsi open() untuk membuka peranti bersiri. Berikut ialah contoh kod ringkas: 🎜rrreee🎜Dalam kod di atas, fungsi open() membuka peranti bersiri dengan menghantar laluan peranti bersiri /dev/ttyS0 dan beberapa bendera. O_RDWR bermaksud membuka peranti dalam mod baca-tulis, O_NOCTTY bermaksud tidak menggunakan port bersiri terbuka sebagai terminal kawalan dan O_NONBLOCK bermaksud membuka ia dengan cara yang tidak menyekat. Selepas berjaya dibuka, deskriptor fail fd akan dikembalikan untuk kegunaan seterusnya. 🎜🎜4. Tetapkan parameter port bersiri🎜🎜Selepas membuka peranti port bersiri, kita perlu menggunakan fungsi tcgetattr() untuk mendapatkan parameter asal port bersiri, dan kemudian konfigurasikan parameter port bersiri dengan mengubahsuai parameter ini. Berikut ialah contoh kod ringkas: 🎜rrreee🎜Dalam kod di atas, fungsi tcgetattr() digunakan untuk mendapatkan parameter asal port bersiri dan menyimpannya dalam struct termios struktur dalam pembolehubah <code>options. Kemudian, tetapkan kadar baud input dan output kepada 9600 melalui fungsi cfsetispeed() dan cfsetospeed(), dan kemudian tetapkan bit data, pariti dan bit henti melalui operasi bit . Akhir sekali, gunakan fungsi tcsetattr() untuk menulis parameter yang diubah suai kembali ke port bersiri. 🎜🎜5. Komunikasi port bersiri🎜🎜Selepas mengkonfigurasi parameter port bersiri, kita boleh menggunakan fungsi read() untuk membaca data dari port bersiri dan menggunakan write() berfungsi untuk menulis data ke port bersiri. Berikut ialah contoh kod ringkas untuk menerima data port bersiri: 🎜rrreee🎜Dalam kod di atas, kami mula-mula menentukan penimbal penampan untuk menyimpan data yang diterima. Kemudian, gunakan fungsi read() untuk membaca data daripada port bersiri dan menyimpan data baca dalam penimbal. Seterusnya, gunakan fungsi printf() untuk mencetak data yang diterima. 🎜🎜6. Tutup peranti port bersiri🎜🎜Selepas program tamat, kita perlu menutup peranti port bersiri yang terbuka. Anda boleh menggunakan fungsi close() untuk menutup peranti port bersiri, seperti yang ditunjukkan di bawah: 🎜rrreee🎜Kod di atas akan menutup peranti port bersiri yang dibuka sebelum ini dan mengeluarkan sumber berkaitan. 🎜🎜Melalui contoh konfigurasi dan kod di atas, kami boleh melaksanakan pengaturcaraan komunikasi bersiri dalam sistem Linux. Sudah tentu, lebih banyak situasi perlu dipertimbangkan dalam aplikasi sebenar, seperti pengendalian pengecualian, pengurusan penimbal, dsb. Harap artikel ini dapat membantu anda. 🎜

Atas ialah kandungan terperinci Mengkonfigurasi sistem Linux untuk menyokong pengaturcaraan komunikasi bersiri. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Menggunakan Pengurus Tugas dalam Linux Menggunakan Pengurus Tugas dalam Linux Aug 15, 2024 am 07:30 AM

Terdapat banyak soalan yang sering ditanya oleh pemula Linux, "Adakah Linux mempunyai Pengurus Tugas?", "Bagaimana untuk membuka Pengurus Tugas pada Linux Pengguna dari Windows tahu bahawa Pengurus Tugas sangat berguna?" Anda boleh membuka Pengurus Tugas dengan menekan Ctrl+Alt+Del dalam Windows. Pengurus tugas ini menunjukkan kepada anda semua proses yang sedang berjalan dan memori yang mereka gunakan, dan anda boleh memilih dan mematikan proses daripada program pengurus tugas. Apabila anda mula-mula menggunakan Linux, anda juga akan mencari sesuatu yang setara dengan pengurus tugas di Linux. Pakar Linux lebih suka menggunakan baris arahan untuk mencari proses, penggunaan memori, dll., tetapi anda tidak perlu melakukannya

Selesaikan masalah paparan graf dan carta yang bercelaru pada pelayan pemantauan Cina Zabbix Selesaikan masalah paparan graf dan carta yang bercelaru pada pelayan pemantauan Cina Zabbix Jul 31, 2024 pm 02:10 PM

Sokongan Zabbix untuk bahasa Cina tidak begitu baik, tetapi kadangkala kami masih memilih bahasa Cina untuk tujuan pengurusan Dalam antara muka web yang dipantau oleh Zabbix, orang Cina di bawah ikon grafik akan memaparkan petak kecil. Ini tidak betul dan memerlukan muat turun fon. Contohnya, "Microsoft Yahei", "Microsoft Yahei.ttf" dinamakan "msyh.ttf", muat naik fon yang dimuat turun ke /zabbix/fonts/fonts dan ubah suai dua aksara dalam /zabbix/include/defines.inc.php fail di define('ZBX_GRAPH_FONT_NAME','DejaVuSans');define('ZBX_FONT_NAME'

7 cara untuk membantu anda menyemak tarikh pendaftaran pengguna Linux 7 cara untuk membantu anda menyemak tarikh pendaftaran pengguna Linux Aug 24, 2024 am 07:31 AM

Tahukah anda, bagaimana untuk menyemak tarikh penciptaan akaun pada sistem Linux? Jika anda tahu, apa yang anda boleh lakukan? Adakah anda berjaya? Jika ya, bagaimana untuk melakukannya? Pada asasnya sistem Linux tidak menjejaki maklumat ini, jadi apakah cara alternatif untuk mendapatkan maklumat ini? Anda mungkin bertanya mengapa saya menyemak ini? Ya, terdapat situasi di mana anda mungkin perlu menyemak maklumat ini dan ia akan membantu anda pada masa itu. Anda boleh menggunakan 7 kaedah berikut untuk mengesahkan. Gunakan /var/log/secure Gunakan alat aureport Gunakan .bash_logout Gunakan arahan chage Gunakan arahan useradd Gunakan arahan passwd Gunakan arahan terakhir Kaedah 1: Gunakan /var/l

Ajar anda cara menambah fon pada Fedora dalam masa 5 minit Ajar anda cara menambah fon pada Fedora dalam masa 5 minit Jul 23, 2024 am 09:45 AM

Pemasangan seluruh sistem Jika anda memasang fon seluruh sistem, ia akan tersedia kepada semua pengguna. Cara terbaik untuk melakukan ini ialah menggunakan pakej RPM daripada repositori perisian rasmi. Sebelum memulakan, buka alat "Perisian" dalam Fedora Workstation, atau alat lain menggunakan repositori rasmi. Pilih kategori "Tambahan" dalam bar pilihan. Kemudian pilih "Fon" dalam kategori. Anda akan melihat fon yang tersedia serupa dengan fon dalam tangkapan skrin di bawah: Apabila anda memilih fon, beberapa butiran akan muncul. Bergantung pada beberapa senario, anda mungkin boleh melihat beberapa contoh teks untuk fon. Klik butang "Pasang" untuk menambahkannya pada sistem anda. Bergantung pada kelajuan sistem dan lebar jalur rangkaian, proses ini mungkin mengambil sedikit masa untuk diselesaikan

Apakah yang perlu saya lakukan jika fon WPS yang hilang di bawah sistem Linux menyebabkan fail menjadi bercelaru? Apakah yang perlu saya lakukan jika fon WPS yang hilang di bawah sistem Linux menyebabkan fail menjadi bercelaru? Jul 31, 2024 am 12:41 AM

1. Cari font wingdings, wingdings2, wingdings3, Webdings, dan MTExtra dari Internet 2. Masukkan folder utama, tekan Ctrl+h (tunjukkan fail tersembunyi), dan semak jika terdapat folder .fonts satu. 3. Salin fon yang dimuat turun seperti wingdings, wingdings2, wingdings3, Webdings, dan MTExtra ke folder .fonts dalam folder utama Kemudian mulakan wps untuk melihat jika masih terdapat dialog peringatan "System missing font kotak. Jika tidak, hanya Kejayaan Nota: wingdings, wingdin

Pemasangan dan konfigurasi Centos 7 pelayan penyegerakan masa rangkaian NTP Pemasangan dan konfigurasi Centos 7 pelayan penyegerakan masa rangkaian NTP Aug 05, 2024 pm 10:35 PM

Persekitaran percubaan: OS: LinuxCentos7.4x86_641 Lihat zon waktu pelayan semasa & senaraikan zon waktu dan tetapkan zon waktu (jika sudah menjadi zon waktu yang betul, sila langkau): #timedatectl#timedatectllist-timezones#timedatectlset-timezoneAsia. /Shanghai2 Memahami konsep zon waktu: GMT, UTC, CST, DSTUTC: Seluruh bumi dibahagikan kepada dua puluh empat zon waktu Setiap zon waktu mempunyai waktu tempatan sendiri, demi penyatuan. masa bersatu digunakan, dipanggil Masa Selaras Sejagat (UTC :UniversalTim).

Bagaimana untuk menyambungkan dua hos Ubuntu ke Internet menggunakan satu kabel rangkaian Bagaimana untuk menyambungkan dua hos Ubuntu ke Internet menggunakan satu kabel rangkaian Aug 07, 2024 pm 01:39 PM

Cara menggunakan satu kabel rangkaian untuk menyambungkan dua hos ubuntu ke Internet 1. Sediakan hos A: ubuntu16.04 dan hos B: ubuntu16.042 Hos A mempunyai dua kad rangkaian, satu disambungkan ke rangkaian luaran dan satu lagi disambungkan menjadi tuan rumah B. Gunakan arahan iwconfig untuk melihat semua kad rangkaian pada hos. Seperti yang ditunjukkan di atas, kad rangkaian pada hos A pengarang (komputer riba) ialah: wlp2s0: Ini ialah kad rangkaian wayarles. enp1s0: kad rangkaian berwayar, kad rangkaian yang disambungkan ke hos B. Selebihnya tiada kaitan dengan kita, tidak perlu ambil peduli. 3. Konfigurasikan IP statik A. Edit fail #vim/etc/network/interfaces untuk mengkonfigurasi alamat IP statik untuk antara muka enp1s0, seperti ditunjukkan di bawah (di mana #==========

lambung! Menjalankan DOS pada Raspberry Pi lambung! Menjalankan DOS pada Raspberry Pi Jul 19, 2024 pm 05:23 PM

Seni bina CPU yang berbeza bermakna menjalankan DOS pada Raspberry Pi tidak mudah, tetapi ia tidak banyak masalah. FreeDOS mungkin biasa kepada semua orang. Ia adalah sistem pengendalian yang lengkap, percuma dan serasi untuk DOS. Ia boleh menjalankan beberapa permainan DOS lama atau perisian komersial, dan juga boleh membangunkan aplikasi terbenam. Selagi program boleh berjalan pada MS-DOS, ia boleh berjalan pada FreeDOS. Sebagai pemula dan penyelaras projek FreeDOS, ramai pengguna akan bertanya kepada saya soalan sebagai orang dalam. Soalan yang paling kerap saya tanya ialah: "Bolehkah FreeDOS dijalankan pada Raspberry Pi?" Lagipun, Linux berjalan dengan baik pada Raspberry Pi

See all articles