功能介绍:
stm32单片机通过串口将温度数据在上位机软件中显示,上位机软件可以将温度数据保存在mysql数据库中,同时能对数据进行增删改查。
前期准备:
1、安装Visual Stdio 2013
2、安装MySQL数据库 安装教程
3、下载、安装mysql odbc驱动,mysql-connector-odbc-8.0.28-win32.msi
硬件准备:
1、单片机,32、51都行
2、温度传感器DS18B20
3、USB转TTL模块,保证能够实现串口通信
4、ST-LINK下载器,用于下载32单片机程序
功能演示:
上位机软件

数据库

代码实现:
32代码:
main.c文件
#include "system.h"
#include "SysTick.h"
#include "led.h"
#include "usart.h"
#include "ds18b20.h"
int main()
{
float temper;
SysTick_Init(72);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断优先级分组 分2组
LED_Init();
USART1_Init(9600);
while(DS18B20_Init())
{
printf("DS18B20检测失败,请插好!\r\n");
delay_ms(500);
}
printf("DS18B20检测成功!\r\n");
while(1)
{
temper=DS18B20_GetTemperture();
printf("Temp:%.1fC\r\n",temper);
delay_ms(1500);
}
}
上位机软件代码:
关注博主,并且有礼貌地问我拿就行了。
关于数据库的一些操作:
使用管理员身份运行cmd命令
e: //我的数据库在e盘
//把当前路径修改为:…\mysql-8.0.18-winx64\bin。
cd E:\DataBase\mysql-8.0.25-winx64\bin
//启动服务,名字是localmysql
net start localmysql
//登陆数据库,用户名root
mysql -u root -p
//输入密码
123456
// 新建数据库uartdb_csdn
create database uartdb_csdn;
//连接数据库uartdb_csdn
use uartdb_csdn;
//新建数据表
create table mytable(id int primary key, data varchar(10), time varchar(30));
//插入数据
insert into mytable(id,data,time) values(1,26, '2022-3-26 20:06:30');
//查看mytable表中所有数据
select * from mytable;
//删除mytable表
drop table mytable; //现在不删
通过以上操作,我们就创建了一个mytable的数据表,接下来就是通过上位机软件将温度数据存储在这张表中。
修改上位机代码:
拿到我的代码后,如果想要将别的数据存储到自己的数据库,可以这样操作。
1、先移除/删除mytable的源文件和头文件

选中工程名称右击-》添加-》类

MFC-》MFC ODBC使用者-》确定

选中快照-》数据源(S)…

新建(N)…

选择MySQL ODBC 8.0 UniCode Driver,若无此选项,需要安装mysql odbc驱动

预览®…

给数据源起个名字,然后保存

下一步-》完成

按照下面填写,root为数据库用户名,Password为数据库密码-》ok

选择我们刚刚新建的数据源dataSource2.dsn-》确定

填写密码后OK

选中我们之前在数据库创建的mytable数据表-》确定

完成

正常情况,点确定即可

编译后出现如下错误,把它(#error…)注释掉即可

重定义错误删掉或注释掉

找到mytable.c文件,注释掉或删掉重复的内容,将6改为3,因为我们只是插入3个数据(id,data,time)。

继续注释掉/删掉重复的

解释下,为什么会出现重复:因为我之前创建的数据表也有id、data、time
在ThreadComm.cpp文件中从81行到93行就是将串口发送来温度数据截取出来,然后将数据赋值给gData这个全局变量,因为再32代码中有printf(“Temp:%.1fC\r\n”,temper);故我们可以定位到温度数据。

接上单片机,运行上位机软件,数据可以正常存储在数据库中

完毕
需要注意的几点:
1、我的串口是COM3,你们的串口号不一定是这个
2、数据表的名字最好用mytable,不然得多改几处地方
为了让别人的电脑也可以运行我们的上位机软件,可以这样做:
1、选中项目名称-》右击-》配置属性-》常规-》MFC的使用-》在静态库中使用MFC-》应用

2、C/C+±》代码生成-》运行库-》多线程(/MT)-》确定

3、最后再运行下,重新生成.exe文件
在工程文件下有个WinDemo.exe文件,可以双击它运行上位机软件。

鉴于博主比较忙,需要代码的请自取
链接:https://pan.baidu.com/s/1nzRv5vD_WZZkSZh1mrfDUA?pwd=q69t
提取码:q69t
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
我正在使用Sequel构建一个愿望list系统。我有一个wishlists和itemstable和一个items_wishlists连接表(该名称是续集选择的名称)。items_wishlists表还有一个用于facebookid的额外列(因此我可以存储opengraph操作),这是一个NOTNULL列。我还有Wishlist和Item具有续集many_to_many关联的模型已建立。Wishlist类也有:selectmany_to_many关联的选项设置为select:[:items.*,:items_wishlists__facebook_action_id].有没有一种方法可以
我使用的是Firefox版本36.0.1和Selenium-Webdrivergem版本2.45.0。我能够创建Firefox实例,但无法使用脚本继续进行进一步的操作无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055)错误。有人能帮帮我吗? 最佳答案 我遇到了同样的问题。降级到firefoxv33后一切正常。您可以找到旧版本here 关于ruby-无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055),我们在StackOverflow上找到一个类
有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳
我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01 客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02 数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit
文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co
我正在尝试在Rails上安装ruby,到目前为止一切都已安装,但是当我尝试使用rakedb:create创建数据库时,我收到一个奇怪的错误:dyld:lazysymbolbindingfailed:Symbolnotfound:_mysql_get_client_infoReferencedfrom:/Library/Ruby/Gems/1.8/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundleExpectedin:flatnamespacedyld:Symbolnotfound:_mysql_get_client_infoReferencedf
文章目录1.开发板选择*用到的资源2.串口通信(个人理解)3.代码分析(注释比较详细)1.主函数2.串口1配置3.串口2配置以及中断函数4.注意问题5.源码链接1.开发板选择我用的是STM32F103RCT6的板子,不过代码大概在F103系列的板子上都可以运行,我试过在野火103的霸道板上也可以,主要看一下串口对应的引脚一不一样就行了,不一样的就更改一下。*用到的资源keil5软件这里用到了两个串口资源,采集数据一个,串口通信一个,板子对应引脚如下:串口1,TX:PA9,RX:PA10串口2,TX:PA2,RX:PA32.串口通信(个人理解)我就从串口采集传感器数据这个过程说一下我自己的理解,