小目标检测(2)——Pcomm串口通信库的学习使用

news/2024/5/19 6:45:24

文章目录

    • 引言
    • 正文
      • 串口通信的基本流程
      • 串口编程(使用Pcomm库)
      • 具体实例程序分析
    • 总结
    • 参考

引言

  • 在完成老师的项目过程中,用到了Pcomm串口通信的库,这个库我是第一次接触,并不知道如何使用,甚至串口通信的需要设置那些参数都不知道。所以,专门写这篇文章,一方面学习一下串口通信,另外一方面记录一下Pcomm串口通信库的使用记录。
  • 本文主要分为一下几个内容
    • 串口通信的基本知识
    • 使用Pcomm进行串口通信

正文

串口通信的基本流程

  • 串口通信的具体流程如下

    • 端口选择和配置
      • 选择合适的串口端口
      • 配置串口参数,包括波特率、数据位、停止位等
    • 打开串口链接
      • 使用相关库函数打开串口,并检验是否打开成功
    • 初始化和握手(可选)
    • 发送数据
      • 将需要发送的数据写入串口中
      • 设定发送的数据的帧结构、起始位置
    • 接受数据
      • 从串口读取数据,并解析特定的帧结构
    • 错误检测和处理(可选)
      • 使用奇偶校验、CRC等进行错误检测
    • 流控制(可选)
      • 使用硬件或者软件流控制来协调发送和接受速率
    • 关闭串口链接
      • 关闭串口链接,清理任何分配的资源
    • 日志和监控(可选)
      • 记录通信日志
  • 按照这个流程,基本上,我需要设定的就是选择和配置串口打开串口链接发送和接受数据,以及关闭串口

串口编程(使用Pcomm库)

  • 这一节主要是描述使用Pcomm库,使用C++实现端口通信的指令
  • 打开串口
    • 输入:1,2,3,4分别表示COM1,COM2等常数
    • 输出:0表示打开成功,否则打开失败
sio.open(port)
  • 关闭串口
    • 输入:1,2,3,4分别表示COM1,COM2等常数
    • 输出:0表示打开成功,否则关闭失败
sio.close(port)
  • 配置串口通信参数
    • 输入:
      • port端口号
      • baud是波特率
      • mode是校验位、数据位和停止位等数据的或
    • 输出:
// 注意,这个mode是多个位置数位的或
sio.ioctl(port,baud,mode)
  • 读取数据
    • 输入
      • port是端口号
      • buf是缓冲区
      • len是要读取的字符串长度
    • 输出
      • 0未收到字符
      • 大于0表示收到的字符个数
sio.read(port,buf,len)
  • 设置等待间隔时间
    • 输入
      • port是端口号
      • TotalTimeouts设定的等待时间
      • IntervalTimesout每次读出的间隔时间
    • 输出
      • 0设置成功
sio_SetReadTimeouts(int port, DWORD TotalTimeouts, DWORD IntervalTimeouts);
  • 向串口缓冲区发送数据
    • 输入
      • port是端口号
      • buf是缓冲区
      • len是要读取的字符串长度
    • 输出
      • 0发送成功
sio_write(int port, char *buf, int len);
  • 清空缓冲区
    • 输入
      • port端口号
      • func:0清空输入缓冲区,1清空输出缓冲区,2清空输入和输出缓冲区
    • 输出
      • 0发送成功
sio_flush(int port, int func);

具体实例程序分析

  • 发送和接受数据程序样例
int result;
unsigned char sendBuf[3];	//发送缓冲区
unsigned char readBuf[3];	//接受缓冲区
memset(sendBuf,0,sizeof(char)*3);	//发送缓冲区清零
memset(readBuf,0,sizeof(char)*3);	//接受缓冲区清零// 填充发送缓冲区的数据
sendBuf[0]=0xAA;
sendBuf[1]=0xBB;
sendBuf[2]=0xCC;//向串口缓冲区发送3个字符
sio_write(CommPort,(char*)sendBuf,3);
//在40ms内每隔1ms读一次串口
sio_SetReadTimeouts (CommPort,40,1);
result=sio_read(CommPort, readBuf,3);if(result>0){//若收到数据,关闭串口sio_close(CommPort);break
}

总结

  • 通过网上搜集资料大概知道了串口通信的基本方式,打开并配置端口,然后发送信息,接受信息,无非就是多了一些状态码。
  • 通过这个函数,来看别人封装的代码,就清晰多了。
  • 这里直接给出了PComm的说明文档,可以自己下载,
    链接: https://pan.baidu.com/s/1CWgvRrg2ZeiCsodRe7o0tw 提取码: 949e
    –来自百度网盘超级会员v3的分享

参考

  • chatGPT-plus

  • windows串口编程Win32,PComm串口开发

  • PComm开发通信程序

  • 工业级串口编程利器:Pcomm lite 串口库介绍 (Pcomm.dll)


http://www.mrgr.cn/p/32034108

相关文章

大数据课程D7——hadoop的YARN

文章作者邮箱:yugongshiyesina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解YARN的概念和结构; ⚪ 掌握YARN的资源调度流程; ⚪ 了解Hadoop支持的资源调度器:FIFO、Capacity、Fair; ⚪ 掌握YA…

Django实现音乐网站 ⑴

使用Python Django框架制作一个音乐网站。 目录 网站功能模块 安装django 创建项目 创建应用 注册应用 配置数据库 设置数据库配置 设置pymysql库引用 创建数据库 创建数据表 生成表迁移文件 执行表迁移 后台管理 创建管理员账户 启动服务器 登录网站 配置时区…

SpringBoot整合ActiveMQ

ActiveMQ简单使用 JMS ActiveMQ 下载安装 https://activemq.apache.org/components/classic/download/解压缩文件。进入win64目录,双击运行activemq.bat文件,运行服务 将下面的网址输入到浏览器,用户名和密码都是admin SpringBoot整合Act…

flutter 导出iOS问题2

问题1:The Swift pod FirebaseCoreInternal depends upon GoogleUtilities, which does not define modules. To opt into those targets generating module maps (which is necessary to import them from Swift when building as static libraries) 参考 正如上图报错第三方…

Java 源码打包 降低jar大小

这里写目录标题 Idea maven 插件配置pom.xml 配置启动技巧 Idea maven 插件配置 pom.xml 配置 <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><!-- 只…

不同局域网下使用Python自带HTTP服务进行文件共享「端口映射」

文章目录 1. 前言2. 视频教程3. 本地文件服务器搭建3.1 python的安装和设置3.2 cpolar的安装和注册 4. 本地文件服务器的发布4.1 Cpolar云端设置4.2 Cpolar本地设置 5. 公网访问测试6. 结语 1. 前言 数据共享作为和连接作为互联网的基础应用&#xff0c;不仅在商业和办公场景有…

基于光子实验的指数级加速的量子同态加密理论

前言 量子计算机不仅有望在某些重要任务上超越经典计算机&#xff0c;而且还能保护计算的隐私。例如&#xff0c;盲量子计算协议支持安全委托量子计算&#xff0c;其中客户端可以保护其数据和算法的隐私&#xff0c;不受分配来运行计算的量子服务器的影响。然而&#xff0c;这…

RNN架构解析——传统RNN模型

目录 传统RNN的内部结构图使用RNN优点和缺点 传统RNN的内部结构图 使用RNN rnnnn.RNN(5,6,1) #第一个参数是输入张量x的维度&#xff0c;第二个是隐藏层维度&#xff0c;第三层是隐藏层的层数 input1torch.randn(1,3,5) #第一个是输入序列的长度&#xff0c;第二个是批次的样本…

前端文件上传实践与后端处理——文件分块上传

文件上传是现代Web应用程序中常见的功能之一。在这篇博客中&#xff0c;我们将探讨一个简单但完整的前端文件上传实践&#xff0c;同时提供一个后端示例&#xff0c;演示如何处理上传的文件。我们将使用JavaScript作为前端语言&#xff0c;并结合Node.js作为后端环境。让我们开…

前端Vue入门-day05-自定义指令、插槽、路由入门

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 自定义指令 基本语法 (全局&局部注册) 全局注册 局部注册 指令的值 v-loading 指令封装 插槽 …

this is incompatible with sql_mode=only_full_group_by

查看配置 select global.sql_mode 在sql命令行中输入select sql_mode 能够看到sql_mode配置,如果有ONLY_FULL_GROUP_BY&#xff0c;则需要修改 在mysql5.7.5后&#xff0c;ONLY_FULL_GROUP_BY是默认选项&#xff0c;所以就会导致group by的问题 set sql_mode‘复制去掉ONLY_F…

游戏引擎UE如何革新影视行业?创意云全面支持UE云渲染

虚幻引擎UE&#xff08;Unreal Engine&#xff09;作为一款“殿堂级”的游戏引擎&#xff0c;占据了全球80%的商用游戏引擎市场&#xff0c;但如果仅仅将其当做游戏开发的工具&#xff0c;显然是低估了它的能力。比如迪士尼出品的电视剧《曼达洛人》、电影《狮子王》等等都使用…

Docker 阿里云容器镜像服务

阿里云-容器镜像服务ACR 将本地/服务器docker image&#xff08;镜像&#xff09;推送到 阿里云容器镜像服务仓库 1. 在容器镜像服务ACR中创建个人实例 2. 进入个人实例 > 命名空间 创建命名空间 3. 进入个人实例 > 镜像仓库 创建镜像仓库 4. 进入镜像仓库 > 基本信…

Vue没有node_modules怎么办

npm install 一下 然后再npm run serve 就可以运行了

PyTorch从零开始实现Transformer

文章目录 自注意力Transformer块编码器解码器块解码器整个Transformer参考来源全部代码&#xff08;可直接运行&#xff09; 自注意力 计算公式 代码实现 class SelfAttention(nn.Module):def __init__(self, embed_size, heads):super(SelfAttention, self).__init__()self.e…

Hive数据仓库

数据仓库概念与起源发展由来 数仓概念 数据仓库&#xff08;英语&#xff1a;Data Warehouse&#xff0c;简称数仓、DW&#xff09;&#xff0c;是一个用于存储、分析、报告的数据系统。数据仓库的目的是构建面相分析的集成化数据环境&#xff0c;分析结果为企业提供决策支持…

【组内工作】木马回联

文章目录 C2服务器安装和运行方法CrossC2运行方法sliver运行方法empire安装方法DeimosC2安装教程TrevorC2安装教程&#xff1a; C2服务器的流量特征CrossC21. 心跳包2. 命令3. ja3/ja3s Sliver1. http2. https empirehttphttps DeimosC2https TrevorC2 C2服务器安装和运行方法 …

vue 使用vue-json-viewer 展示 JSON 格式的数据

npm install vue-json-viewer --save<el-button type"primary" click"previewClick">预览</el-button><el-dialog title"预览" :visible.sync"previewVisible" width"70%"><viewer ref"viewer&qu…

揭开高级产品经理思维的秘密

我经常被问到产品经理如何晋升到更高级别。事实上&#xff0c;获得晋升往往是一场复杂的游戏。是的&#xff0c;你的技能和成就很重要&#xff0c;但其他因素也很重要&#xff0c;比如你的经理对人才培养的关心程度、你的同事有多优秀、任期有多长、公司的政治氛围如何等等。 所…

【CNN-BiLSTM-attention】基于高斯混合模型聚类的风电场短期功率预测方法(Pythonmatlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…