当前位置:  技术问答>linux和unix

哪位详解一下下面的两句代码?

    来源: 互联网  发布时间:2015-08-05

    本文导语:  int g_Serialfd = open("tyCo/1",2,0);//这里tyco/0 tyCo/1是不是分别代表com1,com2 ioctl(g_Serialfd, FIONWRITE, &bytesToWrite);//关键是这第3个参数的意思(类型?值的变化情况?) 这段代码是我看别人的一个串口通信程序中出现的,困...

int g_Serialfd = open("tyCo/1",2,0);//这里tyco/0 tyCo/1是不是分别代表com1,com2

ioctl(g_Serialfd, FIONWRITE, &bytesToWrite);//关键是这第3个参数的意思(类型?值的变化情况?)

这段代码是我看别人的一个串口通信程序中出现的,困惑中。。。

请高人指点一二,分不够再加!~

|
TTY OPTIONS
A full range of options affects the behavior of tty devices. These options are selected by setting bits in the device option word using the FIOSETOPTIONS function in the ioctl( ) routine (see "I/O Control Functions" below for more information). The following is a list of available options. The options are defined in the header file ioLib.h. 


`OPT_LINE' 
Selects line mode. A tty device operates in one of two modes: raw mode (unbuffered) or line mode. Raw mode is the default. In raw mode, each byte of input from the device is immediately available to readers, and the input is not modified except as directed by other options below. In line mode, input from the device is not available to readers until a NEWLINE character is received, and the input may be modified by backspace, line-delete, and end-of-file special characters. 

`OPT_ECHO' 
Causes all input characters to be echoed to the output of the same channel. This is done simply by putting incoming characters in the output ring as well as the input ring. If the output ring is full, the echoing is lost without affecting the input. 

`OPT_CRMOD' 
C language conventions use the NEWLINE character as the line terminator on both input and output. Most terminals, however, supply a RETURN character when the return key is hit, and require both a RETURN and a LINEFEED character to advance the output line. This option enables the appropriate translation: NEWLINEs are substituted for input RETURN characters, and NEWLINEs in the output file are automatically turned into a RETURN-LINEFEED sequence. 

`OPT_TANDEM' 
Causes the driver to generate and respond to the special flow control characters CTRL-Q and CTRL-S in what is commonly known as X-on/X-off protocol. Receipt of a CTRL-S input character will suspend output to that channel. Subsequent receipt of a CTRL-Q will resume the output. Also, when the VxWorks input buffer is almost full, a CTRL-S will be output to signal the other side to suspend transmission. When the input buffer is almost empty, a CTRL-Q will be output to signal the other side to resume transmission. 

`OPT_7_BIT' 
Strips the most significant bit from all bytes input from the device. 

`OPT_MON_TRAP' 
Enables the special monitor trap character, by default CTRL-X. When this character is received and this option is enabled, VxWorks will trap to the ROM resident monitor program. Note that this is quite drastic. All normal VxWorks functioning is suspended, and the computer system is entirely controlled by the monitor. Depending on the particular monitor, it may or may not be possible to restart VxWorks from the point of interruption. The default monitor trap character can be changed by calling tyMonitorTrapSet( ). 

`OPT_ABORT' 
Enables the special shell abort character, by default CTRL-C. When this character is received and this option is enabled, the VxWorks shell is restarted. This is useful for freeing a shell stuck in an unfriendly routine, such as one caught in an infinite loop or one that has taken an unavailable semaphore. For more information, see the VxWorks Programmer's Guide: Shell. 

`OPT_TERMINAL' 
This is not a separate option bit. It is the value of the option word with all the above bits set. 

`OPT_RAW' 
This is not a separate option bit. It is the value of the option word with none of the above bits set. 
I/O CONTROL FUNCTIONS The tty devices respond to the following ioctl( ) functions. The functions are defined in the header ioLib.h. 


`FIOGETNAME' 
Gets the file name of the file descriptor and copies it to the buffer referenced to by nameBuf: 
    status = ioctl (fd, FIOGETNAME, &nameBuf);

This function is common to all file descriptors for all devices. 

FIOSETOPTIONS, FIOOPTIONS 
Sets the device option word to the specified argument. For example, the call: 
    status = ioctl (fd, FIOOPTIONS, OPT_TERMINAL);
    status = ioctl (fd, FIOSETOPTIONS, OPT_TERMINAL);

enables all the tty options described above, putting the device in a "normal" terminal mode. If the line protocol (OPT_LINE) is changed, the input buffer is flushed. The various options are described in ioLib.h. 

FIOGETOPTIONS 
Returns the current device option word: 
    options = ioctl (fd, FIOGETOPTIONS, 0);

FIONREAD 
Copies to nBytesUnread the number of bytes available to be read in the device's input buffer: 
    status = ioctl (fd, FIONREAD, &nBytesUnread);

In line mode (OPT_LINE set), the FIONREAD function actually returns the number of characters available plus the number of lines in the buffer. Thus, if five lines of just NEWLINEs were in the input buffer, it would return the value 10 (5 characters + 5 lines). 

FIONWRITE 
Copies to nBytes the number of bytes queued to be output in the device's output buffer: 
    status = ioctl (fd, FIONWRITE, &nBytes);

FIOFLUSH 
Discards all the bytes currently in both the input and the output buffers: 
    status = ioctl (fd, FIOFLUSH, 0);

FIOWFLUSH 
Discards all the bytes currently in the output buffer: 
    status = ioctl (fd, FIOWFLUSH, 0);

FIORFLUSH 
Discards all the bytes currently in the input buffers: 
    status = ioctl (fd, FIORFLUSH, 0);

FIOCANCEL 
Cancels a read or write. A task blocked on a read or write may be released by a second task using this ioctl( ) call. For example, a task doing a read can set a watchdog timer before attempting the read; the auxiliary task would wait on a semaphore. The watchdog routine can give the semaphore to the auxiliary task, which would then use the following call on the appropriate file descriptor: 
    status = ioctl (fd, FIOCANCEL, 0);

FIOBAUDRATE 
Sets the baud rate of the device to the specified argument. For example, the call: 
    status = ioctl (fd, FIOBAUDRATE, 9600);

Sets the device to operate at 9600 baud. This request has no meaning on a pseudo terminal. 

FIOISATTY 
Returns TRUE for a tty device: 
    status = ioctl (fd, FIOISATTY, 0);

FIOPROTOHOOK 
Adds a protocol hook function to be called for each input character. pfunction is a pointer to the protocol hook routine which takes two arguments of type int and returns values of type STATUS (TRUE or FALSE). The first argument passed is set by the user via the FIOPROTOARG function. The second argument is the input character. If no further processing of the character is required by the calling routine (the input routine of the driver), the protocol hook routine pFunction should return TRUE. Otherwise, it should return FALSE: 
    status = ioctl (fd, FIOPROTOHOOK, pFunction);

FIOPROTOARG 
Sets the first argument to be passed to the protocol hook routine set by FIOPROTOHOOK function: 
    status = ioctl (fd, FIOPROTOARG, arg);

FIORBUFSET 
Changes the size of the receive-side buffer to size: 
    status = ioctl (fd, FIORBUFSET, size);

FIOWBUFSET 
Changes the size of the send-side buffer to size: 
    status = ioctl (fd, FIOWBUFSET, size);

Any other ioctl( ) request will return an error and set the status to S_ioLib_UNKNOWN_REQUEST. 



    
 
 

您可能感兴趣的文章:

  • SSL握手通信详解及linux下c/c++ SSL Socket代码举例
  • 关于tcp/ip详解卷2中的代码
  • 大家推荐几本详解Linux或unix 操作系统源代码的书籍!!!!
  • 谁知道在哪里可以下载《tcp/ip详解》第一卷forlinux下的工具源代码?
  • 看过《tcp/ip详解》3卷,请问下书中原代码编译问题
  • Java代码重构的几种模式详解
  • 解析C#彩色图像灰度化算法的实现代码详解
  • Python代码的打包与发布详解
  • CSS透明属性详解代码
  • Jquery遍历修改url请求参数的代码详解
  • JS 正则表达式判断各个浏览器代码详解
  • 比较正宗的验证邮箱的正则表达式js代码详解
  • Java中的static静态代码块的使用详解
  • 基于linux与windows平台下 如何下载android sdk源代码的方法详解
  • Java设计模式之装饰者模式详解和代码实例
  • asp.net 简单生成缩略图的代码详解
  • 基于Android本地代码生成器详解
  • Windows和Linux中php代码调试工具Xdebug的安装与配置详解
  • 详解JAVA高质量代码之数组与集合
  • http请求与响应的实例代码详解
  • php调用C代码方法详解
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • html保留字符详解
  • 请问哪儿有java2编程详解的电子书下载??本人急需!!跟贴有分!!!
  • Linux/centos/redhat下各种压缩解压缩方式详解
  • 哪有LINUX命令详解下??
  • linux c malloc函数定义及用法详解
  • 请问:setTimeout(p1,p2) 的函数详解,马上给分的。
  • TCP协议报头字段详解及报头图
  • 求 sun ldoms 配置 虚拟化服务器 步骤详解
  • Web前端设计:html上标<sup>标签与下标<sub>标签详解
  • 请问:哪里可以下tcp/ip详解书上程序的源码
  • TCP协议三次握手过程详解
  • linux 2.4 内核软中断详解?
  • HTML 5 <acronym> 标签定义用法详解
  • 哪本书介绍mutex、POSIX 线程详解
  • c++断言assert()函数的头文件及其用法详解
  • 哪位java同门师兄有《java2编程详解》电子文档,注意不是影印版
  • html5/css3文本阴影(text-shadow)详解及示例
  • 如何在Linux下使用脚本实现程序的自动重启!望各位详解!
  • HTML 5中<address> 标签定义用法详解及几个示例
  • ThinkPHP CURD方法之order方法教程详解
  • linux下进程占用内存空间详解
  • 读了tcpip详解后有问题,上边的源码是linux哪个版本的?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3