linux ftdi 虚拟,linux ftdi 驱动
收到一字节数据后,SIGIO应该立即启动。
这是在带驱动程序的Linux上测试的最小示例ftdi_sio:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define tty "/dev/ttyUSB0"
#define baudrate B9600
void byteCallback(int status); // interrupt function
int main(){
int ttyDev = open(tty, O_RDWR | O_NOCTTY | O_NONBLOCK);
if (!ttyDev)
{
printf("couldn't open serial device");
return -1;
}
struct sigaction byteAction; // set the serial interrupt handler
struct termios oldtio, newtio;
//create signal handler
byteAction.sa_handler = byteCallback;
sigemptyset(&byteAction.sa_mask); //sa_mask = 0
byteAction.sa_flags = SA_RESTART;
sigaction(SIGIO, &byteAction, NULL);
//Allow process to detect SIGIO
fcntl(ttyDev, F_SETOWN, getpid());
fcntl(ttyDev, F_SETFL, FASYNC);
tcgetattr(ttyDev, &oldtio); //backup current settings
newtio.c_cflag = baudrate | CS8 | CLOCAL | CREAD;
newtio.c_cflag &= ~CRTSCTS; //disable hw flow control
newtio.c_iflag &= ~(IXON | IXOFF | IXANY); //disable flow control
newtio.c_iflag |= IGNPAR; //ignore parity
newtio.c_oflag = 0;
newtio.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); //raw mode
newtio.c_cc[VMIN] = 1;
newtio.c_cc[VTIME] = 0;
tcflush(ttyDev, TCIFLUSH);
tcsetattr(ttyDev, TCSANOW, &newtio);
while(1){
//Wait for SIGIO to fire
}
}
void byteCallback(int status){
printf("SIGIO fired!\r\n");
}
linux ftdi 虚拟,linux ftdi 驱动相关推荐
- 【Linux】虚拟Pinctrl Demo驱动(二) -- Debug FS之Pinctrl分析
1. 前言 我们在调试Pinctrl子系统时,会使用到Debug Filesystem.在/sys/kernel/debug/目录下就会有pinctrl目录,如果该目录下没有任何目录或文件,说明deb ...
- linux ftdi 虚拟,linux ftdi驱动
收到一字节数据后,SIGIO应该立即启动. 这是在带驱动程序的Linux上测试的最小示例ftdi_sio: #include #include #include #include #include # ...
- USB虚拟总线驱动开发扩展之(利用虚拟USB总线驱动实现U盘模拟)
by fanxiushu 2020-03-25 转载或引用请注明原始作者. USB虚拟总线驱动的使用范围是非常广泛的,可以使用它来模拟各种通用的USB设备. 以前的文章阐述过基于windows平台和基 ...
- 基于linux的驱动设计,《基于LINUX的虚拟驱动设计》-毕业论文.doc
PAGE 40 l 摘 要 驱动程序是当前最热门.最有发展前途的IT应用技术之一.目前的驱动程序的开发主要应用在包括键盘 .鼠标.扫描仪.打印机以及存储设备等日益普及的设备之间的通讯上.但是要使这些设 ...
- linux 深入理解I2C内核驱动
系列文章 I.MX6ULL 手册查找使用方法 实战点亮LED(寄存器版) I.MX6ULL 手册查找使用方法 实战点亮LED(固件库版本) linux 字符设备驱动实战 linux LED设备驱动文件 ...
- linux内核结构介绍及驱动引入
目录 一.Linux内核结构框图 二.图解linux系统架构 三.驱动认知 3.1 为什么要学习写驱动 3.2 文件名与设备号 3.3 open函数打通上层到底层硬件的详细过程 四.shell she ...
- 一篇长文叙述Linux内核虚拟地址空间的基本概括
x86-32位虚拟地址空间 就我们所知,Linux内核一般将处理器的虚拟地址空间划分为两个部分.底部比较大的部分用于用户进程,顶部则专用于内核.虽然(在两个用户进程之间的)上下文切换期间会改变下半部分 ...
- Linux总线、设备、驱动模型
一.Linux总线设备驱动模型框架 从Linux2.6开始Linux加入了一套驱动管理和注册机制-platform平台总线驱动模型.platform平台总线是一条虚拟总线,platform_devic ...
- linux 控制虚拟串口,linux虚拟串口控制器实现-适用于无开发板学习tty driver-好向圈...
在前面几章,我们介绍了tty子系统的框架.数据结构.tty驱动的注册与注销等内容,本章我们借助 之前学习的内容开发一个虚拟的串口控制器驱动,以便我们理解开发串口驱动的步骤及驱动开发实践. 本次实现的虚 ...
最新文章
- 华师大计算机网络中心,华东师范大学 单点登录共享校际资源
- Arch linux
- Linux 源码编译安装过程-以安装XZ解压为例
- Linux操作系统CentOS7安装
- Qt文档阅读笔记-moc工具使用及其理论(moc工具如何添加到makefile中)
- 11年潜心研究产品 全屋智能品牌Aqara终于要开发布会了
- 【Python】os库的使用
- SPF邮件伪造漏洞测试脚本
- DataSet与DataTable与DataRow的关系
- Python函数相关笔记
- Spine 3.8.75报错不能打开:Sorry, an unexpected error has occured. 日志显示Version cannot be null
- VB中连接access数据库的几种方法
- linux软链接的创建、修改、删除(硬链接hard link、软链接soft link或symbolic link、死链接dangling link)(软连接、硬连接)
- freemarker英文日期显示成中文问题
- 记使用腾讯TIM开发聊天通讯遇到的问题及解决方案
- FIIDO 王志凯:共享单车走到了尽头?电动自行车这才开始!
- 益交易德勤 区块链在全球公司的战略中 根深蒂固
- [vue3] 富文本
- 为了一窥究竟,我抓取了全校学生的毕设信息
- python dataframe增加一行_python - 在pandas.DataFrame中添加一行