当前位置: 首页 > wzjs >正文

做网站推广 优帮云陕西疫情最新消息

做网站推广 优帮云,陕西疫情最新消息,天元建设集团有限公司 安百平 电话,wordpress tag转专题思维导图 需求分析 stm32mp157a单片机上移植Linux操作系统,包括LCD驱动、触摸驱动、Ethernet/WiFi支持,设备树信息包括ADC、GPIO、LCD,使用QT上位机在PC端显示,通过TCP与stm32交互,将ad数据传输到PC端和云服务器&…

思维导图

需求分析

stm32mp157a单片机上移植Linux操作系统,包括LCD驱动、触摸驱动、Ethernet/WiFi支持,设备树信息包括ADC、GPIO、LCD,使用QT上位机在PC端显示,通过TCP与stm32交互,将ad数据传输到PC端和云服务器,使用阿里云服务器,装载MySQL数据库包括所有上传的数据。

云端服务器环境搭建

云端服务器中MySQL数据库,QTCreator,python环境搭建的各个Linux命令

python实现tcp服务端/客户端通信

tcp_server.py:需要注意的是,修改MySQL的密码为自己的MySQL密码,修改端口号,该代码主要实现python下tcp服务端的监听功能,并将接受到的参数保存到MySQL数据库内。

import socket
import struct
import mysql.connector# MySQL 数据库配置
db_config = {'host': 'localhost','user': 'root','password': '<你的密码>',  # 替换为你的 MySQL root 密码'database': 'test_db'  # 替换为你的数据库名称
}# 创建数据库连接
def create_db_connection():try:connection = mysql.connector.connect(**db_config)return connectionexcept mysql.connector.Error as err:print(f"数据库连接失败: {err}")return None# 插入数据
def insert_sensor_data(connection, hum, tem):try:cursor = connection.cursor()query = "INSERT INTO sensor_data (hum, tem) VALUES (%s, %s)"cursor.execute(query, (hum, tem))connection.commit()print(f"数据插入成功: hum={hum}, tem={tem:.2f}")except mysql.connector.Error as err:print(f"数据插入失败: {err}")# TCP 服务器
def start_tcp_server(host='0.0.0.0', port=<你的端口>):# 创建数据库连接connection = create_db_connection()if connection is None:return# 创建 TCP socketserver_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)server_socket.bind((host, port))server_socket.listen(5)print(f"TCP 服务器启动,监听 {host}:{port}")while True:# 接受客户端连接client_socket, addr = server_socket.accept()print(f"Connected by {addr}")try:data = client_socket.recv(1024).decode('utf-8')  # 解码数据if data:print(f"接收到数据: {data}")# 解析数据(假设数据格式为 "hum,tem")hum, tem = data.split(',')  # 按逗号分隔hum = int(hum)  # 将 hum 转换为 inttem = float(tem)  # 将 tem 转换为 float# 将数据插入数据库insert_sensor_data(connection, hum, tem)# 接收数据(8字节:4字节int + 4字节float)#data = client_socket.recv(8)#if len(data) == 8:# 解析数据#hum = struct.unpack('!i', data[:4])[0]  # 解析int#tem = struct.unpack('<f', data[4:])[0]  # 解析float#print(f"Received int: {hum}, float: {tem}")#insert_sensor_data(connection, hum, tem) else:print("Invalid data received")except Exception as e:print(f"Error: {e}")finally:client_socket.close()# 关闭数据库连接connection.close()if __name__ == "__main__":start_tcp_server()

tcp_client.py:云服务器本地python下tcp客户端测试代码

import socketdef send_sensor_data(host='<云端服务器IP>', port=<端口号>, hum=50, tem=25.5):client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)client_socket.connect((host, port))message = f"{hum},{tem}"client_socket.send(message.encode('utf-8'))client_socket.close()print(f"数据已发送: {message}")if __name__ == "__main__":send_sensor_data()

tcp_client.c:本地Linux-c程序tcp客户端上传数据到云服务器代码,需要注意字节序的问题

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>#define SERVER_IP "<云端服务器IP.address>"  // 替换为云端的IP地址
#define SERVER_PORT <端口号>int main() {int sock;struct sockaddr_in server_addr;// 创建Socketif ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {perror("Socket creation failed");exit(EXIT_FAILURE);}// 设置服务器地址server_addr.sin_family = AF_INET;server_addr.sin_port = htons(SERVER_PORT);if (inet_pton(AF_INET, SERVER_IP, &server_addr.sin_addr) <= 0) {perror("Invalid address/ Address not supported");exit(EXIT_FAILURE);}// 连接到服务器if (connect(sock, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {perror("Connection failed");exit(EXIT_FAILURE);}// 准备数据int int_value = 42;          // 示例int数据float float_value = 3.14f;   // 示例float数据// 序列化数据(将int和float转换为字节流)char buffer[8];*(int *)buffer = htonl(int_value);               // 将int转换为网络字节序*(float *)(buffer + 4) = float_value;           // 直接存储float(注意字节序问题)// 发送数据if (send(sock, buffer, sizeof(buffer), 0) < 0) {perror("Send failed");close(sock);exit(EXIT_FAILURE);}printf("Data sent: int=%d, float=%.2f\n", int_value, float_value);// 关闭Socketclose(sock);return 0;
}

以上代码通过python语言进行tcp通信,以本地作为tcp客户端上传数据给云端tcp服务端,本地采集传感器数据,此处客户端代码仅做示例,直接传输数据,具体根据实际情况将采集数据传输即可,云端tcp服务端将接受到的数据保存到云端MySQL数据库,在云端数据库中可以查看

扩展

以上示例代码仅用于基础理解,使用比较简单的方式实现从本地获取数据,通过tcp直接传输到云端服务器并保存到MySQL数据库的功能,在实际开发中,可以增加mqtt数据传输json数据流,根据上端需求可以使用多进程、多线程对各模块进行分组处理,多进程间可以使用共享内存、消息队列、socket套接字进行交互等方式对整体架构进行增码。

http://www.dtcms.com/wzjs/310822.html

相关文章:

  • 网站的域名可以更改吗广州网络推广培训
  • 常州本地做网站的大公司什么是淘宝搜索关键词
  • wordpress登入访问杭州关键词推广优化方案
  • 哪个厂家的广州网站建设外贸营销型网站制作
  • 网站建设五大定位国内永久免费建站
  • 淘宝属于b2b还是c2c牡丹江网站seo
  • 网站建设完毕后怎么加后台百度百家号怎么赚钱
  • 商城网站建设百度西安
  • 360网站怎么建设seo网站推广目的
  • 建个人网站怎么赚钱吗关键词排名监控批量查询
  • 品牌外贸网站建设html网页制作模板
  • 网站可以用什么语言开发做百度输入法
  • 农村电商网站有哪些安徽网站seo
  • 建设网站需要几个人完成seo关键词排名优化方法
  • 硬笔书法网站是谁做的中国国际新闻
  • 广州新型冠状病毒最新消息重庆seo技术教程
  • 手机网站如何做外链网站运营方案
  • 安庆微信网站开发网站优化外包推荐
  • 商城网站建设网络公司百度一下就知道官方网站
  • 峰峰做网站网站搜索引擎优化报告
  • 域名备案平台360搜索引擎优化
  • 电子商务网站建设理论依据互联网运营主要做什么
  • 电子商务网站有哪些功能网络推广外包哪家好
  • 山东企业网站建设哪家好品牌服务推广
  • 江西商城网站建设个人网页设计制作网站模板
  • 做网站为什么需要花钱一个新的app如何推广
  • 茂名公司网站设计百度排名优化工具
  • 蚌埠网站优化制作公司郑州计算机培训机构哪个最好
  • 专业企业建站价格广州疫情最新数据
  • 跨境电商独立站是什么手机黄页怎么找