串口

寒江独钓(2):串口的过滤

烈酒焚心 提交于 2020-01-09 17:01:31
一、过滤的概念   “过滤”(filter)是极其重要的一个概念。过滤是在不影响上层和下层接口的情况下,在Windows系统内核中加入新的层,从而 不需要修改上层的软件或者下层的真实驱动程序,就加入了新的功能。 二、绑定设备的内核Api之一   通过编程可以生成一个虚拟的设备对象,并“绑定”(Attach)在一个真实的设备上。一旦绑定,则本来操作系统发送给真实设备 的请求,就会首先发送到这个虚拟设备。   在WDK中,有多个内核API能 实现绑定功能 。下面是其中一个函数的原型: NTSTATUSIoAttachDevice(IN PDEVICE_OBJECT SourceDevice,IN PUNICODE_STRING TargetDevice,OUT PDEVICE_OBJECT *AttachedDevice);   IoAttachDevice参数如下:      SourceDevice 是调用者生成的用来过滤的虚拟设备;      TargetDevice 是要被绑定的目标设备。请注意这里的 TargetDevice并不是一个PDEVICE_OBJECT(DEVICE_OBJECT   是设备对象的数据结构,以P开头的是其指针),而是一个字 符串(在驱动开发中字符串用UNICODE_STRING来表示)。实际上,   这个字符串是要被绑定的设备的名字

串口通讯超时的设置与含义(COMMTIMEOUTS)

依然范特西╮ 提交于 2020-01-09 17:00:02
COMMTIMEOUTS:COMMTIMEOUTS主要用于串口超时参数设置。COMMTIMEOUTS结构如下: typedef struct _COMMTIMEOUTS { DWORD ReadIntervalTimeout; DWORD ReadTotalTimeoutMultiplier; DWORD ReadTotalTimeoutConstant; DWORD WriteTotalTimeoutMultiplier; DWORD WriteTotalTimeoutConstant; } COMMTIMEOUTS,*LPCOMMTIMEOUTS; 间隔超时=ReadIntervalTimeout 总超时 = ReadTotalTimeoutMultiplier * 字节数 + ReadTotalTimeoutConstant 串口读取事件分为两个阶段(我以Win32 API函数ReadFile读取串口过程来说明一下) 第一个阶段是:串口执行到ReadFile()函数时,串口还没有开始传输数据,所以串口缓冲区的第一个字节是没有装数据的,这时候总超时起作用,如果在总超时时间内没有进行串口数据的传输,ReadFile()函数就返回,当然 没有读取到任何数据。而且,间隔超时并没有起作用。 第二阶段:假设总超时为20秒,程序运行到ReadFile(),总超时开始从0 计时

COMMTIMEOUTS读写串行口超时

China☆狼群 提交于 2020-01-08 13:14:17
参考百度百科  COMMTIMEOUTS     在用ReadFile和WriteFile读写 串行口 时,需要考虑超时问题。如果在指定的时间内没有读出或写入指定数量的字符,那么ReadFile或WriteFile的操作就会 结束 。要查询当前的超时设置应调用 GetCommTimeouts 函数,该函数会填充一个COMMTIMEOUTS结构。调用 SetCommTimeouts 可以用某一个COMMTIMEOUTS结构的内容来设置超时。 有两种超时:间隔超时和总超时。间隔超时是指在接收时两个字符之间的最大时延,总超时是指读写操作总共花费的最大时间。写操作只支持总超时,而读操作两种超时均支持。   用COMMTIMEOUTS结构可以规定读/写操作的超时,该结构的定义为: typedef struct _COMMTIMEOUTS { DWORD ReadIntervalTimeout; // 读间隔超时 DWORD ReadTotalTimeoutMultiplier; // 读时间系数 DWORD ReadTotalTimeoutConstant; // 读时间 常量 DWORD WriteTotalTimeoutMultiplier; // 写时间系数 DWORD WriteTotalTimeoutConstant; // 写时间常量 } COMMTIMEOUTS,

15.uboot study 串口初始化

坚强是说给别人听的谎言 提交于 2020-01-07 16:41:50
3. 串口初始化 4. 代码实现 关于串口 对于嵌入式设备的开发,刚开始好多设备都无法使用,由于无法获得程序的运行状态,调试程序需要花费好多时间和精力,因此串口对于嵌入式程序的调试的作用显而易见,当串口不能用时,可能只能用led的亮灭来略微指示程序的运行状态,有了串口后,就能获得更多的调试信息了。S3C6410的串口使用和其它设备都差不多,初始化配置串口后,就可以收发数据了。首先来看下芯片手册上的串口框图: 串口信号线有发送数据信号线TXDn,接受数据信号线RXDn,如上图,这两根信号线分别连到了发送移位寄存器和接收移位寄存器,另外串口模块还包含了两个64Bytes的FIFO用来收发数据。除此外还有一个控制单元和波特率产生模块,相应的部分都被连到了系统的外围总线上面。 串口寄存器 先来看下相关的寄存器: S3C6410有UART0,1,2,3四个串口,上面只列出了串口0的相关寄存器,其他几个串口的寄存器说明和这个一样,下面来详细的说下: ###### ULCONx: 串口数据格式设置 数据长度,停止位长度 ,奇偶校验位 UCONx: 串口控制寄存器 选择时钟源,发送接收方式 UFCONx: FIFO控制寄存器 设置FIFO触发等级 使能 UTRSTATx: 发送接收状态寄存器 UERSTATx: 错误状态寄存器 帧错误,奇偶校验错误等 UFSTATx: FIFO 状态寄存器

STM32基于Rt-thread3.12系统的串口通讯

泪湿孤枕 提交于 2020-01-06 23:10:32
前言 STM32的串口收发可以说是对这个芯片学习的一个基础,相信接触过STM32的朋友首先学会的就是它的GPIO和USART。对GPIO和串口初始化的操作我在这里不做赘述,这些在STM32的例程里面很容易找到学会。我们在这里重点介绍STM32的串口中断接收,以及在RTT系统中我们如何把串口device注册到系统的对象容器里。 关于RT-Thread3.12系统 作为国产小型嵌入式系统中的翘楚,RTT也是被大多数产品所使用。我参与的这个项目RTT的主要工作就是多线程调度和串口device的控制。对于线程的调度先不详细说明,我们这里只介绍串口通讯一个线程的东西。 RTT对象 在 RT-Thread中,所有的数据结构都称之为对象。 其中线程,信号量,互斥量、事件、邮箱、消息队列、内存堆、内存池、设备和定时 器在 rtdef.h 中有明显的枚举定义,即为每个对象打上了一个数字标签。我们这里的对象就特指设备,而我们的设备就特指串口。 那么我们使用这个对象有什么用处呢,我私以为有两个最大的用处,一是有利于设备管理,二是基于程序安全考虑。我使用这一功能的时候基本与第一个用处不沾边,因为我们就一个串口设备。主要还是基于安全的考虑才使用RTT对象。 使用系统的对象也就是把硬件驱动注册到系统中,让系统对就硬件进行操控,我们再通过系统操控硬件。 串口注册到系统

416-基于Kintex Ultrasacle的万兆网络光纤 PCIe加速卡 安全领域数据采集处理

核能气质少年 提交于 2020-01-06 17:27:04
基于Kintex Ultrasacle的万兆网络光纤 PCIe加速卡 一、产品概述 本卡为企业级别板卡,可用于数据中心,安全领域数据采集处理。标准PCI Express全高板,适用于普通服务器、工作站。 二 接口介绍 三、硬件规格 结构尺寸 标准PCI Express 全高板,适合于普通服务器、工作站,单板配合标准的全高档条,方便客户固定在PC∕服务器上 FPGA型号 XCKU040-FFVA1156-2I(等级2,工业级) 内存 4个DDR4颗粒,总容量16Gbit; 1200Mhz(2400MT∕S) Boot Flash 128Mbits *2,总容量 256Mbit SATA 接口 2个,单个接口速率 高支持 Sata 3.0 注:不包含sata 例程和源码 SFP +接口 4个,单个接口速率 高支持到10.3125Gbps QSFP+接口 1个,专门提供给高速传输用户,总带宽40Gbps 可编程时钟 QSFP∕SFP+∕SATA接口对应的时钟采用可编程时钟 PCIE 接口 X8,支持Gen1.0∕Gen1.1∕Gen2.0∕Gen3.0,每根lane 高速率8.0 Gbps,符合 PCI Express Gen3.0规范,X8模式,理论带宽高达64 Gbps,在Windows7下测试带宽5000MByte∕s EEPROM 容量 8Kbit 用户拨码开关 4bit

COMMTIMEOUTS读写串行口超时

纵然是瞬间 提交于 2020-01-06 06:52:12
参考百度百科  COMMTIMEOUTS     在用ReadFile和WriteFile读写 串行口 时,需要考虑超时问题。如果在指定的时间内没有读出或写入指定数量的字符,那么ReadFile或WriteFile的操作就会 结束 。要查询当前的超时设置应调用 GetCommTimeouts 函数,该函数会填充一个COMMTIMEOUTS结构。调用 SetCommTimeouts 可以用某一个COMMTIMEOUTS结构的内容来设置超时。 有两种超时:间隔超时和总超时。间隔超时是指在接收时两个字符之间的最大时延,总超时是指读写操作总共花费的最大时间。写操作只支持总超时,而读操作两种超时均支持。   用COMMTIMEOUTS结构可以规定读/写操作的超时,该结构的定义为: typedef struct _COMMTIMEOUTS { DWORD ReadIntervalTimeout; // 读间隔超时 DWORD ReadTotalTimeoutMultiplier; // 读时间系数 DWORD ReadTotalTimeoutConstant; // 读时间 常量 DWORD WriteTotalTimeoutMultiplier; // 写时间系数 DWORD WriteTotalTimeoutConstant; // 写时间常量 } COMMTIMEOUTS,

Delphi POS打印的处理

本小妞迷上赌 提交于 2020-01-03 04:37:13
Delphi POS打印的处理 2007年8月4日 delphi 小票打印 {打印代码} procedure TForm1.Button1Click(Sender: TObject); var RPrinter:TextFile; i:integer; begin {设置打印机} Assignfile(RPrinter,'lpt1'); {准备写文件} Rewrite(RPrinter); {打印} for i := 0 to memo1.lines.Count - 1 do Writeln(RPrinter,memo1.lines[i]); {向后倒纸} Writeln(RPrinter,chr($b)+chr(27)+'K'+chr(40)); {向前进纸} Writeln(RPrinter,chr($b)+chr(27)+'J'+chr(140)); {开钱箱} writeln(f,CHR(27)+CHR(112)+CHR(0)+CHR(17)+CHR(8)); write(f,CHR(27)+CHR(112)+CHR(0)+CHR(17)+CHR(8)); Chr(27)+'p'+chr(0)+chr(60)+chr(255) {关闭打印机} CloseFile(RPrinter); end; 建议看看Printers单元 uses Printers,然后看看里面的函数 1

利用串口和 USBlyzer 的 USB 抓包协议分析(1)

亡梦爱人 提交于 2020-01-02 16:09:08
1 串口打印出的通信数据 HID 鼠标类 == == == 测试 USB == == == = ID = 0x1012 == = suspend_isr == = == = reset_isr == = == = endpoint0_out_isr == = Receive 8 byte data : 0x80 0x06 0x00 0x01 0x00 0x00 0x40 0x00 Trans SUCCESS ! Setup Pack Dir : Device -> Host : Receiver : device Std Request : GET_DESCRIPTOR : Descriptor index : 0 DEVICE_DESCRIPTOR : -> Request length : 64 Send length : 18 Write 16 Byte to edpindex 1 : 0x12 0x01 0x10 0x01 0x00 0x00 0x00 0x10 0x88 0x88 0x77 0x77 0x66 0x66 0x01 0x02 == = endpoint0_in_isr == = Write 2 Byte to edpindex 1 : 0x03 0x01 == = endpoint0_out_isr == = Receive 0 byte data :

ESP8266 NodeMCU引脚说明

混江龙づ霸主 提交于 2019-12-31 13:01:05
ESP8266 NodeMCU引脚说明 下表列举了TPYBoard v202开发板上的引脚编号与NodeMCU、MicroPython之间的对应关系 可用于GPIO操作的引脚有:G0,G2,G4,G5,G12,G13,G14,G15,G16,其中G16是一个特殊的引脚,用于从深度睡眠模式唤醒模块。还需要注意一点,开发板上只有一个串口,将其引出为USB虚拟串口用于REPL操作,当你需要使用串口时,应注意避免冲突。 参考: TPYBoard v202 GPIO的使用 ESP8266 NodeMCU引脚说明-简书 来源: CSDN 作者: MaYuHuaw 链接: https://blog.csdn.net/qq_43328166/article/details/103770537