首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

windows下的串口编程,串口操作类封装

以往都是在嵌入式设备中经常操作串口,或者使用QT的串口类。在Win32中处理串口也是有办法的,操作文件的打开和读写进行串口的操作。使用ReadFile、WriteFile函数。...基本步骤 使用Win32文件方式操作:打开串口(创建文件)->配置参数->发送(写文件)-->接收(读文件) 打开串口 打开串口的第一步是初始化或设置串口配置,目的是创建串口代理,整篇文章我们都将用文件句柄作为串口代理...串口数据读取过程 串口读取事件分为两个阶段: 第一个阶段:串口执行到ReadFile()函数时,串口还没有开始传输数据,所以串口缓冲区的第一个字节是没有装数据的,这时候总超时起作用,如果在总超时时间内没有进行串口数据的传输...如果在20秒总计时时间结束之前,所有的数据都遵守数据间隔为1ms的约定并陆陆续续的到达串口缓冲区,那么就成功进行了一次串口传输和读取;如果20秒总计时时间到,串口还陆陆续续的有数据到达,即使遵守字节间隔为...读取的数据是不全的。 间隔超时触发是有条件的: 第一:在总超时时间内。 第二:串口进行了数据的传输。 成功的进行一次串口数据的传输和读取,只有总超时和间隔超时相互参与配合才能完成。

2.4K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Linux基础(串口编程)

    虽然以太网接口和USB接口也是以一个串行流进行数据传送的,但是串口连接通常特指那些与RS-232标准兼容的硬件或者调制解调器的接口。废话少讲,今天来解剖使用串口时的编程代码细节。...上面的代码是使用串口的第一步,来解释下都是啥意思。...来瞧瞧: 第21-22行,定义了一个用来配置串口属性的结构体: struct termios serial; bzero(&serial, sizeof(serial)); 第24行,将串口设置为raw...: tcflush(fd,TCIFLUSH); 第34-35行,设置非规范模式下的超时时长和最小字符数: serial.c_cc[VTIME] = 10; serial.c_cc[VMIN] = 1;...最后,将以上所有参数一股脑设置到对应的串口就行了: tcsetattr(fd,TCSANOW,&serial); 当然,上面的 fd 就是系统中的某一个你想要设置的成上面那样的属性参数的串口,比如就拿粤嵌

    12.9K20

    【编程基础】Windows下如何玩转串口编程

    在windows下,各种外设都被看成文件,这个跟Linux下看成设备节点类似,所以串口当然是被看成是一个文件。既然被看成文件,所以打开和读写都跟文件类似。...打开串口跟打开文件一样,Win32下就是CreateFile函数,比如下面就采用同步模式打开一个COM1口: CreateFile(TEXT("COM1"), GENERIC_READ|GENERIC_WRITE...串口发送其实就是串口作为文件的写操作,API函数是WriteFile,比如下面的实例就向同步模式打开的串口发送buffer中的数据: WriteFile(hComm, buffer, dwSendLen...串口接收其实就是串口作为文件的读操作,API函数是ReadFile,下面就是同步模式下的将串口数据读到buffer中: ReadFile(hComm, buffer, dwReadLen, &dwActlen...以上就是Windows下的串口发送和接收,具体API函数的详细用法,可以参考MSDN。只要好好阅读相关的每个函数,完成基本的串口通信就没有问题。

    3K50

    嵌入式Linux串口编程

    简介 嵌入式Linux下串口编程与Linux系统下的编程没有什么区别,系统API都是一样的。...嵌入式设备中串口编程是很常用的,比如会对接一些传感器模块,这些模块大多是RS232或者RS485接口,对于软件层面上来说,RS232与RS48区别不大。...RS232与RS485在使用上的区别,RS232是全双工的,只能对接一个设备串口设备。RS485是半双工的总线协议,一般可以挂多个传感器设备,半双工的意思是同时只能有一个设备向串口发数据。...用到的API函数 函数 说明 open 打开设备,用于打开串口设备 fcntl 修改设备描述符属性参数 isatty 检测打开的描述符是否指向一个终端 tcgetattr 用来获取串口终端参数 cfmakeraw...将终端设置为原始模式,该模式下所有的输入数据以字节为单位被处理 tcflush 用于清空输入、输出缓冲区 tcsetattr 设置串口终端参数 read 读取数据 write 写数据 close 关闭串口设备

    13.1K20

    使用picocm来进行Linux下的串口调试

    主要原因就是minicom没有彩色文字,看着难受,特别是调试ARM Linux的时候233 安装 因为正常是在Debian系列的Linux发行版上面使用的(deepin或者ubuntu这些的,解决方案比较完善...然后使得这个设备能被picocom工具访问使用 sudo chmod 777 /dev/ttyUSBx 请自行将ttyUSBx替换为当前使用的串口设备 连接串口设备 下面是一般连接一个串口设备说使用的命令...参数讲解 -b: 设置波特率参数 /dev/ttyUSBx:串口设备,请替换为当前使用的串口设备 打开帮助提示页面 ?...+h打开的,所以其他的命令也是同理 发送接收文件 如果直接使用上面的连接串口设备的命令直接去进行文件发送的话,你就会发现Ctrl a+s进行发送的时候根本没办法确定使用哪种协议进行的,很让人摸不着头脑..."rb -vv" -b 115200 /dev/ttyUSBx 同样的,使用当前的串口设备文件 退出picocom 直接就是按动Ctrl a+q就可以 尾声 picocom相较于minicom

    10.2K60

    Qt概述和Linux下安装

    Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,易于扩展,允许组件编程。...2008年,奇趣科技被诺基亚公司收购,QT也因此成为诺基亚旗下的编程语言工具。2012年,Qt被Digia收购。...安装 下载 Qt的安装包需要从他的下载链接上下载(从官网直接来的话要回答写奇怪的问题,大概就是扯什么开源啊版权的问题,不会答的还下不了0.0) 运行安装程序 下载下的程序没有执行权限,我们得帮他加一下,...myths@myths-X450LD:~/Download$ sudo chmod +x qt-unified-linux-x64-2.0.2-2-online.run myths@myths-X450LD.../qt-unified-linux-x64-2.0.2-2-online.run 路径 一般都帮我们弄好了Desktop 文件,这里不去管他,想看的话用locate 命令。

    5K10

    linux下检测可用串口并使用minicom打开

    目前使用minicom作为串口软件。但使用过程中,有一点感觉不方便的地方,就是我需要使用多个串口,当使用的不是串口0时,就要手动修改minicom的配置。...于是考虑实现脚本,自动列出当前串口,选择后调用minicom打开指定串口,免去手工修改的麻烦。...首先,在minicom的配置目录下,建立配置文件 /etc/minicom/minirc.ttyUSBx 内容如下,其实就是将/dev/ttyUSB0的配置保存为文件 # Machine-generated...minicom ttyUSBx $@ break else echo "Invaild selection" fi done 添加可执行权限,给脚本起个方便输入的别名...ln -s /path/to/myminicom.sh /usr/bin/com 需要打开串口的时候,输入com,即可列出当前的串口,选择后可打开对应串口。

    6.5K20

    linux下socket编程

    Socket soket接口是TCP/IP网络的API。网络的socket数据传输是一种特别的I/O,socket也是一种文档描述符。...0     socket描述符是一个指向内部数据结构的指针,执行描述符表的入口     两个网络程式之间的一个网络连接包括:通信协议、本地协议地址、本地主机端口、远端主机地址、远端协议端口 socket...socket,执行体将这个新socket和请求连接进程的地址联系起来,收到服务请求的初始socket仍能够继续在以前的 socket上监听,同时能够在新的socket描述符上进行数据传输操作 数据传输...    sockfd: 是想用来传输数据的socket描述符     msg: 指向要发送数据的指针     len:以直接为单位的数据长度     flags:一般设置为0     返回实际上发送出的字节数...描述符     buf:为存放接受数据的缓冲区     len:缓冲区的长度     flags:一般也被设置为0     返回实际接受的数据字节数 面向无连接的数据socket以sendto

    4K70

    linux下的shell脚本编程

    可以说,shell使用的熟练程度反映了用户对Unix/Linux使用的熟练程度。...Shell脚本和编程语言很相似,也有变量和流程控制语句,但Shell脚本是解释执行的,不需要编译,Shell程序从脚本中一行一行读取并执行这些命令,相当于一个用户把脚本中的命令一行一行敲到Shell提示符下执行...复杂的应用,在必须使用结构化编程的时候(需要变量的类型检查,函数原型,等等)。 对于影响系统全局性的关键任务应用。 对于安全有很高要求的任务,比如你需要一个健壮的系统来防止入侵、破解、恶意破坏等等。...如果你的应用符合上边的任意一条,那么就考虑一下更强大的语言吧——或许是Perl、Tcl、Python、Ruby——或者是更高层次的编译语言比如C/C++,或者是Java。...注:推荐给所有变量加上花括号,这是个好的编程习惯。

    2.4K20

    Linux下的文件IO编程

    Linux 系统调用(system call)是指操作系统提供给用户程序的一组“特殊接口”,用户程序可以通过这组“特殊”接口来获得操作系统提供的特殊服务。...在 Linux 中,用户程序不能直接访问内核提供的服务,必须通过系统调用来使用内核提供的服务。...Linux 中的用户编程接口(API)遵循了 UNIX 中最流行的应用编程界面标准—— POSIX。这些系统调用编程接口主要是通过 C 库(libc)实现的。...往期传送门: 史上最全的Linux常用命令汇总(超详细!...超全面)收藏这一篇就够了 Linux下标准IO的这些操作你清楚吗(内附有详细的介绍和例程) 文章目录 文件I/O简介 文件描述符 文件I/O与标准I/O区别 打开文件(open) 关闭文件(close

    2.5K10

    linux环境下的时间编程

    Linux下提供了丰富的api以供开发者们处理和时间相关的问题。然而这些接口看似各自为政实则有有着千丝万缕的联系,在学习和时间中引发了各种各样的混乱。...因此时间处理成为了许多Linux开发者的梦魇,遇到时间处理往往避之不及。不过只要你稍微花费一点点精力,学会在Linux上优雅的处理时间和日期也并不是什么难事。...也许你觉得时间的概念是那么浅显易懂没有什么额外强调的必要,但对于程序来说却不然。在程序看来时间的定义是灵活多变的,不同的定义下时间的计算是不同的,因此有必要仔细区分。...同时c11和c++17标准还将其纳入了标准库,因此它现在不再只是posix标准下的了。...在不引入第三方库和自己手动计算的情况下,Linux处理时区的手段只有以下两种: 函数自己定义参数和返回值使用local time还是UTC time; 系统根据环境变量TZ以及配置文件/etc/localtime

    3.4K30

    分享一个开源的QT的串口示波器

    第一时间看干货文章 1 逛github时看到这个QT的串口示波器,完全开源,支持串口、TCP、波形显示、通信协议。感觉很不错,跟以前分享的那个vofa+有点像。...Sailor Project功能说明 串口调试助手功能 支持传统的串口调试助手的基本收发功能,同时可以刷新大量的数据而不卡顿 支持保存接收的数据 支持最大200条可编辑指令的设置,并用于多条发送 支持定时器发送...支持换行符替换时间戳功能 支持较多的中文编码格式 值得注意的是支持Linux简单的串口调试 支持加载csv表格数据到200条可编辑指令 支持部分窗口配置的保存和重启恢复(前提是你不会删除配置文件) 操作说明...注意由于QT自带文本显示窗口加载大量数据后会造成软件卡顿,现解决方案为设定一个显示缓冲区,在有刷新数据阶段(即串口接收数据阶段),如果需要保持刷新状态(即实时显示接收得数据),则仅显示显示缓冲区的内容...由于保存数据为显示界面的数据,如果出于刷新状态,则无法保存所有数据,正确的做法是关闭串口后,将滚动条移动到最顶端,加载全部数据,然后保存窗口数据。

    1.3K10

    opensbi下的riscv64裸机系列编程1(串口输出)

    opensbi下的riscv64裸机系列编程1(串口输出) 1.说明 2.opensbi的编译 3.基本环境的准备 3.1 准备qemu 3.2 准备交叉编译工具链 4.工程完善 5.封装的sbi接口...6.程序运行 7.printf函数的实现 8.小结 1.说明 前面的文章中已经提到了opensbi的作用不仅仅是一个引导作用,还提供了M模式转换到S模式的实现,同时在S-Mode下的内核可以通过这一层访问一些...,此时可以在S-Mode访问M-Mode的串口输出服务。...8.小结 第一阶段实现了opensbi的启动流程,同时通过系统调用访问串口输出。已经实现了S-Mode下访问M-Mode的初步计划,并且通过串口进行基本的输出过程。...随着工程的不断增加,后续会增加makefile工程组织,riscv下的中断处理、以及定时器中断的实现,下篇文章主要介绍这些。

    4.9K30

    Qt在Windows下的三种编程环境搭建

    | Debuggingand Analyzing | Setting Up Debugger) 本篇主要讲解QT在Windows操作系统下的三种编程环境搭建。...方案 编程环境 编译器 调试器 一 Qt Creator MinGW GCC GDB 二 Qt Creator Microsoft Visual C++ Compiler Debugging Tools...QT默认的安装路径是C:\Qt\4.8.5,这里建议修改为C:\Qt\4.8.5_MinGW,此举是为了与其他QT版本库区分开。避免把已安装的其他QT版本覆盖并破坏掉。...编译器路径C:\Qt\mingw\bin\gcc.exe。 6、加快Qt编译的速度技巧。    Qt默认的编译方式速度非常慢,可以使用多核编译的方式来提升速度。   ...QT默认的安装路径是C:\Qt\4.8.5,这里建议修改为C:\Qt\4.8.5_VS2010,此举是为了与其他QT版本库区分开。避免把已安装的其他QT版本覆盖并破坏掉。

    2.4K10
    领券