基于STM32设计的生理监测装置
一、项目功能要求
设计并制作一个生理监测装置,能够实时监测人体的心电图、呼吸和温度,并在LCD液晶显示屏上显示相关数据。
随着现代生活节奏的加快和环境的变化,人们对身体健康的关注程度越来越高。为了及时掌握自身的生理状况,进行健康管理和疾病预防,监测身体的生理参数成为一种重要的需求。因此,设计一个能够实时监测人体的心电图、呼吸和温度的生理监测装置具有重要的意义。
该生理监测装置主要用于个人健康管理和远程监护等应用场景。个人健康管理方面,用户可以通过这个装置了解自己的心电图、呼吸和体温等生理参数,及时发现异常情况并采取相应的措施,如调整生活习惯、咨询医生等。远程监护方面,装置可以将实时的生理参数数据传输到云端或其他设备,供医生或家属远程查看,以便及时干预和诊断。
与传统的生理监测设备相比,该装置具有以下优势:
- 实时性:装置能够实时监测和显示心电图、呼吸和温度等生理参数,用户可以随时了解自己的身体状况。
- 简便性:装置采用便携式设计,用户可以随身携带,方便随时监测。
- 实用功能:通过对采集到的数据进行分析和判断,装置可以提供简单的健康状况提示,帮助用户及时发现问题并采取措施。
- 扩展性:装置可以添加报警功能、存储功能和无线通信功能等增强功能,满足不同用户的需求。
这个生理监测装置的设计和制作有助于提高个人健康管理的水平,为用户提供及时、准确的生理参数信息,以便更好地保护身体健康。同时,它也可以为医生和家属提供远程监护的手段,帮助他们随时了解病人的生理状况。该装置在现代健康管理和医疗保健领域具有广阔的应用前景和市场潜力。
二、基本要求
【1】心电信号监测:
- 采用PulseSensor传感器获取心电信号。
- 进行AD转换,将模拟信号转换为数字信号。
- 使用STM32F103C8T6单片机进行数据处理。
- 在LCD显示屏上显示心电图。
【2】呼吸信号监测:
- 采用PulseSensor传感器获取呼吸信号。
- 进行AD转换,将模拟信号转换为数字信号。
- 使用STM32F103C8T6单片机进行数据处理。
- 在LCD显示屏上显示呼吸数据。
【3】温度监测:
- 采用MT70传感器测量人体温度。
- 进行AD转换,将模拟信号转换为数字信号。
- 使用STM32F103C8T6单片机进行数据处理。
- 在LCD显示屏上显示温度数据,测量精度不大于0.10℃。
【4】人体健康状况判断:
- 根据测量到的生理参数数据,进行简单的健康状况判断。
- 使用STM32F103C8T6单片机进行数据分析与判断。
二、发挥部分
- 健康状况判断:
- 分析心电图、呼吸和温度等数据,根据预设的阈值判断是否存在异常情况。
- 在LCD显示屏上显示人体健康状况的简单提示信息。
- 其他增强功能:
- 可以添加报警功能,当监测到异常情况时,通过声音或震动提醒用户。
- 可以存储和记录历史数据,以便后续分析和参考。
- 可以添加无线通信模块,将实时数据传输到其他设备或云端进行远程监测。
三、设计方案
【1】主控芯片:
- 选择STM32F103C8T6单片机作为主控芯片,具有足够的GPIO、ADC等功能,并可方便地集成硬件模块。
【2】显示屏:
- 选择0.96寸IIC接口的OLED显示屏,具有高分辨率和低功耗的特点,适合用于显示监测数据。
【3】传感器:
- 心电信号采集使用PulseSensor传感器输出。
- 呼吸信号采集使用PulseSensor传感器输出。
- 温度测量使用MT70传感器。
【4】AD转换:
- 选择ADS1292作为心电信号和呼吸信号的AD转换芯片。
- 在STM32F103C8T6单片机上配置ADC,用于温度传感器的AD转换。
【5】数据处理与显示:
- 使用STM32F103C8T6单片机进行数据处理和健康状况判断。
- 通过IIC接口将数据发送给OLED显示屏进行实时显示。
【6】健康状况判断算法:
- 根据心电图、呼吸和温度数据的变化趋势和预设的阈值进行简单的健康状况判断。
四、代码实现
4.1 采集代码
ADS1292模块,进行3路模拟信号采集转换实现代码。
#include "stm32f10x.h"// 定义SPI接口引脚
#define ADS1292_SPI SPI1
#define ADS1292_CS_PIN GPIO_Pin_4
#define ADS1292_CS_PORT GPIOA// 定义命令字节
#define ADS1292_CMD_SDATAC 0x11 // 停止连续数据传输命令
#define ADS1292_CMD_RREG 0x20 // 读寄存器命令
#define ADS1292_CMD_WREG 0x40 // 写寄存器命令
#define ADS1292_CMD_START 0x08 // 启动数据转换命令// 函数声明
void ADS1292_SPI_Config(void);
void ADS1292_Start_Conversion(void);int main(void)
{// 初始化系统时钟、GPIO等// ...// 配置ADS1292的SPI接口ADS1292_SPI_Config();// 启动ADS1292的数据转换ADS1292_Start_Conversion();// 定义读取数据的命令字节
#define ADS1292_CMD_RDATAC 0x10// 定义数据缓冲区大小
#define BUFFER_SIZE 100// 数据缓冲区
uint8_t dataBuffer[BUFFER_SIZE];while (1)
{// 启动数据转换ADS1292_Start_Conversion();// 等待一段时间,确保数据转换完成// 这里可以根据具体情况调整延时时间Delay(100); // 假设延时100毫秒// 读取采集到的数据GPIO_ResetBits(ADS1292_CS_PORT, ADS1292_CS_PIN);SPI_SendData(ADS1292_SPI, ADS1292_CMD_RDATAC);while (SPI_I2S_GetFlagStatus(ADS1292_SPI, SPI_I2S_FLAG_BSY) == SET);for (int i = 0; i < BUFFER_SIZE; i++){SPI_SendData(ADS1292_SPI, 0xFF); // 发送一个无关的字节以触发数据传输while (SPI_I2S_GetFlagStatus(ADS1292_SPI, SPI_I2S_FLAG_RXNE) == RESET);dataBuffer[i] = SPI_ReceiveData(ADS1292_SPI); // 读取接收到的数据}GPIO_SetBits(ADS1292_CS_PORT, ADS1292_CS_PIN);// 处理采集到的数据// ...// 循环进行其他操作// ...
}
}// 配置ADS1292的SPI接口
void ADS1292_SPI_Config(void)
{GPIO_InitTypeDef GPIO_InitStructure;SPI_InitTypeDef SPI_InitStructure;// 使能SPI时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_SPI1, ENABLE);// 配置CS引脚为推挽输出GPIO_InitStructure.GPIO_Pin = ADS1292_CS_PIN;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(ADS1292_CS_PORT, &GPIO_InitStructure);// 配置SPI引脚GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_7;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);// 配置SPI参数SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;SPI_InitStructure.SPI_Mode = SPI_Mode_Master;SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;SPI_InitStructure.SPI_CRCPolynomial = 7;SPI_Init(ADS1292_SPI, &SPI_InitStructure);// 使能SPISPI_Cmd(ADS1292_SPI, ENABLE);
}// 启动ADS1292的数据转换
void ADS1292_Start_Conversion(void)
{// 禁用ADS1292的连续数据传输模式GPIO_ResetBits(ADS1292_CS_PORT, ADS1292_CS_PIN);SPI_SendData(ADS1292_SPI, ADS1292_CMD_SDATAC);while (SPI_I2S_GetFlagStatus(ADS1292_SPI, SPI_I2S_FLAG_BSY) == SET);GPIO_SetBits(ADS1292_CS_PORT, ADS1292_CS_PIN);// 发送启动转换命令GPIO_ResetBits(ADS1292_CS_PORT, ADS1292_CS_PIN);SPI_SendData(ADS1292_SPI, ADS1292_CMD_START);while (SPI_I2S_GetFlagStatus(ADS1292_SPI, SPI_I2S_FLAG_BSY) == SET);GPIO_SetBits(ADS1292_CS_PORT, ADS1292_CS_PIN);
}
代码里调用ADS1292_Start_Conversion()
函数启动数据转换,等待一段时间确保数据转换完成。通过发送ADS1292_CMD_RDATAC
命令并读取数据缓冲区,从ADS1292模块中读取采集到的数据。
4.2 OLED显示屏驱动代码
包含了基本的初始化、清屏、设置位置、显示字符串、显示数字和显示浮点数等功能。
#include "stm32f10x.h"
#include "delay.h"
#include "i2c.h"#define OLED_ADDRESS 0x78 // OLED显示屏的I2C地址// OLED缓存数组(128x64像素,每个字节代表8个像素)
unsigned char OLED_Buffer[128 * 8];// 向OLED显示屏发送命令
void OLED_WriteCmd(unsigned char cmd) {I2C_Start();I2C_SendByte(OLED_ADDRESS);I2C_SendByte(0x00); // 发送命令标志位I2C_SendByte(cmd);I2C_Stop();
}// 向OLED显示屏发送数据
void OLED_WriteData(unsigned char data) {I2C_Start();I2C_SendByte(OLED_ADDRESS);I2C_SendByte(0x40); // 发送数据标志位I2C_SendByte(data);I2C_Stop();
}// 初始化OLED显示屏
void OLED_Init() {// 初始化I2C总线I2C_Init();// 初始化OLED显示屏OLED_WriteCmd(0xAE); // 关闭显示OLED_WriteCmd(0xD5); // 设置时钟分频因子OLED_WriteCmd(0x80); // 默认值OLED_WriteCmd(0xA8); // 设置驱动路数OLED_WriteCmd(0x3F); // 1/64 驱动OLED_WriteCmd(0xD3); // 设置显示偏移OLED_WriteCmd(0x00); // 默认值OLED_WriteCmd(0x40); // 设置显示开始行OLED_WriteCmd(0x8D); // 设置电荷泵OLED_WriteCmd(0x14); // 使能电荷泵OLED_WriteCmd(0x20); // 设置内存地址模式OLED_WriteCmd(0x00); // 水平寻址模式OLED_WriteCmd(0xA1); // 设置段重定义OLED_WriteCmd(0xC8); // 设置COM扫描方向OLED_WriteCmd(0xDA); // 设置COM硬件引脚配置OLED_WriteCmd(0x12); // 默认值OLED_WriteCmd(0x81); // 设置对比度控制OLED_WriteCmd(0xCF); // 默认值OLED_WriteCmd(0xD9); // 设置预充电周期OLED_WriteCmd(0xF1); // 默认值OLED_WriteCmd(0xDB); // 设置VCOMH Deselect LevelOLED_WriteCmd(0x40); // 默认值OLED_WriteCmd(0xA4); // 设置全局显示OLED_WriteCmd(0xA6); // 设置显示方式,默认正常显示OLED_Clear(); // 清屏OLED_WriteCmd(0xAF); // 打开显示
}// 清屏
void OLED_Clear() {for (int i = 0; i < 8; i++) {OLED_WriteCmd(0xB0 + i); // 设置页地址for (int j = 0; j < 128; j++) {OLED_WriteCmd(0x00); // 清空数据OLED_Buffer[j + i * 128] = 0x00;}}
}// 设置显示位置
void OLED_SetPos(unsigned char row, unsigned char column) {OLED_WriteCmd(0xB0 + row); // 设置页地址OLED_WriteCmd(0x00 + (8 * column & 0x0F)); // 设置列低地址OLED_WriteCmd(0x10 + ((8 * column >> 4) & 0x0F)); // 设置列高地址
}// 显示字符串
void OLED_ShowString(const char* str) {while (*str) {for (int i = 0; i < 8; i++) {OLED_WriteData(font8x16[(*str - ' ')*16 + i]); // 显示字体数据OLED_Buffer[column + row * 128] = font8x16[(*str - ' ')*16 + i]; // 更新缓存column++;}str++;}
}// 显示数字
void OLED_ShowNum(int num, unsigned char digit) {char str[10];sprintf(str, "%d", num);OLED_ShowString(str);
}// 显示浮点数
void OLED_ShowFloat(float num, unsigned char decimal) {char str[10];sprintf(str, "%.*f", decimal, num);OLED_ShowString(str);
}
4.3 OLED显示体温、心率
#include "stm32f10x.h"
#include "delay.h"
#include "oled.h"// 定义体温值和心率值
float temperature = 37.6;
int heartRate = 90;int main(void) {// 初始化OLED显示屏OLED_Init();// 清屏OLED_Clear();// 设置字体大小OLED_SetFontSize(16);// 设置显示位置OLED_SetPos(0, 0);// 显示体温值OLED_ShowString("Temperature: ");OLED_ShowFloat(temperature, 1);// 设置显示位置OLED_SetPos(2, 0);// 显示心率值OLED_ShowString("Heart Rate: ");OLED_ShowNum(heartRate, 0);while (1) {// 主循环}
}
五、总结
本文章描述了生理监测装置整个项目的设计方案,设计过程;通过采集心电图、呼吸和温度数据,并使用STM32F103C8T6单片机进行数据处理和显示,实现了实时监测和显示生理参数的功能。提出了健康状况判断和其他增强功能的设计思路。该装置可以用于个人的健康监测和远程监护等场景,具有一定的实用性和扩展性。
相关文章:
基于STM32设计的生理监测装置
一、项目功能要求 设计并制作一个生理监测装置,能够实时监测人体的心电图、呼吸和温度,并在LCD液晶显示屏上显示相关数据。 随着现代生活节奏的加快和环境的变化,人们对身体健康的关注程度越来越高。为了及时掌握自身的生理状况,…...
Go-Python-Java-C-LeetCode高分解法-第五周合集
前言 本题解Go语言部分基于 LeetCode-Go 其他部分基于本人实践学习 个人题解GitHub连接:LeetCode-Go-Python-Java-C Go-Python-Java-C-LeetCode高分解法-第一周合集 Go-Python-Java-C-LeetCode高分解法-第二周合集 Go-Python-Java-C-LeetCode高分解法-第三周合集 G…...
【前端知识】前端加密算法(base64、md5、sha1、escape/unescape、AES/DES)
前端加密算法 一、base64加解密算法 简介:Base64算法使用64个字符(A-Z、a-z、0-9、、/)来表示二进制数据的64种可能性,将每3个字节的数据编码为4个可打印字符。如果字节数不是3的倍数,将会进行填充。 优点࿱…...
leetcode 925. 长按键入
2023.9.7 我的基本思路是两数组字符逐一对比,遇到不同的字符,判断一下typed与上一字符是否相同,不相同返回false,相同则继续对比。 最后要分别判断name和typed分别先遍历完时的情况。直接看代码: class Solution { p…...
[CMake教程] 循环
目录 一、foreach()二、while()三、break() 与 continue() 作为一个编程语言,CMake也少不了循环流程控制,他提供两种循环foreach() 和 while()。 一、foreach() 基本语法: foreach(<loop_var> <items>)<commands> endfo…...
Mojo安装使用初体验
一个声称比python块68000倍的语言 蹭个热度,安装试试 系统配置要求: 不支持Windows系统 配置要求: 系统:Ubuntu 20.04/22.04 LTSCPU:x86-64 CPU (with SSE4.2 or newer)内存:8 GiB memoryPython 3.8 - 3.10g or cla…...
艺术与AI:科技与艺术的完美融合
文章目录 艺术创作的新工具生成艺术艺术与数据 AI与互动艺术虚拟现实(VR)与增强现实(AR)机器学习与互动性 艺术与AI的伦理问题结语 🎉欢迎来到AIGC人工智能专栏~艺术与AI:科技与艺术的完美融合 ☆* o(≧▽≦…...
Android常用的工具“小插件”——Widget机制
Widget俗称“小插件”,是Android系统中一个很常用的工具。比如我们可以在Launcher中添加一个音乐播放器的Widget。 在Launcher上可以添加插件,那么是不是说只有Launcher才具备这个功能呢? Android系统并没有具体规定谁才能充当“Widget容器…...
探索在云原生环境中构建的大数据驱动的智能应用程序的成功案例,并分析它们的关键要素。
文章目录 1. Netflix - 个性化推荐引擎2. Uber - 实时数据分析和决策支持3. Airbnb - 价格预测和优化5. Google - 自然语言处理和搜索优化 🎈个人主页:程序员 小侯 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏 ✨收录专…...
jupyter 添加中文选项
文章目录 jupyter 添加中文选项1. 下载中文包2. 选择中文重新加载一下,页面就变成中文了 jupyter 添加中文选项 1. 下载中文包 pip install jupyterlab-language-pack-zh-CN2. 选择中文 重新加载一下,页面就变成中文了 这才是设置中文的正解ÿ…...
系列十、Java操作RocketMQ之批量消息
一、概述 RocketMQ可以一次性发送一组消息,那么这一组消息会被当做一个消息进行消费。 二、案例代码 2.1、pom 同系列五 2.2、RocketMQConstant 同系列五 2.3、BatchConsumer package org.star.batch.consumer;import cn.hutool.core.util.StrUtil; import lom…...
leetcode1两数之和
题目: 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你…...
近年GDC服务器分享合集(四): 《火箭联盟》:为免费游玩而进行的扩展
如今,网络游戏采用免费游玩(Free to Play)加内购的比例要远大于买断制,这是因为前者能带来更低的用户门槛。甚至有游戏为了获取更多的用户,选择把原来的买断制改为免费游玩,一个典型的例子就是最近的网易的…...
android反射详解
1,反射的定义 一般情况下,我们使用某个类时必定知道它是什么类,是用来做什么的,并且能够获得此类的引用。于是我们直接对这个类进行实例化,之后使用这个类对象进行操作。 反射则是一开始并不知道我要初始化的类对象是…...
Python 反射和动态执行
反射主要应用于类的对象上,在运行时,将对象中的属性和方法反射出来,通过字符串对对象成员(属性、方法)进行查找、获取、删除、添加成员等动作,是一种基于字符串的事件驱动技术。 python是一门动态语言&…...
计算机网络常见端口号
端口号标识了一个主机上进行通信的不同的应用程序。比如网站服务器80端口一般都是开启的,等你来连接。 端口划分: (1)常用端口,公共端口(保留给公共服务所使用),端口号为0-1023之间…...
SpringBoot / Vue 对SSE的基本使用(简单上手)
一、SSE是什么? SSE技术是基于单工通信模式,只是单纯的客户端向服务端发送请求,服务端不会主动发送给客户端。服务端采取的策略是抓住这个请求不放,等数据更新的时候才返回给客户端,当客户端接收到消息后,…...
Qt串口基本设置与协议收发
前言 1.一直都想要做一个Qt上位机,趁着这个周末有时间,动手写一下 2.comboBox没有点击的信号,所以做了一个触发的功能 3.Qt的数据类型很奇怪,转来转去的我也搞得很迷糊 4.给自己挖个坑,下一期做一个查看波形的上位…...
interview3-微服务与MQ
一、SpringCloud篇 (1)服务注册 常见的注册中心:eureka、nacos、zookeeper eureka做服务注册中心: 服务注册:服务提供者需要把自己的信息注册到eureka,由eureka来保存这些信息,比如服务名称、…...
kafka详解一
kafka详解一 1、消息引擎背景 根据维基百科的定义,消息引擎系统是一组规范。企业利用这组规范在不同系统之间传递语义准确的消息,实现松耦合的异步式数据传递. 即:系统 A 发送消息给消息引擎系统,系统 B 从消息引擎系统中读取 A…...
Flutter yuv 转 rgb
1、引用yuv_converter库 yuv_converter: ^0.0.1 2、导入头文件: import package:yuv_converter/yuv_converter.dart;3、yuv转rgb YuvConverter.yuv420NV21ToRgba8888(yuvRawData, 512, 512) 根据yuv格式选择不同的api。 举个例子: void initState() …...
MySQL——子查询
2023.9.8 相关学习笔记: #子查询 /* 含义: 出现在其他语句中的select语句,称为子查询或内查询 外部的查询语句,称为主查询或外查询分类: 按子查询出现的位置:select后面:仅仅支持标量子查询fro…...
Java学习笔记---多态
面向对象三大特征之一(继承,封装,多态) 多态的应用场景:根据传递对象的不同,调用不同的show方法 一、多态的定义 同类型的对象,表现出的不同形态(对象的多种形态) 二…...
2023-09-10 LeetCode每日一题(课程表 II)
2023-09-10每日一题 一、题目编号 210. 课程表 II二、题目链接 点击跳转到题目位置 三、题目描述 现在你总共有 numCourses 门课需要选,记为 0 到 numCourses - 1。给你一个数组 prerequisites ,其中 prerequisites[i] [ai, bi] ,表示在…...
合并区间【贪心算法】
合并区间 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 class Solution {public int[][] merge(int[…...
2023,软件测试人的未来在哪里?
2023年,IT行业出现空前的萧条,首先是年初一开始各大厂像着了魔似的不约而同的纷纷裁员、降薪、奖金包缩水,随之而来的是需求萎缩,HC减少或封锁等等。 而有幸未被列入裁员名单的在职人员,庆幸之余也心有余悸࿰…...
Python中的Numpy向量计算(R与Python系列第三篇)
目录 一、什么是Numpy? 二、如何导入NumPy? 三、生成NumPy数组 3.1利用序列生成 3.2使用特定函数生成NumPy数组 (1)使用np.arange() (2)使用np.linspace() 四、NumPy数组的其他常用函数 (1)np.z…...
LeetCode刷题笔记【27】:贪心算法专题-5(无重叠区间、划分字母区间、合并区间)
文章目录 前置知识435. 无重叠区间题目描述参考<452. 用最少数量的箭引爆气球>, 间接求解直接求"重叠区间数量" 763.划分字母区间题目描述贪心 - 建立"最后一个当前字母"数组优化marker创建的过程 56. 合并区间题目描述解题思路代码① 如果有重合就合…...
nvidia-smi 命令详解
nvidia-smi 命令详解 1. nvidia-smi 面板解析2. 显存与GPU的区别 Reference: nvidia-smi命令详解 相关文章: nvidia-smi nvcc -V 及 CUDA、cuDNN 安装 nvidia-smi(NVIDIA System Management Interface) 是一种命令行实用程序,用于监控和管理 NVIDIA G…...
fork()函数的返回值
在程序中,int pd fork() 是一个典型的 fork() 调用。fork() 函数会创建一个新的进程,然后在父进程中返回子进程的进程ID(PID),在子进程中返回0。所以 pd 的值会根据当前进程是父进程还是子进程而有所不同:…...
公关策划网站建设/河南seo和网络推广
接收中文乱码 EntityUtils.toString(entity,"UTF-8"); 请求中文乱码 StringEntity s new StringEntity(json.toString());s.setContentEncoding("UTF-8");...
南通云网站建设/50个市场营销经典案例
PAGE 1位图文件信息的提取和二值化处理实验步骤:1.拷贝MinGW文件夹至C:(路径为C:\MinGW)2.编辑setc.bat文件,然后运行此批处理以设置路径。3.编辑hdr.h 和hdr.c文件4.编辑bmphdr.c文件,然后在当前文件路径下,使用DOS命令ÿ…...
大宗商品交易平台/赣州seo优化
都说药补不如食补,特别是对于血栓这种长期积累的病变,食物是更好的选择,因为没有副作用,安全,长期吃都没问题。 对于血栓来说,最好的天然防栓“药”就是核桃。核桃是天然防血栓“药”。 核桃含有丰富的不…...
wordpress 评价插件/西部数码域名注册
安装MySQL yum install -y mysql mysql-server 当你修改了配置文件后,你需要重启 mysqld 才能使这些修改生效(service mysqld restart)。 要想检查 mysqld 进程是否已经开启,可以使用下面的命令: pgrep mysqld 安装MySQL动态库相关(libmysqlc…...
海尔网站建设策划书/正规seo一般多少钱
1.对c语言的看法在上大学之前,我对这个专业仅仅的认知是学电脑的,对编程来说更是一无所知,而我选择计算机专业完全是因为我从小就喜欢玩电脑,仅此而已。记得小时候还不会拼音和英文的时候,我玩的第一个游戏就是侠盗飞车…...
招标信息网哪个比较好/优化大师下载安装app
1、vi编辑器visual interface 可视化接口,类似windows的记事本2、vi编辑器的操作模式(esc键切换)command mode - 命令模式insert mode - 输入模式 last line mode - 底行模式(尾行,末行)3、简单操作步骤&am…...