vxworks串口的初始化和读写
VXWORKS串口设置说明:
一般有这么几步:
打开串口
设置串口raw模式,清空输入输出的缓冲区
设置波特率,数据位,停止位,校验方式
便可以开始读和写
打开串口:
fd = open("/tyCo/0", O_RDWR, 0);
"/tyCo/0" 串口1的设备名,O_RDWR:open for reading and writing
设置串口raw模式,清空输入输出的缓冲区
ioctl(fd,FIOSETOPTIONS,OPT_RAW);
ioctl(fd,FIOFLUSH,0);
ioctl(int fd,int function,int arg);这个函数解释如下:
function这个参数有如下:(tty)
FIOBAUDRATE |
设置波特率,arg为一整数,表示要设定的波特率 |
FIOGETOPTIONS |
取得设备控制字,arg表示读出的内容存放的位置 |
FIOSETOPTIONS |
设置设备控制字,arg表示要设置的选项 |
FIOGETNAME |
取得文件描述符对应的文件名,arg存放文件名的缓冲区 |
FIOREAD |
取得输入缓冲区内未读取的字符数,arg用于接收结果的整型指针 |
FIOWRITE |
取得输出缓冲区内的字符个数,arg用于接收结果的整型指针 |
FIOFLUSH |
清空输入输出缓冲区的字符 |
FIOCANCEL |
取消读和写 |
FIOSETOPTIONS对应的arg有 OPT_LINE,OPT_RAW,OPT_ECHO等等
关于这些的定义,可以在sioLib.h,ioLib.h里寻找。
设置波特率,数据位,停止位,校验方式
STOPB:两位停止位,默认是1位停止位。PARENB使能校验,PARODD奇校验,使能后默认是偶校验,未使能则是无校验
CS5,CS6,CS7,CS8:5,6,7,8位数据位
如:CS8|PARENB :8位数据位,1位停止位,偶校验;
CS8|PARENB|PARODD:8位数据位,1位停止位,奇校验;
CS8 :8位数据位,1位停止位,无校验;
CS8|STOPB:8位数据位,2位停止位,无校验;
int SerialOps = 0;
ioctl(fd,FIOBAUDRATE,9600); //9600波特率
SerialOps |= CS8;//8数据位,1位停止位,无校验
ioctl(fd,SIO_HW_OPTS_SET,SerialOps);//设置
SIO_HW_OPTS_SET(设置硬件选项)是在XXDrv里的function
SIO_HW_OPTS_SET对应的arg:
CLOCAL |
忽略modem控制信号 |
CREAD |
启动接收器 |
CSIZE |
指定数据位:CS5~CS8 |
HUPCL |
最后关闭时挂断modem连接 |
STOPB |
被设置时指定2位停止位,否则1位停止位 |
PARENB |
被设置时启用奇偶校验,否则不进行奇偶校验 |
PARODD |
被设置时启用奇校验,否则偶校验 (PARENB被设置时才有效) |
可以开始读写
int read
(
int fd, /* file descriptor from which to read */
char * buffer, /* pointer to buffer to receive bytes */
size_t maxbytes /* max no. of bytes to read into buffer */
)
int write
(
int fd, /* file descriptor on which to write */
char * buffer, /* buffer containing bytes to be written */
size_t nbytes /* number of bytes to write */
)
关于串口的设置,需要参考tty和xxDrv。详细的还是需要看书的。
下面举个例子:在有些的设置需要如下:
fd=open(tyco,2,0);
logMsg("/n%s;fd=%d/n",tyco,fd,0,0,0,0);
ioctl(fd, FIOOPTIONS, OPT_RAW);
ioctl(fd,FIOBAUDRATE,115200); //设置串口波特率为9600bps
ioctl(fd,FIOFLUSH,0);//清空输入输出缓冲
//ioctl(fd,SIO_HW_OPTS_SET,CS8|PARENB|PARODD|CLOCAL|CREAD); //设置 8 位数据位,1位停止位,带校验位,奇校验,没有流控制CLOCAL,使能读CREAD
//ioctl(fd,SIO_HW_OPTS_SET,CS8|PARENB|CLOCAL|CREAD); //设置 8 位数据位,1位停止位,带校验位,偶校验,没有流控制CLOCAL,使能读CREAD
ioctl(fd,SIO_HW_OPTS_SET,CS8|CLOCAL|CREAD); //设置 8 位数据位,1位停止位,带校验位,无校验,没有流控制CLOCAL,使能读CREAD
write(fd,str,48);//需放在清缓存后,mpc8280不用。和SIO_HW_OPTS_SET之后,因为会reset串口
上面粗字体,需要注意。有些需要,有些不需要的。
vxworks串口的初始化和读写相关推荐
- Linux——Linux系统编程之串口编程总结(串口的初始化、读写操作实践)
目录 0 引言 1 串口编程的流程 1.1 打开串口 1.2 初始化串口 1.2.1 termios结构体 1.2.2 关键函数 1.2.3 初始化串口代码 2 串口的读写测试例程 0 引言 串口大家 ...
- C/C++串口通信原理及读写与操作
http://wangbaiyuan.cn/c-serial-communication-write-reading.html [展开]文章目录 在工业控制中,工控机(一般都基于Windows平台)经 ...
- S3C2440 GPS串口配置以及数据读写
S3C2440 GPS串口配置以及数据读写 参考文章:http://www.cnblogs.com/jason-lu/articles/3173988.html http://www.cn ...
- 串口高频RFID读卡器|读写器T6-AS-00-01读写DESFIRE芯片卡步骤与方法
串口高频RFID读卡器|读写器T6系列是一款13.56MHZ高频可读可写设备,模块自带CPU控制无需二次编程,通过HID人体学输入方式与计算机通讯无需加载任何驱动程序,一体式板载射频天线性能更稳定,非 ...
- HX530系列串口通信高频RFID读写器|读卡器串口调试工具测试读卡操作说明
本文将重点介绍HX530系列串口通信高频RFID读写器|读卡器串口调试工具测试读卡操作说明. 1.打开SDK 中的Demo,使用串口工具,如下图 2.在串口调试工具设置相关参数 2.1.波特率:960 ...
- 硬件系列(九)--------串口扫码头数据读写
一.前言 最近需求做扫码支付,但是扫码的扫码头是串口的,需要进行开发才能调起扫码头扫码,头疼了一段时间,在度娘上搜索了一波,做了下总结,也写了一个demo,顺便写一篇博文记录一下. 二.串口管理类 * ...
- stm32f7linux,STM32F7串口5初始化失败
用的STM32F767想要初始化串口5,用的PB12(Rx).PB13(Tx),两脚均初始化为复用推免输出.上拉模式初始化后只有PB13上拉了,PB12还是没上拉,什么原因.代码如下 void uar ...
- STM32串口2初始化
在STM32提供的官方库里只有串口一的初始化代码,但当你需要用到两个以上的串口,就得自己写相应的代码,下面是串口2的,其他的串口也差不多. usart2.c#include "sys.h&q ...
- Python串口通讯发送指令读写NFC源码 支持windows、linux系统
本示例使用的读卡器介绍:RS232串口RFID NFC IC卡读写器可二次开发编程发卡器USB转COM-淘宝网 (taobao.com) class Ui_Frame(object):def setu ...
最新文章
- 配置错误定义了重复的“system.web.extensions/scripting/scriptResourceHandler” 解决办法...
- api怎么写_月薪几十K 的人是怎么设计REST API
- 使用java进行婚礼庆祝_#102030:在30天内运行20 10K,庆祝Java 20年
- STM8学习笔记---定时器输出7路PWM波
- 五个 SQL 查询性能测试题,只有 40% 及格率,你敢来挑战吗?| 原力计划
- linux界面如何进行文档排序,Linux中使用sort对文档中的内容进行排序
- Linux学习之在线安装mysql
- RHEL 6.2 Error: Cannot create GC thread. Out of system resources.
- Win11声卡驱动怎么更新?Win11声卡驱动更新方法
- 2018引汉济渭计算机监控系统,基于数字水网的引汉济渭受水区水资源调配业务化研究与应用...
- 网站受到流量攻击怎么办
- 一个好用的串口类(收发自如)
- 口令红包-利用函数计算构建微信小程序的server端
- 如何利用树莓派制作路由器
- mysql情况数据库表数据函数_mysql数据库表单查询和函数的使用
- 我带你去哪里 VIII
- SANGFOR SCSA——协议基础
- Requests库常用方法及参数介绍
- Bootstrap系列之巨幕(Jumbotron)
- 端口映射工具:ngrok的使用