LabWindows CVI 2017开发笔记--串口API

news2024/11/28 15:56:56

参考资料:https://download.csdn.net/download/Stark_/87424565?spm=1001.2014.3001.5501
转载请注明出处:https://blog.csdn.net/Stark_/article/details/128966962?spm=1001.2014.3001.5501

打开串口OpenComConfig

OpenComConfig 打开一个串行并进行相关的参数设置

int OpenComConfig (
				   int COM_Port,//COM_Port:用于指定要打开的端口号,有效范围为 1-1000。
				   char Device_Name[ ], //Device_Name[ ]:用 ASCII 字符串表示的串行口名,该参数一般默认为空。
				   long Baud_Rate,//串行口的波特率,标准的波特率有:110、300、600、1200、2400、4800、9600、19200 等 
				   int Parity,//指定奇偶校验模式。0 表示无奇偶校验,1 表示奇校验,2则表示偶校验
				   int Data_Bits, //指定每帧信息中数据位的位数,可选的位数为 5、6、7、8
				   int Stop_Bits, //指定每帧信息中停止位的位数,可选的位数为 1 和 2
				   int Input_Queue_Size, //指定串行口输入队列的大小
 				   int Output_Queue_Size//指定串行口输出队列的大小
 				   );

例如

OpenComConfig (1, "", 9600, 0, 8, 1, 512, 512);
status = OpenComConfig(comValue,"",baudValue,checkValue,longValue,stopValue,MAX_BUF_NUM,MAX_BUF_NUM);

关闭串口CloseCom

CloseCom 关闭一个串行口
CloseCom (1)表示关闭串行口 1

CloseCom(comSelect);		//关闭串口 

串口读字符串ComRd

ComRd 从指定串行口的输入队列读取若干字节的信息

int ComRd (int COM_Port, char Buffer[ ], int Count);
//COM_Port:串口号
//Buffer[ ]:字符型数组,用于存储从串行口读回的信息。
//Count:整型变量,用于指定要读取的字节数。
char info[MAX_BUF_NUM+1]; 
int len = 0;    
len = GetInQLen(comSelect); // 得到Com口的输入队列数据缓存的大小 
ComRd(comSelect,info,len);  //将接收缓存中的数据全都读取到info[]里面

串口读字节ComRdByte

ComRdByte 从指定串行口的输入队列读取一个字节的信息

串口写字符串ComWrt

ComWrt 向指定串行口的输出队列写若干字节的信息

int ComWrt (int COM_Port, char Buffer[ ], int Count);
//COM_Port:串口号
//Buffer[]:欲输出的信息存在该数组中。
//Count:指定要输出的字节数。
ComWrt(COM_Port,Buffer,strlen(Buffer));

串口写字节ComWrtByte

ComWrtByte 向指定串行口的输出队列写一个字节的信息

清空输入缓存FlushInQ

FlushInQ 清空指定串行口的输入队列

FlushInQ(comValue);   //清空输入队列的缓存数据    

清空输出缓存FlushOutQ

FlushOutQ 清空指定串行口的输出队列

FlushOutQ(comValue);  //清空输出队列的缓存数据      

获取输入字符数GetInQLen

GetInQLen 获取指定串行口输入队列内的字符数

int len = 0;    
len = GetInQLen(comSelect); // 得到Com口的输入队列数据缓存的大小 

获取输出字符数GetOutQLen

GetOutQLen 获取指定串行口输出队列内的字符数

串口回调函数InstallComCallback

InstallComCallback 为指定串行口设置一个回调函数,当有相应的事件(比如串行口收到了特定的字符)发
生时,就调用指定的回调函数

int InstallComCallback (int COM_Port, int Event_Mask, 
 int Notify_Count, int Event_Character, 
 ComCallbackPtr Callback_Function, 
 void *Callback_Data);

Event_Mask:整型变量,用于指定一个事件,当该事件发生时,就调用指定的回调函数,如果要禁止回调函数的调用,该参数填 0。不同的常量名代表不同的事件,以下将几个常用的常量名解释如下
在这里插入图片描述
Notify_Count:整型变量,使 LWRS_RECEIVE 事件能够发生的输入队列内的最小字节数。
Event_Character:整型变量,用于指定触发 LWRS_RXFLAG 事件(串行口收到特定的字符)的字符值。
Callback_Function:用于指定被调用的回调函数名,而且回调函数必须按以下格式定义:

void CVICALLBACK CallbackFunctionName (int portNo,int eventMask, void *callbackData)

Callback_Data:该参数可以是指向某个数据的指针,也可以是一个整形变量,它将被传给上述的回调函数 Callback_Function。一般该参数填为 0 即可。

InstallComCallback (1, LWRS_RXFLAG, 0, (int)gEventChar[0] , Event_Char_Detect_Func, 0);
//当串行口 1 收到特定的字符时就调用函数Event_Char_Detect_Func ,提示用户串行口 1 收到了某个特定的字符。

设置握手方式SetCTSMode

/* 禁止硬件握手,即不用RTS/CTS和DTR/DSR */  
SetCTSMode(COM_Port,LWRS_HWHANDSHAKE_OFF);

接收超时SetComTime

SetComTime(comSelect,1); //设置一帧数据的接收超时时间为1s      

在此等待1s,1s内有帧返回则进行接收(程序往下执行),若没有,则超时继续执行代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/335643.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTML-CSS-js教程

HTML 双标签<html> </html> 单标签<img> html5的DOCTYPE声明 <!DOCTYPE html>html的基本骨架 <!DOCTYPE html> <html> </html>head标签 用于定义文档的头部。文档的头部包含了各种属性和信息&#xff0c;包括文档的标题&#…

【成为架构师课程系列】架构设计中的核心思维方法

架构设计中的核心思维方法 目录 前言 #一、抽象思维 #二、分层思维 #三、分治思维 #四、演化思维 #五、如何培养架构设计思维

leaflet 加载WKT数据(示例代码050)

第050个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中加载WKT文件,将图形显示在地图上。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果; 注意如果OpenStreetMap无法加载,请加载其他来练习 文章目录 示例效果配置方式示例源代码(共67行…

中国特色地流程管理系统,天翎让流程审批更简单

编者按&#xff1a;本文分析了国内企业在采购流程管理系统常遇到的一些难点&#xff0c;并从适应中国式流程管理模式的特点出发&#xff0c;介绍了符合中国特色的流程审批管理系统——天翎流程管理系统。关键词&#xff1a;可视化开发&#xff0c;拖拽建模&#xff0c;审批控制…

威联通ContainerStation部署Oracle11g

文章目录前言部署过程详解使用docker-compose文件创建容器临时开启NAS的SSH远程访问通过SSH客户端远程连接NAS进入容器创建用户拷贝容器中的数据库相关文件至宿主机在ContainerStation中修改docker-compose文件总结前言 ContainerStation本质上是对Docker可视化的一款软件&…

聊聊分布式锁——Redis和Redisson的方式

一、什么是分布式锁 分布式~~锁&#xff0c;要这么念&#xff0c;首先得是『分布式』&#xff0c;然后才是『锁』 分布式&#xff1a;这里的分布式指的是分布式系统&#xff0c;涉及到好多技术和理论&#xff0c;包括CAP 理论、分布式存储、分布式事务、分布式锁... 分布式系统…

Android开发

前言&#xff1a;因为这学期选了手机APP开发这门课&#xff0c;所以还是写个博客记录一下学习过程&#xff0c;包括安卓开发和ios开发。用到的资料包括课程PPT&#xff0c;和我在网上找的一些视频和资料。 1.Andriod入门 XML&#xff1a;描绘应用界面 &#xff08;决定APP长什…

NeurIPS/ICLR/ICML AI三大会国内高校和企业近年中稿量完整统计

点击文末公众号卡片&#xff0c;找对地方&#xff0c;轻松参会。 近日&#xff0c;有群友转发了一张网图&#xff0c;统计了近年来中国所有单位在NeurIPS、ICLR、ICML论文情况。原图如下&#xff1a; 中稿数100&#xff1a; 清华(1) 北大(2) 占比&#xff1a;22.6%。 累计数…

基于注解管理Bean

一、介绍从 Java 5 开始&#xff0c;Java 增加了对注解&#xff08;Annotation&#xff09;的支持&#xff0c;它是代码中的一种特殊标记&#xff0c;可以在编译、类加载和运行时被读取&#xff0c;执行相应的处理。开发人员可以通过注解在不改变原有代码和逻辑的情况下&#x…

全板电镀与图形电镀,到底有什么区别?

衔接上文&#xff0c;继续为朋友们分享普通单双面板的生产工艺流程。 如图&#xff0c;第四道主流程为电镀。 电镀的目的为&#xff1a; 适当地加厚孔内与板面的铜厚&#xff0c;使孔金属化&#xff0c;从而实现层间互连。 至于其子流程&#xff0c;可以说是非常简单&#x…

黑马】后台管理176-183

一、新建订单管理的分支二、创建一个订单管理的vue文件进行组件页面的路由配置import Order from ../components/order/Order.vue{path:/orders,component:Order},注意上面的components不要忘记少加一个s&#xff01;三&#xff0c;获取后台数据面包屑导航粘贴过来文本输入框&a…

手写MySQL补充章(十二)SQL语法解析之语法树

目录 模块分析 AST节点类型 SQL词法解析 举个例子 之前写的在第九章写的sql解析太简单了&#xff0c;SQL规范还有复杂的开闭括号以及嵌套查询&#xff0c;复杂SQL几乎不可能通过字符串匹配来实现。 本章以Druid SQL Parser解析SQL为例&#xff0c;进行分析。 模块分析 D…

如何做好需求管理?经验方法、模型、工具

需求管理能力是衡量产品经理能力的一个重要指标。因为需求是产品的基石&#xff0c;只有选取恰当的方法进行需求分析及管理&#xff0c;才能更好的构建产品方案&#xff0c;从而输出精准的产品定义。结合本人学习和自身经验&#xff0c;打算将需求管理分”需求挖掘”、”需求分…

102.第十九章 MySQL数据库 -- MySQL的备份和恢复(十二)

5.备份和恢复 5.1 备份恢复概述 5.1.1 为什么要备份 灾难恢复:硬件故障、软件故障、自然灾害、黑客攻击、误操作测试等数据丢失场景 参考链接: https://www.toutiao.com/a6939518201961251359/ 5.1.2 备份类型 完全备份,部分备份 完全备份:整个数据集 部分备份:只备份数…

shell的环境变量

一、什么是环境变量 环境变量由系统提前创建的&#xff0c;不仅在Shell编程方面&#xff0c;而且在Linux系统管理方面&#xff0c;都起着非常重要的作用。 打个比方&#xff0c;我们平时所用的编程语言如c语言&#xff0c;我们都会碰到变量的作用域的问题。比如在函数中 定义的…

新的一年软件测试行业的趋势能够更好?

如果说&#xff0c;2022年对于全世界来说&#xff0c;都是一场极大的挑战的话&#xff1b;那么&#xff0c;2023年绝对是机遇多多的一年。众所周知&#xff0c;随着疫情在全球范围内逐步得到控制&#xff0c;无论是国际还是国内的环境&#xff0c;都会呈现逐步回升的趋势&#…

【Redis高级-集群分片】

单机安装Redis首先需要安装Redis所需要的依赖&#xff1a;yum install -y gcc tclRedis安装包上传到虚拟机的任意目录&#xff1a;我放到了/tmp目录&#xff1a;解压缩&#xff1a;tar -zxvf /tmp/redis-6.2.4.tar.gz -C /tmp解压后&#xff1a;进入redis目录&#xff1a;cd /t…

剑指 Offer 41. 数据流中的中位数

题目 如何得到一个数据流中的中位数&#xff1f;如果从数据流中读出奇数个数值&#xff0c;那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值&#xff0c;那么中位数就是所有数值排序之后中间两个数的平均值。 例如&#xff0c;[2,3,4] 的中位数是…

从零开始的python基础教程(2)

九、Python Standard Library 1、Paths from pathlib import Path# Windows Path("C:\\Program Files\\Microsoft") # Or Path(r"C:\Program Files\Microsoft")# Mac Path("/usr/local/bin")Path() # Current Path("ecommerce/__init__.py…

AXI实战(一)-为AXI总线搭建简单的仿真测试环境

AXI实战(一)-搭建简单仿真环境 看完在本文后,你将可能拥有: 一个可以仿真AXI/AXI_Lite总线的完美主端(Master)或从端(Slave)一个使用SystemVerilog仿真模块的船信体验小何的AXI实战系列开更了,以下是初定的大纲安排: 欢迎感兴趣的朋友关注并支持,以下为正文部分 文章目录…