串口通信,帧与帧之间的时间间隔问题?9600波特率,帧将各在20ms以上

转载于:https://www.cnblogs.com/qqhfeng/p/7865574.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个比较具体的问题,需要详细解答。首先,LabWindows/CVI是一个基于C语言的开发环境,它提供了一系列的函数库和工具箱,可以用于开发各种测试、测量和控制应用程序。 针对你的问题,我们可以按照以下步骤实现: 1. 创建一个LabWindows/CVI的工程,并在主函数中添加初始化串口和波形图的代码,以确保能够正常发送数据和实时显示随机数。 2. 创建一个新的线程,用于生成随机数并将其实时显示在波形图上。可以使用rand函数生成随机数,使用PlotPoint函数将其实时显示在波形图上。 3. 在新的线程中,使用WriteComPort函数将随机数发送到其他设备。需要注意的是,在串口通信中,需要设置正确的波特率、数据位、停止位和校验位等参数,才能确保正常通信。 4. 在主线程中,使用Delay函数控制随机数生成的时间,确保每隔5ms就能生成一次随机数。同时,使用Delay函数控制发送数据的时间,确保每隔50ms就能发送一次数据。 5. 最后,在程序退出前,需要正确关闭串口以释放资源。 下面是一个简单的示例代码,仅供参考: ``` #include <userint.h> #include <utility.h> #include <ansi_c.h> #include <cvirte.h> #include <modules.h> #include <formatio.h> static int panelHandle; static int portHandle; static int graphHandle; int CVICALLBACK ThreadFunction (void *functionData) { while (1) { int randomNum = rand(); PlotPoint(graphHandle, VAL_DOUBLE, randomNum, VAL_DELAYED_DRAW); WriteComPort(portHandle, &randomNum, sizeof(randomNum)); Delay(0.005); } return 0; } int main (int argc, char *argv[]) { if (InitCVIRTE (0, argv, 0) == 0) return -1; panelHandle = LoadPanel(0, "MyPanel.uir", PANEL); portHandle = OpenComConfig("COM1", "9600,n,8,1", 0, 0, 0); graphHandle = GetCtrlHandle(panelHandle, PANEL_GRAPH); int threadId; int status = ThreadNew("MyThread", ThreadFunction, 0, THREAD_PRIORITY_TIME_CRITICAL, &threadId); DisplayPanel(panelHandle); RunUserInterface (); ThreadKill(threadId); CloseCom(portHandle); DiscardPanel(panelHandle); return 0; } ``` 以上代码仅供参考,具体实现还需要根据实际情况进行调整。同时,还需要注意多线程编程中的线程同步和互斥问题,以确保程序的正确性和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值