當前位置:首頁 » 操作系統 » linux串口通訊

linux串口通訊

發布時間: 2022-10-22 09:05:53

㈠ 虛擬機下的linux怎麼接受主機串口接收的數據

虛擬機中的串口連接可以採用兩種方法。一種是指定虛擬機的串口連接到實際的COM上,例如開發機連接到COM1,目標機連接到COM2,然後把兩個串口通過串口線相連接。另一種更為簡便的方法是:在較高一些版本的VMware中都支持把串口映射到命名管道,把兩個虛擬機的串口映射到同一個命名管道。例如,在兩個虛擬機中都選定同一個命名管道 \\.\pipe\com_1,指定target機的COM口為server端,並選擇"The other end is a virtual machine"屬性;指定development機的COM口端為client端,同樣指定COM口的"The other end is a virtual machine"屬性。對於IO mode屬性,在target上選中"Yield CPU on poll"復選擇框,development機不選。

串口是開發者經常要使用到的,我們有些時候需要使用windows開發,然而window裝在了虛擬機中,我們怎麼樣在虛擬機中使用串口呢?
1、在virtualbox中選擇啟用串口,埠模式選擇Host device.
由於現有兩個系統但是只有一個物理串口,所以虛擬機要通過主機的串口文件間接獲取數據,主機是linux,串口設備為/dev/ttyS0
2、埠/文件位置一欄填入:/dev/ttyS0,啟動虛擬機。
3、如果無法啟動虛擬機,很有可能是沒有對ttyS0設備的讀寫許可權,(可以ls -l /dev/ttyS0查看以下許可權)於是我們要修改ttyS0的許可權,在終端中輸入:sudo chmod 777 /dev/ttyS0 這樣就將ttyS0的所有許可權都打開了。啟動虛擬機,這時候就可以在虛擬機中(winXP)使用串口了

㈡ 怎樣用C/C++在Linux系統實現串口通訊

Linux下面有設備文件
串口裝好驅動後 會顯示在dev下
然後對這個設備文件進行讀寫即可。
比windows要簡單的多。

㈢ 51單片機能否與虛擬機linux串口通訊,怎麼通訊

可以接串口。
如果是主板帶的串口,先關閉系統,選擇編輯配置,添加硬體,選擇串口。
如果是USB-串口轉換線纜,只要從host 上disconnect USB設備,這樣USB-串口轉換設備就可以在虛擬機中檢測到,然後在虛擬機中載入驅動就可以。

㈣ linux c 串口 收發數據

1、接受數據一般是阻塞,就是沒有接收到數據就一直等待,可以設置為不阻塞,這樣就可以了

2、另一種方法是,創建線程,一收、一發,就可以互不影響

㈤ Linux下串口通信丟位元組的問題是怎麼樣解決

int con=atoi(portstr);
unsigned char Port_file_name[30];
int fd0,rc;
struct termios ts0;
switch (con)
{ //選項O_NOCTTY 表示不能把本串口當成控制終端,否則用戶的鍵盤輸入信息將影響程序的執行
//O_NDELAY表示打開串口的時候,程序並不關心另一端的串口是否在使用中
case 1: fd0=open("/dev/ttyM0",O_RDWR | O_NOCTTY | O_NDELAY); break;
case 2: fd0=open("/dev/ttyM1",O_RDWR | O_NOCTTY | O_NDELAY); break;
case 3: fd0=open("/dev/ttyM2",O_RDWR | O_NOCTTY | O_NDELAY); break;
case 4: fd0=open("/dev/ttyM3",O_RDWR | O_NOCTTY | O_NDELAY); break;
case 5: fd0=open("/dev/ttyM4",O_RDWR | O_NOCTTY | O_NDELAY); break;
case 6: fd0=open("/dev/ttyM5",O_RDWR | O_NOCTTY | O_NDELAY); break;
case 7: fd0=open("/dev/ttyM6",O_RDWR | O_NOCTTY | O_NDELAY); break;
case 8: fd0=open("/dev/ttyM7",O_RDWR | O_NOCTTY | O_NDELAY); break;
default : fd0=open("/dev/ttyM0",O_RDWR | O_NOCTTY | O_NDELAY); break;
}

tcgetattr(fd0,&ts0);
bzero(&ts0,sizeof(struct termios));
switch (gytype)
{
case 1:{ts0.c_cflag |= B300 | CS7 | CLOCAL | CREAD | PARENB ;
ts0.c_cflag &= ~PARODD; // 轉換為偶效驗
ts0.c_iflag |= INPCK; // Disnable parity checking
break; }
case 2:{ts0.c_cflag |= B1200 | CS8 | CLOCAL | CREAD | PARENB ;
ts0.c_cflag &= ~PARODD; // 轉換為偶效驗
ts0.c_iflag |= INPCK; // Disnable parity checking
break;
}
case 3:{
ts0.c_cflag |= B9600 | CS8 | CLOCAL | CREAD ;
ts0.c_cflag &= ~PARENB; // Clear parity enable
ts0.c_iflag &= ~INPCK; // Enable parity checking
break;
}
case 4:{ts0.c_cflag |= B9600 | CS8 | CLOCAL | CREAD | PARENB ;
ts0.c_cflag &= ~PARODD; // 轉換為偶效驗
ts0.c_iflag |= INPCK; // Disnable parity checking
break;
}
}

ts0.c_lflag &= ~ECHO;
ts0.c_lflag &= ~ECHONL;
ts0.c_iflag &= ~IXOFF;
ts0.c_iflag &= ~IXON;
ts0.c_cflag &= ~CSIZE;
switch (gytype)
{
case 1:{ts0.c_cflag |= CS7 ; break;}
case 2:{ts0.c_cflag |= CS8 ; break;}
case 3:{ts0.c_cflag |= CS8 ; break;}
case 4:{ts0.c_cflag |= CS8 ; break;}
}

ts0.c_lflag &= ~ICANON; //如果設置使能規范輸入,否則使用原始數據(本文使用)
ts0.c_oflag &= ~ONLCR; //如果設置將NL轉換成CR-NL後輸出
ts0.c_iflag &= ~INLCR; //如果設置將接收到的NL(換行)轉換成CR(回車)。
ts0.c_cc[VMIN] = 0; //最少可讀數據
ts0.c_cc[VTIME] = 0; //等待數據時間(10秒的倍數)
ts0.c_cflag &= ~CSTOPB; //如果設置則使用兩個停止位 ,如果取消則使用一個停止位
ts0.c_iflag |= IGNBRK; //如果設置則忽略接收到的break信號
ts0.c_lflag &= ~IEXTEN; //如果設置則啟用實現自定義的輸入處理
ts0.c_lflag |= NOFLSH; //如果設置則禁止產生SIGINT,SIGQUIT和SIGSUSP信號時刷新輸入和輸出隊列
switch (gytype)
{
case 1:{rc = cfsetospeed(&ts0,B300);break; }
case 2:{rc = cfsetospeed(&ts0,B1200);break; }
case 3:{rc = cfsetospeed(&ts0,B9600);break; }
case 4:{rc = cfsetospeed(&ts0,B9600);break; }
}
rc = tcsetattr(fd0,TCSAFLUSH,&ts0);
return fd0;

㈥ 如何在linux上使用串口設備

簡單的運行 dmesg 命令
$ dmesg | grep tty
輸出:
[ 37.531286] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 37.531841] 00:0b: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 37.532138] 0000:04:00.3: ttyS1 at I/O 0x1020 (irq = 18) is a 16550A

setserial 命令
setserial 是一個程序用於設定並/或報告某個串口關聯的配置信息。該信息包括串口用到的I/O 埠和中斷號,以及Break鍵是否應被解釋為Secure Attention Key 等等。 僅僅是輸出如下的命令:
$ setserial -g /dev/ttyS[0123]
輸出:
/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
/dev/ttyS1, UART: 16550A, Port: 0x1020, IRQ: 18
/dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4
/dev/ttyS3, UART: unknown, Port: 0x02e8, IRQ: 3

帶-g選項的setserial幫助找到你的Linux板子上的物理串口。
Linux 串口控制台程序
一旦串口被確定了,你就能使用許多的工具來配置Linux板子:
minicom- 用於控制modem和連接到mp 設備的最好的串口通信程序。
wvidial or other GUI dial up networking program - 一個內建智能PPP 撥號器。
getty / agetty - agetty 打開一個 tty 埠, 提示登錄名稱並調用 /bin/login 命令。
grub / lilo configuration - 配置串口為系統控制台。

㈦ 兩台Linux機器用串口線連接起來,怎樣通信

1. write了多少位元組,你就應該讀多少位元組,不要讀多於你發送的位元組數,不然read()可能會由於讀不夠數據而阻塞住,所以不能返回!
針對你的程序,修改PC機2用來讀數據的程序中:
nread=read(fd,buff,5); // 8->5
printf("nread = %d,%s\n",nread,buff);

2. 確保串口兩端的配置是一樣的!

㈧ linux串口通訊簡單問題

這個write程序向串口(/dev/ttyS0)寫入數據,由於這個文件取名與系統自帶的write命令重名,因此執行時鍵入:
./write
再試試。

㈨ Linux串口連接ttyS0、ttyS1是什麼意思

這是通信串口名稱。
在Linux環境下,串口名從ttyS0開始依次是ttyS1、ttyS2等。在本程序中,使用ttyS0作為通信串口。在打開ttyS0的時候,選項 O_NOCTTY 表示不能把本串口當成控制終端,否則用戶的鍵盤輸入信息將影響程序的執行; O_NDELAY表示打開串口的時候,程序並不關心另一端 的串口是否在使用中。在Linux中,打開串口設備和打開普通文件一樣,使用的是open()系統調用。比如我么打開串口設備1也就是COM1,只需要:
fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY );
打開的串口設備有很多設置選項。本文中使用int setup_com(int fd)設置。在系統頭文件中 定義了終端控制結構struct termios,tcgetattr()和tcsetattr()兩個系統函數獲得和設置這些屬性。結構 struct termios中的域描述的主要屬性包括:
c_cflag : 控制選項
c_lflag : 線選項
c_iflag : 輸入選項
c_oflag :輸出選項
c_cc :控制字元
c_ispeed :輸入數據波特率
c_ospeed :輸出數據波特率
如果要設置某個選項,那麼就使用"|=「運算,如果關閉某個選項就使用」&=「和」~"運算。本文使用的各個選項的意義定義如下:
c_cflag:
CLOCAL 本地模式,不改變埠的所有者
CREAD 表示使能數據接收器
PARENB 表示偶校驗
PARODD 表示奇校驗
CSTOPB 使用兩個停止位
CSIZE 對數據的bit使用掩碼
CS8 數據寬度是8bit
c_lflag:
ICANON 使能規范輸入,否則使用原始數據(本文使用)
ECHO 回送(echo)輸入數據
ECHOE 回送擦除字元
ISIG 使能SIGINTR,SIGSUSP, SIGDSUSP和 SIGQUIT 信號
c_iflag:
IXON 使能輸出軟體控制
IXOFF 使能輸入軟體控制
IXANY 允許任何字元再次開啟數據流
INLCR 把字元NL(0A)映射到CR(0D)
IGNCR 忽略字元CR(0D)
ICRNL 把CR(0D)映射成字元NR(0A)
c_oflag: OPOST 輸出後處理,如果不設置表示原始數據(本文使用原始數據)
c_cc[VMIN]: 最少可讀數據
c_cc[VTIME]: 等待數據時間(10秒的倍數)

㈩ linux串口通訊問題

許可權許可權

熱點內容
interbase資料庫 發布:2025-05-14 13:49:50 瀏覽:688
微商海報源碼 發布:2025-05-14 13:49:42 瀏覽:343
分布式緩存部署步驟 發布:2025-05-14 13:24:51 瀏覽:610
php獲取上一月 發布:2025-05-14 13:22:52 瀏覽:89
購買雲伺服器並搭建自己網站 發布:2025-05-14 13:20:31 瀏覽:688
sqlserver建立視圖 發布:2025-05-14 13:11:56 瀏覽:484
搭建httpsgit伺服器搭建 發布:2025-05-14 13:09:47 瀏覽:255
新電腦拿回來我該怎麼配置 發布:2025-05-14 13:09:45 瀏覽:240
視頻伺服器新建ftp用戶 發布:2025-05-14 13:03:09 瀏覽:225
php花生 發布:2025-05-14 12:54:30 瀏覽:550