多路温度采集控制系统(6)串口采集

2024-04-18 04:18

本文主要是介绍多路温度采集控制系统(6)串口采集,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

嵌入式项目实践–多路温度采集控制系统(6)串口采集

串口采集温度数据

整个系统一共要采集4路温度数据,其中1、2路为串口采集。
因为只使用一个51单片机温湿度采集模块,程序中就实现一个串口采集线程。
注:如果没有真实的串口采集模块,可以在PC机编写串口程序产生随机数据模拟,但要使用USB串口线连接开发板的 ttySAC1、ttySAC2、 ttySAC3其中一个串口。

   while(1){if(read(fd_com1,data,1)>0){g_dev->temp_data[0]= data[0];//printf("#temp=%d\n",data[0]);}           sleep(2);}

串口采集程序代码

头文件

#ifndef __TC9000_COM_H_
#define __TC9000_COM_H_#define UART "/dev/ttySAC3" //同单片机通信B4800 8 n 1 int init_com(int fd);//初始化串口
void* com1_pro(void* arg);//串口处理线程#endif

串口线程

#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <pthread.h>    
#include <termios.h> #include "config.h"
#include "com_pro.h"extern struct st_sys g_dev[1]; //系统配置结构体全局变量int init_com(int fd)
{struct termios   options;//设置串口通信速率B4800if( tcgetattr( fd,&options)  !=  0){return(-1);}   cfsetispeed(&options, B4800);cfsetospeed(&options, B4800);//设置数据位8位   options.c_cflag &= ~CSIZE;options.c_cflag |= CS8; //设置无校验options.c_cflag &= ~PARENB;   options.c_iflag &= ~INPCK; //设置停止位1位options.c_cflag &= ~CSTOPB;    //raw modeoptions.c_lflag &= ~(ICANON|ECHO|ECHOE|ISIG);options.c_oflag &= ~OPOST;options.c_cc[VTIME] = 0; options.c_cc[VMIN] = 0; tcflush(fd,TCIFLUSH); //向系统提交新的串口设置参数 if (tcsetattr(fd,TCSANOW,&options) != 0){return (-1);}   return 0;
}void* com1_pro(void* arg)
{int fd_com1=-1;unsigned char data[2];printf("com3 recv pthread start...\n");fd_com1 = open(UART,O_RDWR|O_NONBLOCK|O_NOCTTY|O_NDELAY);   if(fd_com1 < 0){printf("Can't Open Serial Port1!\n");pthread_exit("0");              }   if(init_com(fd_com1) < 0){printf("Serial1 Init error!\n");pthread_exit("0");                  }   g_dev->status[0] = 1;printf("com3\n");while(1){if(read(fd_com1,data,1)>0){g_dev->temp_data[0]= data[0];//printf("#temp=%d\n",data[0]);}           sleep(2);}
}

这篇关于多路温度采集控制系统(6)串口采集的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/913742

相关文章

vue同页面多路由懒加载-及可能存在问题的解决方式

先上图,再解释 图一是多路由页面,图二是路由文件。从图一可以看出每个router-view对应的name都不一样。从图二可以看出层路由对应的组件加载方式要跟图一中的name相对应,并且图二的路由层在跟图一对应的页面中要加上components层,多一个s结尾,里面的的方法名就是图一路由的name值,里面还可以照样用懒加载的方式。 页面上其他的路由在路由文件中也跟图二是一样的写法。 附送可能存在

WordPress网创自动采集并发布插件

网创教程:WordPress插件网创自动采集并发布 阅读更新:随机添加文章的阅读数量,购买数量,喜欢数量。 使用插件注意事项 如果遇到404错误,请先检查并调整网站的伪静态设置,这是最常见的问题。需要定制化服务,请随时联系我。 本次更新内容 我们进行了多项更新和优化,主要包括: 界面设置:用户现在可以更便捷地设置文章分类和发布金额。代码优化:改进了采集和发布代码,提高了插件的稳定

小红书商家电话采集软件使用指南

使用小红书商家电话采集软件可以提高商家电话的采集效率,以下是使用指南及附带代码。 步骤一:安装Python和相关库 首先,确保你的电脑已经安装了Python运行环境(建议安装Python3版本)。安装完成后,同样需要安装一些相关的库,如requests、beautifulsoup4等。在命令行窗口中输入以下命令进行安装: pip install requestspip install bea

温湿度采集及OLED显示

目录 软件I2C和硬件I2C每隔2秒钟采集一次温湿度数据,显示到OLED上,同时通过串口发送到上位机的“串口助手”软件 软件I2C和硬件I2C "I2C"代表Inter-Integrated Circuit,是一种用于在数字电路之间进行通信的串行通信协议。软件I2C和硬件I2C是两种实现这种协议的方式。 软件I2C是通过软件来模拟I2C通信协议的实现方式。在这种情况下,微控制

407串口01发送

实验一: 工程。 链接:https://pan.baidu.com/s/1g8DV4yZWOix0BbcZ08LYDQ?pwd=2176 提取码:2176 串口1的使用。发送功能。 单片机发送信息到电脑。 通过串口进行通信。 首先单片机这边。 单片机这边,需要对单片机的串口模块进行使能初始化,设置串口的格式。 单片机和电脑的串口收发格式要配置一致。不然A和B肯定通信不成功,鸡和鸭讲,

xilinx FPGA 串口设计笔记

xilinx FPGA  串口设计笔记 在设计中,需要用 FPGA 读取 GPS 内部的信息,GPS 的通信方式为串口,所以在 FPGA 中移植了串口程序。 本次移植的程序源代码是特权的串口程序,本以为移植应该很快就能完成, 但其中还是 出了一写小问题,耽误了不少的时间,下面将问题进行一个总结! 以下是串口的时序: 在设计中,耽误时间最长的问题就是数据老是出错,为了找出问题

【单片机毕业设计选题24024】-房间自动除湿控制系统

系统功能: 系统分为手动和自动模式,上电默认为自动模式。自动模式下如果获取到湿度 值大于设定的湿度值则自动打开风扇,手动模式下手动开关风扇。 系统上电后显示“欢迎使用除湿控制系统请稍后”,两秒钟后进入主页面显示。 第一行显示系统模式,手动或自动模式 第二行显示获取到的温湿度 第三行显示设置的湿度阈值 第四行显示风扇状态和系统报警状态,风扇状态有开关状态,系统状态和OK和 NG状态。

【STM32c8t6】AHT20温湿度采集

【STM32c8t6】AHT20温湿度采集 一、探究目的二、探究原理2.1 I2C2.1. 硬件I2C2.1. 软件I2C 2.2 AHT20数据手册 三、实验过程3.1 CubeMX配置3.2 实物接线图3.3 完整代码3.4 效果展示 四、探究总结 一、探究目的 学习I2C总线通信协议,使用STM32F103完成基于I2C协议的AHT20温湿度传感器的数据采集,并将采集的温

TX2 关闭console serial使用该串口

由于项目变更,GPU型号从Tx1变成Tx2,原来的硬件接口没有变,但是把原来UART0的console serial功能关闭变成一个串口使用的方法没法使用了。这就导致了数据通过该串口发送的数据变的很有问题,无法使用了。 经过测试,终于找到了解决的方法。 首先在虚拟机上,安装编辑设备树的软件: $sudo apt-get update $sudo apt-get install device

JetSon Tx1 串口使用记录

最近在学习使用Jetson Tx1,下面是使用串口遇到的问题,做为我的第一篇博客。 Jetson Tx1串口是TTL电平。 Jetson Tx1的UART0在Linux上的设备号是“/dev/tty0”,但是在Tx1刷的系统中,UART0默认是做为console serail设备使用的,这个具体有什么作用,我也不大清楚了,百度一下也不是很懂。这就导致了在Linux上使用串口调试工具和PC机相连