当前位置: 首页 > 知识库问答 >
问题:

如何用C语言实现串口数据到mysql数据库的存储

邹杰
2023-03-14

我想把温度数据从arduino保存到mysql数据库。Arduino通过USB串行端口连接MySQL数据库。为了将数据从Arduino保存到MySQL,我使用C编程语言读取Arduino串行端口。问题是,数据存储到mysql中与显示器串行Arduino上显示的数据不同。

串行监视器中来自Arduino的数据如下:

26.37
26.27
26.38
26.50
...

在C中从串行端口读取的程序有:

    char TempChar;
    DWORD NoBytesRead;

    char query[100];
    char INSERT_DATA[] = "INSERT INTO lm35 (id, temp) VALUES (%d,%f)";
do{
    ReadFile(hComm,&TempChar,sizeof(TempChar),&NoBytesRead,NULL);
    sprintf(query, INSERT_DATA, 00, (float)TempChar);

     if (mysql_query(conn,query))
      {
       printf(" Error: %s\n", mysql_error(conn));
       return 0;
    }

      printf("OK \n");
}while(!kbhit());

 CloseHandle(hComm);
 mysql_close(conn);
+-------+---------+------+-----+---------+----------------+
| Field | Type    | Null | Key | Default | Extra          |
+-------+---------+------+-----+---------+----------------+
| id    | int(11) | NO   | PRI | NULL    | auto_increment |
| temp  | float   | YES  |     | NULL    |                |
+-------+---------+------+-----+---------+----------------+
+------+------+
| id   | temp |
+------+------+
| 1500 |   50 |
| 1499 |   10 |
| 1498 |   13 |
| 1497 |   56 |
| 1496 |   56 |
+------+------+

共有1个答案

马琛
2023-03-14

不能在字符缓冲区上使用(float)强制转换,需要使用ATOF:

sprintf(query, INSERT_DATA, 00, atof(TempChar));

您将获得数字的ASCII值,例如'2'50'8'561013分别是换行符和回车符。在等待CRLF结束符时,您似乎不仅需要读入一个字符,还需要读入一系列字符。

您可能需要使用fgets()这样的方法来代替抓取单个字符,或者如果这样做了,您需要为您的数字创建一个缓冲区。您希望阅读每一行文本,而不是单个字符,如果您可以摇摆它。

 类似资料:
  • 主要内容:RMySQL包,将R连接到MySql,查询表,使用过滤子句查询,更新表中的行记录,将数据插入到表中,在MySql中创建表,在MySql中删除表关系数据库系统中的数据是以规范化格式存储的。 所以,为了进行统计计算,我们需要非常高级和复杂的SQL查询。但是R可以很容易地连接到许多关系数据库,如:MySQL,Oracle,Sql Server等,并将它们作为数据帧提取。 当从数据库中读取数据到R环境中可用以后,它就成为一个正常的R数据集,可以使用所有强大的软件包和函数进行操作或分析。 在本教

  • 本文向大家介绍C语言数据结构实现字符串分割的实例,包括了C语言数据结构实现字符串分割的实例的使用技巧和注意事项,需要的朋友参考一下 C语言数据结构实现字符串分割的实例 以下为“字符串分割”的简单示例: 1. 用c语言实现的版本 运行结果如下所示: 如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

  • 主要内容:1. 数据定义语言,2. 数据操作语言,3. 数据控制语言,4. 事务控制语言DBMS具有适当的语言和接口来表达数据库查询和更新。 数据库语言可用于读取,存储和更新数据库中的数据。 数据库语言的类型 1. 数据定义语言 DDL代表数据定义语言。它用于定义数据库结构或模式。 用于在数据库中创建模式,表,索引,约束等。 使用DDL语句,可以创建数据库的框架。 数据定义语言用于存储元数据的信息,如表和模式的数量,它们的名称,索引,每个表中的列,约束等。 以下是DDL下的一些任务:

  • 本文向大家介绍Linux下实现C++操作Mysql数据库,包括了Linux下实现C++操作Mysql数据库的使用技巧和注意事项,需要的朋友参考一下 想用C++写项目,数据库是必须的,所以这两天学了一下C++操作MySQL数据库的方法。也没有什么教程,就是在网上搜的知识,下面汇总一下。 连接MySQL数据库有两种方法:第一种是使用ADO连接,不过这种只适合Windows平台;第二种是使用MySQL自

  • 本文向大家介绍C语言实现数据结构迷宫实验,包括了C语言实现数据结构迷宫实验的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了C语言实现简单的数据结构迷宫实验,供大家参考,具体内容如下 分析:迷宫实验主要有两部分操作,其一是对迷宫的生成,其二是寻路使用栈的操作。 步骤: 一、.h文件 1、首先是迷宫的生成,可以使用随机数种子生成,但主要逻辑部分并不在此,所以在这里直接写死,固定下来。 定