多路温度采集控制系统(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

相关文章

Python模拟串口通信的示例详解

《Python模拟串口通信的示例详解》pySerial是Python中用于操作串口的第三方模块,它支持Windows、Linux、OSX、BSD等多个平台,下面我们就来看看Python如何使用pySe... 目录1.win 下载虚www.chinasem.cn拟串口2、确定串口号3、配置串口4、串口通信示例5

利用Python调试串口的示例代码

《利用Python调试串口的示例代码》在嵌入式开发、物联网设备调试过程中,串口通信是最基础的调试手段本文将带你用Python+ttkbootstrap打造一款高颜值、多功能的串口调试助手,需要的可以了... 目录概述:为什么需要专业的串口调试工具项目架构设计1.1 技术栈选型1.2 关键类说明1.3 线程模

如何使用C#串口通讯实现数据的发送和接收

《如何使用C#串口通讯实现数据的发送和接收》本文详细介绍了如何使用C#实现基于串口通讯的数据发送和接收,通过SerialPort类,我们可以轻松实现串口通讯,并结合事件机制实现数据的传递和处理,感兴趣... 目录1. 概述2. 关键技术点2.1 SerialPort类2.2 异步接收数据2.3 数据解析2.

Python结合Flask框架构建一个简易的远程控制系统

《Python结合Flask框架构建一个简易的远程控制系统》这篇文章主要为大家详细介绍了如何使用Python与Flask框架构建一个简易的远程控制系统,能够远程执行操作命令(如关机、重启、锁屏等),还... 目录1.概述2.功能使用系统命令执行实时屏幕监控3. BUG修复过程1. Authorization

Python实现多路视频多窗口播放功能

《Python实现多路视频多窗口播放功能》这篇文章主要为大家详细介绍了Python实现多路视频多窗口播放功能的相关知识,文中的示例代码讲解详细,有需要的小伙伴可以跟随小编一起学习一下... 目录一、python实现多路视频播放功能二、代码实现三、打包代码实现总结一、python实现多路视频播放功能服务端开

多路转接之select(fd_set介绍,参数详细介绍),实现非阻塞式网络通信

目录 多路转接之select 引入 介绍 fd_set 函数原型 nfds readfds / writefds / exceptfds readfds  总结  fd_set操作接口  timeout timevalue 结构体 传入值 返回值 代码 注意点 -- 调用函数 select的参数填充  获取新连接 注意点 -- 通信时的调用函数 添加新fd到

基于人工智能的智能家居语音控制系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 随着物联网(IoT)和人工智能技术的发展,智能家居语音控制系统已经成为现代家庭的一部分。通过语音控制设备,用户可以轻松实现对灯光、空调、门锁等家电的控制,提升生活的便捷性和舒适性。本文将介绍如何构建一个基于人工智能的智能家居语音控制系统,包括环境准备

Verybot之OpenCV应用一:安装与图像采集测试

在Verybot上安装OpenCV是很简单的,只需要执行:         sudo apt-get update         sudo apt-get install libopencv-dev         sudo apt-get install python-opencv         下面就对安装好的OpenCV进行一下测试,编写一个通过USB摄像头采

安卓开发板_联发科MTK开发评估套件串口调试

串口调试 如果正在进行lk(little kernel ) 或内核开发,USB 串口适配器( USB 转串口 TTL 适配器的简称)对于检查系统启动日志非常有用,特别是在没有图形桌面显示的情况下。 1.选购适配器 常用的许多 USB 转串口的适配器,按芯片来分,有以下几种: CH340PL2303CP2104FT232 一般来说,采用 CH340 芯片的适配器,性能比较稳定,价

力扣 739. 每日温度【经典单调栈题目】

1. 题目 理解题意: 1.1. 给一个温度集合, 要返回一个对应长度的结果集合, 这个结果集合里面的元素 i 是 当前 i 位置的元素的下一个更高温度的元素的位置和当前 i 位置的距离之差, 若是当前元素不存在下一个更高温度的元素, 则这个位置用0代替; 2. 思路 本题用单调栈来求解;单调栈就适用于来求当前元素左边或者右边第一个比当前元素大或者小的元素;【单调栈:让栈中的元素保持单调