日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Linux系統(tǒng)串口通信原碼探究——AT指令應(yīng)用 (串口 at 源碼 linux)

引言:

成都創(chuàng)新互聯(lián)于2013年創(chuàng)立,先為嵩縣等服務(wù)建站,嵩縣等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為嵩縣企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

隨著物聯(lián)網(wǎng)技術(shù)的應(yīng)用不斷普及,在嵌入式領(lǐng)域,串口通信一直是低成本、簡單易用的數(shù)據(jù)傳輸方式。Linux系統(tǒng)并沒有像 Windows 系統(tǒng)那樣封裝好串口通信相關(guān)的函數(shù),因此在 Linux 下要實現(xiàn)串口通信需要自己編寫代碼。本文將結(jié)合 AT 指令實際案例,探究串口通信在 Linux 系統(tǒng)下的原碼實現(xiàn)。

一、串口通信簡介

串口通信是一種基于異步傳輸模式的串行通信方式,指的是通過串行線路在兩個設(shè)備之間傳輸數(shù)據(jù)。其傳輸數(shù)據(jù)的速率通常較慢,但可以傳輸大量數(shù)據(jù)。串口通信分為兩個方向:發(fā)送端和接收端。在發(fā)送端,將數(shù)據(jù)轉(zhuǎn)換成串口的格式,然后通過串口線路發(fā)送出去,在接收端,接收到數(shù)據(jù)后再將數(shù)據(jù)轉(zhuǎn)換成相應(yīng)的格式,使用相應(yīng)的接口進行解析。

二、Linux 系統(tǒng)下的串口通信

在 Linux 系統(tǒng)下,串口通信可以通過打開設(shè)備文件,設(shè)置相應(yīng)的串口參數(shù)后,使用讀寫串口文件進行數(shù)據(jù)的收發(fā)。常用串口通信函數(shù)如下:

示例代碼:

#include

#include

#include

#include

#include

#include

#include

#define DEVICE “/dev/ttyS0”

int mn()

{

int fd;

char buf[1024];

struct termios option;

fd = open(DEVICE, O_RDWR|O_NOCTTY|O_NDELAY);

if(fd

{

perror(DEVICE);

return -1;

}

tcgetattr(fd, &option);

cfsetispeed(&option, B9600);

cfsetospeed(&option, B9600);

option.c_cflag &= ~CSIZE;

option.c_cflag &= ~CRTSCTS;

option.c_cflag |= CS8;

option.c_cflag |= CLOCAL|CREAD;

option.c_iflag |= IGNPAR;

option.c_iflag &= ~(IXON | IXOFF | IXANY);

option.c_oflag &= ~OPOST;

option.c_cc[VTIME] = 0;

option.c_cc[VMIN] = 1;

tcflush(fd, TCIFLUSH);

tcsetattr(fd,TCSANOW,&option);

while(1)

{

if(read(fd,buf,sizeof(buf)) >0)

{

printf(“%s”,buf);

memset(buf, 0, sizeof(buf));

}

}

close(fd);

return 0;

}

基于以上代碼,可以通過讀寫串口文件進行數(shù)據(jù)的收發(fā),但這還不夠。在實際應(yīng)用中,可能需要發(fā)送一些指令,例如 AT 指令等。接下來,我們將結(jié)合 AT 指令實際案例,探究串口通信在 Linux 系統(tǒng)下的原碼實現(xiàn)。

三、AT 指令應(yīng)用實例

AT 指令是一種管理調(diào)制解調(diào)器(MODEM)或者 G/GPRS 模塊的指令,其中包含的 AT 是“ATtention”的縮寫。通常情況下,需要使用 AT 指令來進行短信發(fā)送、撥號等操作。在本例中,我們將介紹如何使用 AT 指令來控制 G/GPRS 模塊的短信發(fā)送。

1. 打開串口設(shè)備

int fd = open(SERIAL_PORT, O_RDWR|O_NOCTTY|O_NDELAY);

2. 設(shè)置串口參數(shù)

struct termios option;

tcgetattr(fd, &option);

cfsetispeed(&option, B9600);

cfsetospeed(&option, B9600);

option.c_cflag &= ~CSIZE;

option.c_cflag &= ~CRTSCTS;

option.c_cflag |= CS8;

option.c_cflag |= CLOCAL|CREAD;

option.c_iflag |= IGNPAR;

option.c_iflag &= ~(IXON | IXOFF | IXANY);

option.c_oflag &= ~OPOST;

option.c_cc[VTIME] = 0;

option.c_cc[VMIN] = 1;

tcflush(fd, TCIFLUSH);

tcsetattr(fd,TCSANOW,&option);

3. 發(fā)送 AT 指令

char send_buf[] = “AT\r”;

write(fd, send_buf, strlen(send_buf));

4. 接收 G 模塊返回信息

char recv_buf[1024];

memset(recv_buf, 0, sizeof(recv_buf));

if(read(fd, recv_buf, 1024) > 0)

{

printf(“%s”, recv_buf);

}

5. 設(shè)置短信中心號碼

char send_buf[] = “AT+CSCA=\”+8613800250500\”\r”;

write(fd, send_buf, strlen(send_buf));

6. 發(fā)送短信

char send_buf[] = “AT+CMGS=\”13912345678\”\r”;

write(fd, send_buf, strlen(send_buf));

7. 輸入短信內(nèi)容

char send_buf[] = “hello world”;

write(fd, send_buf, strlen(send_buf));

8. 發(fā)送結(jié)束標識“Ctrl+Z”

char send_buf[] = “\x1a”;

write(fd, send_buf, strlen(send_buf));

這樣,我們就可以在 Linux 系統(tǒng)下使用 AT 指令來控制 G/GPRS 模塊進行短信發(fā)送了。以上操作均為串口通信的實際應(yīng)用案例,涉及到了串口設(shè)備的打開、參數(shù)設(shè)置、數(shù)據(jù)讀寫等操作,同時也介紹了如何使用 AT 指令來控制 G/GPRS 模塊。

結(jié)論:

相關(guān)問題拓展閱讀:

  • 我用Qt在linux下,編寫一個串口程序,然后移植到ARM上,然后給GPRS發(fā)個at,沒有回應(yīng)?求大蝦幫忙

我用Qt在linux下,編寫一個串口程序,然后移植到ARM上,然后給GPRS發(fā)個at,沒有回應(yīng)?求大蝦幫忙

檢查你的串口設(shè)備是否正確

你代碼中的串口設(shè)置有無問題,網(wǎng)上找個demo看看,很多的

同樣在學(xué)習(xí)中

linux下的串口助手

關(guān)于串口 at 源碼 linux的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

成都網(wǎng)站推廣找創(chuàng)新互聯(lián),老牌網(wǎng)站營銷公司
成都網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)(www.cdcxhl.com)專注高端網(wǎng)站建設(shè),網(wǎng)頁設(shè)計制作,網(wǎng)站維護,網(wǎng)絡(luò)營銷,SEO優(yōu)化推廣,快速提升企業(yè)網(wǎng)站排名等一站式服務(wù)。IDC基礎(chǔ)服務(wù):云服務(wù)器、虛擬主機、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗、服務(wù)器租用、服務(wù)器托管提供四川、成都、綿陽、雅安、重慶、貴州、昆明、鄭州、湖北十堰機房互聯(lián)網(wǎng)數(shù)據(jù)中心業(yè)務(wù)。


新聞標題:Linux系統(tǒng)串口通信原碼探究——AT指令應(yīng)用 (串口 at 源碼 linux)
轉(zhuǎn)載注明:http://www.5511xx.com/article/dhedscp.html