035——从GUI->Client->Server->driver实现SPI控制DAC芯片

news2024/12/23 8:32:45

目录

1、修改GUI

2、修改client

3、server编写

4、driver_handle

5、test

6、 项目管理


1、修改GUI

我想让DAC控制是个滑动条

import PySimpleGUI as sg

def slider_callback(slider_value):
    print(f'Current value: {slider_value}')

layout = [
    [sg.Text('Select a value:')],
    [sg.Slider(range=(1, 100), orientation='h', size=(20, 15), default_value=50, key='-SLIDER-', enable_events=True)],
    [sg.Button('OK')]
]

window = sg.Window('Slider Example', layout)

while True:
    event, values = window.read()

    if event == 'Close' or event == 'OK':
        break
    elif event == '-SLIDER-':
        slider_value = values['-SLIDER-']
        slider_callback(slider_value)

window.close()

 

现在滑动条的event可以获取了但是有个问题就是和后面DAC之间匹配不上,太丑啦

import PySimpleGUI as sg  
  
layout = [  
    [sg.Text('居中对齐', size=(10, 1), justification='c', pad=(10, 5))],  # 水平和垂直填充,居中对齐  
    [sg.Text('左对齐偏下', size=(10, 1), justification='l', pad=((10, 0), (5, 0)))],  # 上边填充使文本偏下,左对齐  
    [sg.Text('右对齐偏下', size=(10, 1), justification='r', pad=((0, 10), (5, 0)))],  # 上边填充使文本偏下,右对齐  
]  
  
window = sg.Window('文本对齐示例', layout)  
  
while True:  
    event, values = window.read()  
    if event == sg.WIN_CLOSED:  
        break  
  
window.close()

分开测试都好使,放在一起就不行,里普瓦

好像可以,之前给的值太小了导致看不出来,给了个20现在看着还算是协调

'''
fuction : 客户端界面
author  : 辛天宇
date    : 2024-4-12
-------------------------------
author date  modify

'''
import PySimpleGUI as sg
import tool
import global_var

# 调用显示框架
def show_window(theme):
    # 是否使用自定义标题栏
    use_custom_titlebar = False
    # 设置主题
    sg.theme(theme)
    # 创建菜单
    Menu = sg.Menu
    # 左部layout
    layout_l =  [
                    [tool.name('NetWork'), sg.Button('Connect', key='Connect')],
                    [tool.name('NetWork'), sg.Button('Disconnect', key='Disconnect')],
                    [tool.name('NetWork'), sg.Output(size=(32, 1), key='IP')],
                    [sg.Checkbox('Input', use_custom_titlebar, enable_events=True, key='input')],
                    [sg.InputText(disabled=True, key='txbuff'), sg.Button('SEND', key='send')],
                    [sg.Slider(range=(0, 100), orientation='h', size=(29, 20), default_value=0, key='DAC', enable_events=True), sg.Text('DAC', size=(5,2), justification='c',pad=(0,(20,0)), font='Courier 14')],
                    [sg.InputText(key='AT24C02_I', default_text=''), sg.Button('AT24C02 WRITE', key='AT24C02_W')],
                ]
    # 右部layout
    layout_r  = [
                    [sg.Output(size=(16, 1), key='LED_O'), sg.Button('LED', key='LED')],
                    [sg.Output(size=(16, 1), key='SR501_O'), sg.Button('SR501', key='SR501')],
                    [sg.Output(size=(16, 1), key='SR04_O'), sg.Button('SR04', key='SR04')],
                    [sg.Output(size=(16, 1), key='IRDA_O'), sg.Button('IRDA', key='IRDA')],
                    [sg.Output(size=(16, 1), key='DHT11_O'), sg.Button('DHT11', key='dht11')],
                    [sg.Output(size=(16, 1), key='DS18B20_O'), sg.Button('DS18B20', key='ds18b20')],
                    [sg.Output(size=(16, 1), key='AT24C02_O'), sg.Button('AT24C02 READ', key='AT24C02_R')],
                    #[tool.name('Text'), sg.Button('IIC', key='IIC')],
                ]
    # 修饰
    topic = tool.add_stars_to_string(global_var.TOPIC, 5)
    # 设置字体为14号,无特殊样式,通常字体名称和大小用元组表示  
    topic_font = ('_', 24)
    # 整体layout
    layout = [
                [sg.T(topic, text_color='blue', justification='c', font=topic_font)],
                [sg.Col(layout_l), sg.Col(layout_r)],
                [sg.Text('Output:', size=(7,1), justification='r',pad=(0,0), font='Courier 10'),],
                [sg.Output(size=(96, 8), key='Output')],
                [sg.Button('Clean', key='Clean'), sg.Button('Quit', key='Quit')]
            ]

    window = sg.Window('The PySimpleGUI Element List', layout, finalize=True, keep_on_top=True)
    return window

# 处理事件
def event_handle():
    window = show_window('DefaultNoMoreNagging')
    # 事件循环  
    while True:  
        try:
            event, values = window.read()
            if event == 'Exit':  
                break
            if event == 'dht11':
                message = f"{global_var.TEM}°C   {global_var.HUM}%"
                window['Getvalue'].update(message)
            if event == 'ds18b20':
                message = f"{global_var.TEM}°C"
                window['Getvalue'].update(message)
            if event == 'input': 
                print(f"INPUT-----------------") 
            elif event == 'Quit':  
                print(f"See you.............")
                break
            # elif event == 'Connect':
            #     global_var.SERVER_IP = "192.168.5.10"
            #     window['IP'].update(global_var.SERVER_IP)
            # elif event == 'Disconnect':  
            #     global_var.SERVER_IP = "connectionless network service"
            #     window['IP'].update(global_var.SERVER_IP)
            elif event is None:
                print(f"xxxxxxxxxxxxxxxxxxxx")
                break
            elif event == 'LED':  
                print(f"LED-----------------") 
            # 处理其他事件...
        except Exception as e:
            window.close()
            print(f"An error occurred: {e}")
            return 0
    window.close()
    return 0  

def main():
    # theme参考/client/README
    event_handle()

if __name__ == '__main__':
    main()

2、修改client

'''
fuction : 客户端程序
author  : 辛天宇
date    : 2024-4-13
-------------------------------
author     date      modify
辛天宇   2024-4-15   结合GUI和网络通信

'''
import show
import tcp
import tool
import socket
import global_var


def send_handle(window, client_socket, values):
    global_var.TX_BUF = values['txbuff'] 
    print(f"txbuff={global_var.TX_BUF}")
    # 清理input
    window['txbuff'].update(value='')
    data = global_var.TX_BUF
    client_socket.sendall(data.encode())
    # 接收服务器的响应
    data = client_socket.recv(512)
    # 将字节字符串转化为字符串
    global_var.RX_BUF = data.decode('utf-8')
    # print(f"rx......{global_var.RX_BUF}") 

def quit_handel(client_socket):
    cmd='Q'
    client_socket.sendall(cmd.encode())
    tcp.disconnect_to_server(client_socket)

def motor_handel(window, client_socket, values):
    i = int(values['MOTOR_I'])
    global_var.MOTOR_DATA = str(abs(i)%360)
    if i >= 0:
        global_var.MOTOR_DIRECTION='0'
    else:
        global_var.MOTOR_DIRECTION='1'
    message = 's'+global_var.MOTOR_DIRECTION+global_var.MOTOR_DATA
    # 清理input
    window['MOTOR_I'].update(value='0')
    set_tx_buf('motor', message)
    send_cmd(client_socket)
    # 接收服务器的响应
    data = client_socket.recv(512)
    # 将字节字符串转化为字符串
    global_var.RX_BUF = data.decode('utf-8')
    # print(f"rx......{global_var.RX_BUF}") 

# 进行一次发送
def send_cmd(client_socket):
    data = global_var.TX_BUF
    client_socket.sendall(data.encode())
    # 接收服务器的响应
    data = client_socket.recv(512)
    # 将字节字符串转化为字符串
    global_var.RX_BUF = data.decode('utf-8')
    # print(f"rx......{global_var.RX_BUF}") 

# 设置发送消息
def set_tx_buf(device, message): 
    if device == 'sr04':
        global_var.TX_BUF = '@002'+message
    if device == 'led':
        global_var.TX_BUF = '@000'+message
    elif device == 'sr501':
        global_var.TX_BUF = '@001'+message
    elif device == 'irda':
        global_var.TX_BUF = '@003'+message
    elif device == 'motor':
        global_var.TX_BUF = '@004'+message
    elif device == 'dht11':
        global_var.TX_BUF = '@005'+message
    elif device == 'ds18b20':
        global_var.TX_BUF = '@006'+message
    elif device == 'AT24C02':
        global_var.TX_BUF = '@007'+message
    elif device == 'dac':
        global_var.TX_BUF = '@008'+message

# 解析IRDA传入的数据
def irda_data_analysis(cmd):
    if cmd[5] == 'r':
        global_var.IRDA_DATA = "RED"
    elif cmd[5] == 'm':
        global_var.IRDA_DATA = "MENU"
    elif cmd[5] == 't':
        global_var.IRDA_DATA = "TEST"
    elif cmd[5] == '+':
        global_var.IRDA_DATA = "+"
    elif cmd[5] == 'b':
        global_var.IRDA_DATA = "BACK"
    elif cmd[5] == 'l':
        global_var.IRDA_DATA = "LEFT"
    elif cmd[5] == 'p':
        global_var.IRDA_DATA = "START"
    elif cmd[5] == 'r':
        global_var.IRDA_DATA = "RIGHT"
    elif cmd[5] == '0':
        global_var.IRDA_DATA = "0"
    elif cmd[5] == '1':
        global_var.IRDA_DATA = "1"
    elif cmd[5] == '2':
        global_var.IRDA_DATA = "2"
    elif cmd[5] == '-':
        global_var.IRDA_DATA = "-"
    elif cmd[5] == 'c':
        global_var.IRDA_DATA = "c"
    elif cmd[5] == '3':
        global_var.IRDA_DATA = "3"
    elif cmd[5] == '4':
        global_var.IRDA_DATA = "4"
    elif cmd[5] == '5':
        global_var.IRDA_DATA = "5"
    elif cmd[5] == '6':
        global_var.IRDA_DATA = "6"
    elif cmd[5] == '7':
        global_var.IRDA_DATA = "7"
    elif cmd[5] == '8':
        global_var.IRDA_DATA = "8"
    elif cmd[5] == '9':
        global_var.IRDA_DATA = "9"

# 处理数据
def cmd_handle(window):
    cmd = global_var.RX_BUF
    global_var.RX_BUF="#000"
    if len(cmd) < 4:
        print("cmd ERROR")
        return -1
    if '@' == cmd[0]:
        # 目前驱动设备数量只有两位数
        if cmd[1] == '0':
            # LED: @000+1位命令位+1位数据位
            if cmd[2] == '0' and cmd[3] == '0':
                if cmd[5] == '1':
                    print("LED Status change success")
                elif cmd[5] == '0':
                    print("LED Status change failure")
                else:
                    print("message ERROR")
            # SR501:@001+1位数据位
            elif cmd[2] == '0' and cmd[3] == '1':
                if cmd[5] == '1':
                    print("有人")
                    message='有人'
                    window['SR501_O'].update(message)
                elif cmd[5] == '0':
                    print("无人")
                    message='无人'
                    window['SR501_O'].update(message)
                else:
                    print("message ERROR")
            # SR04
            elif cmd[2] == '0' and cmd[3] == '2':
                if cmd[4] == 'g':
                    global_var.SR04_DATA = cmd[5:8]
                    message = f"{global_var.SR04_DATA}cm"
                    window['SR04_O'].update(message)
                else:
                    print("SR04: message ERROR")               
            # irda
            elif cmd[2] == '0' and cmd[3] == '3':
                # message = cmd[5]
                # print(message)
                if cmd[4] == 'g':
                    irda_data_analysis(cmd)
                    window['IRDA_O'].update(global_var.IRDA_DATA)
            # motor
            elif cmd[2] == '0' and cmd[3] == '4':
                if cmd[4] == 's':
                    print("MOTOR: message SCUESS") 
                else:
                    print("MOTOR: message ERROR")  
            # dht11
            elif cmd[2] == '0' and cmd[3] == '5':
                if cmd[4] == 'g':
                    try:
                        global_var.TEM=cmd[5]+cmd[6]
                        global_var.HUM=cmd[7]+cmd[8]
                        message = f"{global_var.TEM}°C   {global_var.HUM}%"
                        window['DHT11_O'].update(message)
                    except:
                        message = "ERROR"
                        window['DHT11_O'].update(message)
                        print("DHT11: message ERROR")
                else:
                    message = "ERROR"
                    window['DHT11_O'].update(message)
                    print("DHT11: message ERROR")  
            # ds18b20
            elif cmd[2] == '0' and cmd[3] == '6':
                if cmd[4] == 'g':
                    try:
                        global_var.TEM=cmd[5]+cmd[6]
                        message = f"{global_var.TEM}°C"
                        window['DS18B20_O'].update(message)
                    except:
                        message = "ERROR"
                        window['DS18B20_O'].update(message)
                        print("DS18B20: message ERROR")
                else:
                    message = "ERROR"
                    window['DS18B20_O'].update(message)
                    print("DS18B20: message ERROR")
            # AT24C02
            elif cmd[2] == '0' and cmd[3] == '7':
                if cmd[4] == 'g':
                    try:
                        message = cmd[5:]
                        window['AT24C02_O'].update(message)
                    except:
                        message = "ERROR"
                        window['AT24C02_O'].update(message)
                        print("AT24C02: message ERROR")
                elif cmd[4] == 'p':
                    window['AT24C02_I'].update(value='')
                    print("AT24C02: write SUCCESS")
                else:
                    message = "ERROR"
                    window['AT24C02_O'].update(message)
                    print("AT24C02: message ERROR")
            # DAC&&spi
            elif cmd[2] == '0' and cmd[3] == '8':
                if cmd[4] == 'p':
                    print("DAC: SUCCESS")
                else:
                    print("DAC: message ERROR")

# 处理事件
def event_handle(window, client_socket):
    led = 0
    # 事件循环
    while True:  
        try:
            cmd_handle(window)
            event, values = window.read()
            if event == 'input':
                window['txbuff'].update(disabled=not values['input'])
            elif event == 'send':
                send_handle(window, client_socket, values)
            elif event == 'Clean':
                window['Output'].update(value='')
                window['AT24C02_O'].update(value='')
            elif event == 'dht11':
                window['DHT11_O'].update(value=' ')
                set_tx_buf('dht11', 'g')
                send_cmd(client_socket)
            elif event == 'ds18b20':
                window['DS18B20_O'].update(value=' ')
                set_tx_buf('ds18b20', 'g')
                send_cmd(client_socket)
            elif event == 'Quit': 
                quit_handel(client_socket) 
                print(f"See you.............")
                break
            elif event is None:
                print(f"xxxxxxxxxxxxxxxxxxxx")
                break
            elif event == 'LED':
                if led % 2 == 0:
                    set_tx_buf('led','p1')
                else:
                    set_tx_buf('led','p0')
                led+=1
                if led > 100:
                    led = 0
                send_cmd(client_socket)
            elif event == 'SR501':
                set_tx_buf('sr501','g')
                send_cmd(client_socket)
            elif event == 'SR04':
                set_tx_buf('sr04','g')
                send_cmd(client_socket)
            elif event == 'IRDA':
                set_tx_buf('irda','g')
                send_cmd(client_socket)
            elif event == 'MOTOR':
                motor_handel(window, client_socket, values)
            elif event == 'AT24C02_R':
                window['AT24C02_O'].update(value='')
                set_tx_buf('AT24C02','g')
                send_cmd(client_socket)
            elif event == 'AT24C02_W':
                global_var.AT24C02_DATA = values['AT24C02_I']
                set_tx_buf('AT24C02','p'+global_var.AT24C02_DATA)
                print(global_var.TX_BUF)
                window['AT24C02_I'].update(value='')
                send_cmd(client_socket)
            elif event == 'DAC':
                set_tx_buf('dac','p'+values['DAC'])
                send_cmd(client_socket)
            # 处理其他事件...
        except Exception as e:
            window.close()
            print(f"An error occurred: {e}")
            return 0
    window.close()
    return 0  

def main():
    # 创建GUI对象
    window = show.show_window('DefaultNoMoreNagging')
    # 尝试连接到服务器  
    client_socket = tcp.connect_to_server()
    if client_socket is not None: 
        event_handle(window, client_socket)

if __name__ == '__main__':
    main()

3、server编写

            case 8:
                printf("DAC!!!\n");
                if ('p' == cmd[4])
                {
                    direction = direction_put;
                    get_data = extract_digit_number(cmd, 5, (strlen(&cmd[5])));
                    if (NOERROR == dac_handle(&get_data))
                    {
                        tx_buffer = "@008p";
                    }
                    else
                    {
                        tx_buffer = "@008e";
                    }

                }
                else
                {
                    tx_buffer = "@008e";
                }
                
                if (send(acceptfd, tx_buffer, strlen(tx_buffer), 0) < 0)
                {
                    perror("send failed");  
                }
                break;
            default:
                printf("Unknown equipment!!!\n");

4、driver_handle

/*
*author   : xintianyu
*function : Handle dac Settings
*date     : 2024-4-24
-----------------------
author date  modify

*/
int dac_handle(int *data)
{
	/*传入参数后面要做通用处理使用空指针*/
	/*路径宏定义*/
    char *device = "/dev/cebss_dac";
    int ret = NOERROR;
	int dac_val = 0;
	static int fd;

    /* 打开文件 */
	fd = open(device, O_RDWR);
	if (fd == -1)
	{
		printf("can not open file %s\n", device);
		return ERROR;
	}

    /*0~1023*/
    dac_val = *data*1023/100+1;
	printf("dac_val == %d\n", dac_val);
	write(fd, &dac_val, 2);
	dac_val += 50;

	close(fd);
	return ret;
}

5、test

非常的丝滑。

6、 项目管理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1621805.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

百篇博客 · 千里之行

时光荏苒流逝&#xff0c;白驹匆匆过隙&#xff0c;不知不觉间&#xff0c;Damon小智已经在CSDN上记录了第一百多篇文章。恰逢128天创作纪念日的此刻&#xff0c;我感慨良多&#xff0c;这百余篇博客不仅是我的创作历程&#xff0c;更见证了我在这五年技术生涯中走过心路历程。…

imx6ull -- SPI

SPI 是 Motorola 公司推出的一种同步串行接口 技术&#xff0c;是一种高速、全双工的同步通信总线&#xff0c; SPI 时钟频率相比 I2C 要高很多&#xff0c;最高可以工作 在上百 MHz。 SPI 以主从方式工作&#xff0c;通常是有一个主设备和一个或多个从设备&#xff0c;一般 SP…

【网页在线小游戏源码】

网页在线小游戏源码 效果图部分源码领取源码下期更新预报 效果图 部分源码 index.html <!DOCTYPE html> <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetUTF-8"> <meta id"viewport" na…

Hive——DML(Data Manipulation Language)数据操作语句用法详解

DML 1.Load Load语句可将文件导入到Hive表中。 hive> LOAD DATA [LOCAL] INPATH filepath [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1val1, partcol2val2 ...)];关键字说明&#xff1a; local&#xff1a;表示从本地加载数据到Hive表&#xff1b;否则从HD…

SpringBoot学习之Redis下载安装启动【Windows版本】(三十六)

一、下载Redis for Windows Redis 官方网站没有提供 Windows 版的安装包,但可以通过 GitHub 来下载安装包,下载地址:https://github.com/tporadowski/redis/releases 1、网站提供了安装包和免安装版本,这里我们直接选择下面的免安装版本 2、下载后的压缩包解压以后,如下…

快速新建springboot项目

一、初始化 1.打开IDEA&#xff0c;在Spring initializer这里按照下图项目进行配置。注意&#xff1a;如果jdk是1.8建议将Server URL这里替换为图中的阿里云服务器&#xff0c;否则容易找不到对应的java8&#xff0c;然后点击next 2.在这里提前配置一些需要使用的依赖&#xf…

Node.js和cnpm环境搭建

Node.js和cnpm环境搭建 一、nodejs安装 1.1 傻瓜式一直下一步即可&#xff0c;不需要额外进行任何配置 nodejs下载链接&#xff0c;提取码&#xff1a;5555 1.2 查看是否安装成功 cmd进入命令行界面 输入node -v 显示node版本&#xff0c;显示则安装成功 1.3 改变全局模块路…

npm常用的命令大全(2024-04-21)

nodejs中npm常见的命令 npm主要是node包管理和发布的工具。 npm官网网址&#xff1a;npm | Homehttps://www.npmjs.com/官网英文文档&#xff1a; npm DocsDocumentation for the npm registry, website, and command-line interfacehttps://docs.npmjs.com/about-npm官网中文文…

golang学习笔记(defer基础知识)

什么是defer defer语句用于golang程序中延迟函数的调用&#xff0c; 每次defer都会把一个函数压入栈中&#xff0c; 函数返回前再把延迟的函数取出并执行。 为了方便描述&#xff0c; 我们把创建defer的函数称为主函数&#xff0c; defer语句后面的函数称为延迟函数。延迟函数…

MCU功耗测量

功耗测量 一、相关概念二、功耗的需求三、测量仪器仪表测量连接SMU功能SMU性能指标 四、功耗测量注意点板子部分存在功耗MCU方面&#xff0c;可能存在干扰项仪器仪表方面 一、相关概念 静态功耗和动态功耗&#xff1a;动态功耗为运行功耗&#xff0c;功耗测量注重每MHz下的功耗…

AppleWatch是真的能够减少我iPhone的使用时长

我应该是比较专情的果粉了&#xff0c;我有一台MacBook Pro、iPad Pro、airpods pro 2和iPhone 15 Pro Max。但我还从来没有用过苹果手表。 然后&#xff0c;我就去买了AppleWatchSeries9蜂窝款&#xff0c;并试用了一周&#xff0c;我想知道它是否能帮助我减少使用iPhone的时间…

穿越代码迷雾:解密Tracing技术的神奇力量

穿越代码迷雾&#xff1a;解密Tracing技术的神奇力量 在软件开发和性能优化领域&#xff0c;追踪&#xff08;Tracing&#xff09;技术是一种重要的工具&#xff0c;用于收集和分析程序的执行过程和性能数据。本文将深入讲解Tracing的原理、工作方式以及在不同领域的应用场景&a…

STM32F103ZET6_ADC

ADC主要特征 ● 12位分辨率 ●18个通道 &#xff0c;16个外部通道 2个内部通道 ● 转换结束、注入转换结束和发生模拟看门狗事件时产生中断 ● 单次和连续转换模式 ● 从通道0到通道n的自动扫描模式 ● 自校准 ● 带内嵌数据一致性的数据对齐 ● 采样间隔可以按通道分…

【唯美情侣爱情表白纪念HTML单页】

唯美情侣爱情表白纪念HTML单页 效果图部分代码领取代码下期更新预报 效果图 整图 背景图 部分代码 index.html <!DOCTYPE html> <html lang"en"><head><meta http-equiv"Content-Type" content"text/html; charsetUTF-8"…

开发板通过网线连接电脑而上网

简介 关闭win11的防火墙&#xff08;之前不关也可以的&#xff0c;很奇怪&#xff09; 一句话&#xff1a;&#xff01;&#xff01;&#xff01;dhcp能自动分配IP即可联通外网&#xff01;&#xff01;&#xff01; 原理也不懂&#xff0c;或许有其他方法也不清楚&#xff0c…

【简单介绍下机器学习之sklearn基础】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

详解QColor的使用

Qt中的QColor类是用来处理颜色的对象&#xff0c;它在Qt GUI编程中有着广泛的应用&#xff0c;比如设置控件的颜色、绘制图形的颜色等等。下面将详细介绍QColor的基本使用方法、一些实用技巧以及需要注意的事项&#xff0c;并给出C代码示例。 基本使用 创建QColor对象 构造默…

枚举(enum)/共用体(union)/结构体(struct)---详解

前言 C语言包含内置类型和自定义类型。 其实C语言中有内置类型&#xff0c;包含&#xff1a;char,short,int,long,long long,float,double,long double ,这些是C语言本身支持的现成的类型。 但仅仅只有内置类型是远远不够的&#xff0c;在描述一个复杂对象是无法使用内置类型来…

RealSenseSR300工程环境配置说明

新建目录结构如下&#xff1a; output:存储可执行文件.exe等src:存储源码.cpp .h等3rdparty:存储第三方库 opencv等 其中将源码按照main及其相关文件分为以下三类 vs2015许可证到期后先激活&#xff0c;激活码很多网上有&#xff0c;如&#xff1a;HMGNV-WCYXV-X7G9W-YCX63…

多目标粒子群算法及其MATLAB实现

多目标粒子群优化&#xff08;Multi-Objective Particle Swarm Optimization, MOPSO&#xff09;算法是一种基于种群的优化算法&#xff0c;它结合了粒子群优化&#xff08;Particle Swarm Optimization, PSO&#xff09;和多目标优化的思想。多目标粒子群&#xff08;MOPSO&am…