linux open dev/tty0 receive_buf,嵌入式代碼open("/dev/ttyso",o_RDWR/O_NOCTTY/O_NDELAY);

這是文件I/O的常用函數,open函數,open函數用來打開一個設備,他返回的是一個整型變量,如果這個值等於-1,說明打開文件出現錯誤,如果為大於0的值,那么這個值代表的就是文件描述符。一般的寫法是if((fd=open("/dev/ttys0",O_RDWR | O_NOCTTY | O_NDELAY)<0){

perror("open");

}

這個事常用的一種用法fd是設備描述符,linux在操作硬件設備時,屏蔽了硬件的基本細節,只把硬件當做文件來進行操作,而所有的操作都是以open函數來開始,它用來獲取fd,然后后期的其他操作全部控制fd來完成對硬件設備的實際操作。你要打開的/dev/ttyS0,代表的是串口1,也就是常說的com1,后面跟的是一些控制字。int open(const char *pathname, int oflag, …/*, mode_t mode * / ) ;這個就是open函數的公式。控制字可以有多種,我現在給你列出來:

O_RDONLY 只讀打開。

O_WRONLY 只寫打開。

O_RDWR 讀、寫打開。

O_APPEND 每次寫時都加到文件的尾端。

O_CREAT 若此文件不存在則創建它。使用此選擇項時,需同時說明第三個參數mode,用其說明該新文件的存取許可權位。

O_EXCL 如果同時指定了O_CREAT,而文件已經存在,則出錯。這可測試一個文件是否存在,如果不存在則創建此文件成為一個原子操作。

O_TRUNC 如果此文件存在,而且為只讀或只寫成功打開,則將其長度截短為0。

O_NOCTTY 如果p a t h n a m e指的是終端設備,則不將此設備分配作為此進程的控制終端。

O_NONBLOCK 如果p a t h n a m e指的是一個F I F O、一個塊特殊文件或一個字符特殊文件,則此選擇項為此文件的本次打開操作和后續的I / O操作設置非阻塞方式。

O_SYNC 使每次w r i t e都等到物理I / O操作完成。

這些控制字都是通過“或”符號分開(|)

通過這些介紹,你的那段代碼就不難解釋了:是以讀寫方式、不把該文件作為終端設備、無延時模式打開串口1.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值