STK与matlab交互 Astrogator模块(14)

一、背景介绍

高轨卫星的轨道保持。与任何其它轨道状态一样,地球同步轨道也会受到各种扰动力的影响,这些摄动力会影响GEO卫星在位置方面的稳定性。摄动的主要来源是地球的非地球位势、太阳辐射压力和第三体效应(主要是月球和太阳)。总体影响是经度漂移(其方向取决于经度本身)和倾斜度随时间的变化。

GEO卫星运营商将每个航天器放在一个定义明确的盒子里,以免干扰周围空间中的其它卫星。这项活动被称为“站岗”。在这里,我们将了解如何使用自动序列设计和执行台位保持。我们将创建一个东西向测站保持序列(基于经度控制)和一个南北向测站维持序列。(纯倾斜度控制)

二、场景初始化

首先根据OrbitWizard创建一个参考星Reference,将目标星控制在参考星的Box框架内,将其定位在13°的位置,代码如下所示

%%  本程序用于构建新场景
close all
clear
clc
%% 分析要求1 
%%  *******************  以下为联动 STK 代码
%  ------------  利用Com库方式调用STK引擎
% Get reference to running STK instance
uiApplication = actxGetRunningServer('STK12.application');
% Get our IAgStkObjectRoot interface
root = uiApplication.Personality2;

checkempty = root.Children.Count;
if checkempty ~= 0
    root.CurrentScenario.Unload
    root.CloseScenario;
    
end

%  ---------- 创建新的场景
root.NewScenario('GEOStationKeeping');
StartTime='1 Apr 2016 00:00:00.000';
StopTime='18 Jul 2017 00:00:00.000';
root.ExecuteCommand(['SetAnalysisTimePeriod * "',StartTime,'" "',StopTime,'"']);
root.ExecuteCommand('Animate * Reset');
% root.LoadScenario('D:\STK 11 (x64)\SatelliteDamage\AreaCoverage.sc'); 
% 
Sat_Name='Reference';
satellite=root.CurrentScenario.Children.New('eSatellite',Sat_Name);
root.ExecuteCommand(['OrbitWizard */Satellite/',Sat_Name,' Geosynchronous Inclination 0 SubsatellitePoint 13.0 Color green']);
% 使地固系显现出来
satellite.VO.OrbitSystems.FixedByWindow.IsVisible=1;
satellite.VO.OrbitSystems.InertialByWindow.IsVisible=0;
satellite.VO.Proximity.GeoBox.IsVisible=1;
satellite.VO.Proximity.GeoBox.Longitude=13;
satellite.VO.Proximity.GeoBox.NorthSouth=0.5;
satellite.VO.Proximity.GeoBox.EastWest=0.5;
satellite.VO.Proximity.GeoBox.Radius=42166.3;

satellite.Graphics.Attributes.Inherit=0;
satellite.Graphics.Attributes.LabelVisible=0;
satellite.Graphics.Attributes.IsOrbitVisible=0;

添加一颗GEO_Sat,使用Astrogator模块进行轨道计算,代码如下

%% 插入一颗机动星
Sat_Name2='GEO_Sat';
satellite2=root.CurrentScenario.Children.New('eSatellite',Sat_Name2);
satellite2.SetPropagatorType('ePropagatorAstrogator'); 
satellite2.Propagator;
sma=42166.3;
Ecc=0;
Inc=0;
w=0;
LonAsc=13;
TA=352.96;
root.ExecuteCommand(['Astrogator */Satellite/',Sat_Name2,' SetValue MainSequence.SegmentList Initial_State Propagate']);
InitialState=satellite2.Propagator.MainSequence.Item(0);
%% 初始化卫星参数
root.ExecuteCommand(['Astrogator */Satellite/',Sat_Name2,' SetValue MainSequence.SegmentList.Initial_State.CoordinateType Modified Keplerian']);
root.ExecuteCommand(['Astrogator */Satellite/',Sat_Name2,' SetValue MainSequence.SegmentList.Initial_State.InitialState.Epoch ',StartTime,' UTCG']);
root.ExecuteCommand(['Astrogator */Satellite/',Sat_Name2,' SetValue MainSequence.SegmentList.Initial_State.InitialState.Keplerian.sma ',num2str(sma),' km']);
root.ExecuteCommand(['Astrogator */Satellite/',Sat_Name2,' SetValue MainSequence.SegmentList.Initial_State.InitialState.Keplerian.ecc ',num2str(Ecc)]);
root.ExecuteCommand(['Astrogator */Satellite/',Sat_Name2,' SetValue MainSequence.SegmentList.Initial_State.InitialState.Keplerian.inc ',num2str(Inc),' deg']);
root.ExecuteCommand(['Astrogator */Satellite/',Sat_Name2,' SetValue MainSequence.SegmentList.Initial_State.InitialState.Keplerian.w ',num2str(w),' deg']);

root.ExecuteCommand(['Astrogator */Satellite/',Sat_Name2,' SetValue MainSequence.SegmentList.Initial_State.InitialState.Keplerian.LAN ',num2str(LonAsc),' deg']);
root.ExecuteCommand(['Astrogator */Satellite/',Sat_Name2,' SetValue MainSequence.SegmentList.Initial_State.InitialState.Keplerian.TA ',num2str(TA),' deg']);

%% 
Propagate=satellite2.Propagator.MainSequence.Item(1);
Propagate.StoppingConditions.Item(0).Properties.Trip=86400*365.25;
Propagate.StoppingConditions.Item(0).Properties.Inherited=0;

satellite2.VO.OrbitSystems.Add('Satellite/Reference VVLH System')
satellite2.VO.OrbitSystems.InertialByWindow.IsVisible=0;
satellite2.VO.Pass.TrackData.PassData.Orbit.SetLeadDataType('eDataNone');
satellite2.VO.Pass.TrackData.PassData.Orbit.SetTrailDataType('eDataTime');
satellite2.VO.Pass.TrackData.PassData.Orbit.TrailData.Time=720*3600;
root.ExecuteCommand(['Astrogator */Satellite/',Sat_Name2,' RunMCS']);

观察可以发现,由于精确轨道预报模型,卫星一直处于东漂状态,我们需要将卫星保持在站点保持的边界内,由于东漂离开边界,我们将首先实施东西方保持程序。

2.1 添加东西位置保持部分

在本文中需要利用Utilities的菜单,选择Component Browser的选项,选择Calculation Objects的目录,选择Keplerian Elems的目录。

选择Inclination,点击Duplicate,重新命名为TOD Inclination。选择坐标系为Earth TOD

其操作对应的MATLAB代码为

root.ExecuteCommand(['ComponentBrowser */ Duplicate "Calculation Objects" Inclination "TOD"']);
root.ExecuteCommand(['ComponentBrowser */ SetValue "Calculation Objects" "TOD" CoordSystem "CentralBody/Earth TOD"']);

添加一个East-West位置保持的程序自动序列

然后定义这个AutoSequence,首先插入一个Sequence,把它重命名为EW_Station_Keeping。在Sequence下面添加一个Propagate,把它命名为Apogee,把Propagate颜色设置为红色,把其停止情况设置为Apoapsis,取消Duration

satellite2.Propagator.AutoSequence.Add('EW Station Keeping');

satellite2.Propagator.AutoSequence.Item(1).Sequence.Insert('eVASegmentTypeSequence','EW_Station_Keeping','-');
EW=satellite2.Propagator.AutoSequence.Item(1).Sequence.Item(0).Segment;
EW.Insert('eVASegmentTypePropagate','Stop_on_Apogee','-');
EW.Item(0).Properties.Color=255;
stopcondition=EW.Item(0).StoppingConditions;
stopcondition.Add('Apoapsis');
stopcondition.Remove('Duration');

添加一个目标序列,命名为Target Turn Around,在该目标序列下面,添加一个机动序列,命名为EW_Burn,一个预报序列命名为Prop to Second Node,一个Return序列,种类为Enable(except Profiles bypass),一个预报序列,命名为Prop to Ascending Node

当在近地点时,EW Burn部分施加Delta-V整体的大小是一个独立的变量。在这个之和,我们将一直运行直到第二个点到来。这是因为我们将在检查结果前等一会儿(记住,在这个时候,卫星正在东漂移)。拥有了Return部分,把它设置为bypass,序列Prop to Ascending Node只有在微分修正器收敛的时候运行。

EW.Insert('eVASegmentTypeTargetSequence','Target_Turn_Around','-');
% 
Target=EW.Item(1).Segment;
Target.Insert('eVASegmentTypeManeuver','EW_Burn','-');
Target.Insert('eVASegmentTypePropagate','Prop_to_Second_Node','-');
Prop_to_Second_Node=Target.Item(1);
Prop_to_Second_Node.Properties.Color=42495;
Target.Insert('eVASegmentTypeReturn','return','-');
Return=Target.Item(2);
Return.ReturnControlToParentSequence='eVAReturnControlEnableExceptProfilesBypass';
Target.Insert('eVASegmentTypePropagate','Prop_to_Asending_Node','-');
Prop_to_Asending_Node=Target.Item(3);
Prop_to_Asending_Node.Properties.Color=65535;

修改EW Burn 将其转换为Attitude Control to Thrust Vector,将施加坐标转换为VNC(Earth),选择X(Velocity)作为控制变量。

Maneuver=Target.Item(0);
Maneuver.Maneuver.SetAttitudeControlType('eVAAttitudeControlThrustVector');
Maneuver.Maneuver.AttitudeControl.ThrustAxesName='Satellite VNC(Earth)';
Maneuver.EnableControlParameter('eVAControlManeuverImpulsiveCartesianX');

定义Prop to Second Node部分 。添加一个Ascending Node停止情况。将重复次数设置为2。它将运行直到第二个点到达。选择参考坐标系为Earth TOD。移除Duration情况

Prop_to_Second_Node.StoppingConditions.Add('AscendingNode');
Prop_to_Second_Node.StoppingConditions.Remove('Duration');
Prop_to_Second_Node.StoppingConditions.Item(0).Properties.RepeatCount=2;
Prop_to_Second_Node.StoppingConditions.Item(0).Properties.CoordSystem='CentralBody/Earth TOD';

定义Prop to Ascending Node部分,添加一个Ascending Node停止情况,将坐标设置为TOD,添加约束条件,选择UserDefined选项,将其重新命名为Min_Longitude,将Criteria的值设置为Greater Than Minimum。将CalcObject设置为Geodetc>Longitude,将Tolerance设置为0.05;

Prop_to_Asending_Node.StoppingConditions.Add('AscendingNode');
Prop_to_Asending_Node.StoppingConditions.Item(1).Properties.CoordSystem='CentralBody/Earth TOD';
Prop_to_Asending_Node.StoppingConditions.Item(1).Properties.Constraints.Add('UserDefined');
Prop_to_Asending_Node.StoppingConditions.Item(1).Properties.Constraints.Item(0).Name='Min_Longitude';
Prop_to_Asending_Node.StoppingConditions.Item(1).Properties.Constraints.Item(0).Criteria='eVACriteriaGreaterThanMinimum';
Prop_to_Asending_Node.StoppingConditions.Item(1).Properties.Constraints.Item(0).CalcObjectName='Longitude';
Prop_to_Asending_Node.StoppingConditions.Item(1).Properties.Constraints.Item(0).Tolerance=0.05;
Prop_to_Asending_Node.StoppingConditions.Remove('Duration');

选择结果,选择Prop to Ascending Node部分。添加Math作为独立的变量,改变ComponentName名字为Minimum_Longitude,将计算对象设置为Longitude。

Prop_to_Asending_Node.Results.Add('Minimum_Value');
Prop_to_Asending_Node.Results.Item(0).Name='Minimum_longitude';
Prop_to_Asending_Node.Results.Item(0).CalcObjectName='Longitude';

选择目标序列,打开Differential Corrector。将ImpulsiveMnver.Cartesian.X的组件作为控制参数。选择Pertubation为0.01m/s,MaxStep为1m/s。这个卫星将会进行小的调整来保持轨道,我们想要我们最大步长和摄动在一个小的规模下。将Minimum_Longitude作为结果,将期望值调整到12.55°。这颗卫星在它机动期间会保持在盒子里,我们允许保护边界来设置我们期望的值到12.55°,将Tolerance设置为0.001deg,将Action field设置为Run active profiles

Differential=EW.Item(1).Profiles.Item(0);
ControlParameters=Differential.ControlParameters;
Results=Differential.Results;
Vx=ControlParameters.Item(0);
Vx.Enable=1;
Vx.Perturbation=0.01;
Vx.MaxStep=1;
Min_lon=Results.Item(0);
Min_lon.Enable=1;
Min_lon.DesiredValue=12.55;
Min_lon.Tolerance=0.001;
EW.Item(1).Action='eVATargetSeqActionRunActiveProfiles';

2.2 添加南北位置保持部分

参照Automatic Sequence Browse命名为NS Station Keeping,双击NS Station Keeping来编辑,添加的序列如下图所示

satellite2.Propagator.AutoSequence.Add('NS Station Keeping');
satellite2.Propagator.AutoSequence.Item(2).Sequence.Insert('eVASegmentTypeTargetSequence','NS_SK_Drift','-');
NS=satellite2.Propagator.AutoSequence.Item(2).Sequence.Item(0).Segment;
NS.Insert('eVASegmentTypeManeuver','NS_Burn','-');

将姿态控制设置为Thrust Vector,设置控制系为VNC(Earth),选择X和Y作为的控制变量,设置Y为-200m/s。定义结果为NS Burn部分,选择结果为Math-Difference作为变量,选择ComponentName为SMA_Diff。改变CalcObject为Semimajor Axis。设置DifferenceOrder为CurrentMinusInitial。将Elems>TOD Inclination为second component variable.

Maneuver2=NS.Item(0);
Maneuver2.Maneuver.SetAttitudeControlType('eVAAttitudeControlThrustVector');
Maneuver2.EnableControlParameter('eVAControlManeuverImpulsiveCartesianX');
Maneuver2.EnableControlParameter('eVAControlManeuverImpulsiveCartesianY');
Maneuver2.Maneuver.AttitudeControl.Y=-200;
% 定义边界条件
Maneuver2.Results.Add('Difference');
Maneuver2.Results.Item(0).Name='SMA_Diff';
Maneuver2.Results.Item(0).DifferenceOrder='eVADifferenceOrderCurrentMinusInitial';
Maneuver2.Results.Item(0).CalcObjectName='Semimajor Axis';
Maneuver2.Results.Add('TOD');

定义Thrust Component

选择NS SK Drift。双击Differential Corrector,将ImpulsiveMnvr.Cartesian.X,Y。将X,Y component,摄动设置为0.1m/s,最大步数为10m/s。同时设置好SMA_Diff的期望值为0,允许成都为0.01km。将生成模式改为By tolerance,将模式改为Run Active Profiles

Differential2=satellite2.Propagator.AutoSequence.Item(2).Sequence.Item(0).Profiles.Item(0);
ControlParameters2=Differential2.ControlParameters;
Results2=Differential2.Results;
Vx=ControlParameters2.Item(0);
Vx.Enable=1;
Vx.Perturbation=0.1;
Vx.MaxStep=10;
Vy=ControlParameters2.Item(1);
Vy.Enable=1;
Vy.Perturbation=0.1;
Vy.MaxStep=10;
SMA_Diff=Results2.Item(0);
SMA_Diff.Enable=1;
SMA_Diff.DesiredValue=0;
SMA_Diff.Tolerance=0.01;
SMA_Diff.ScalingMethod='eVADCScalingMethodTolerance';
TOD=Results2.Item(1);
TOD.Enable=1;
TOD.DesiredValue=0;
TOD.Tolerance=0.001;
TOD.ScalingMethod='eVADCScalingMethodTolerance';

satellite2.Propagator.AutoSequence.Item(2).Sequence.Item(0).Action='eVATargetSeqActionRunActiveProfiles';

2.3创造额外的停止时间

在定义两个站位保持的自动序列后,我们现在专注于主序列部分。我们将添加新的停止条件来限制卫星如何工作。在同时两件事情发生。卫星接近了GEO盒子到达东边界,EW StationKeeping机动被需求。卫星接近了GEO盒子到达南边界。一个NS StationKeeping机动被需求

创建一个额外的停止条件。把GEO_Sat's卫星的Orbit,选择Propagate部分,添加Apoapsis停止条件,把它命名为Apoapsis EW。在Sequence部分EW Station Keeping,将重复次数设置为3次,选择最大预报时间10yr。选择OK关闭。

satellite2.Propagator.MainSequence.Remove('Propagate');
satellite2.Propagator.MainSequence.Insert('eVASegmentTypePropagate','Apoapsis_EW','-');
Apoapsis_EW=satellite2.Propagator.MainSequence.Item(1);

Apoapsis_EW.StoppingConditions.Add('Apoapsis');
Apoapsis_EW.StoppingConditions.Remove('Duration');
Apoapsis_EW.StoppingConditions.Item(0).Properties.RepeatCount=3;
Apoapsis_EW.StoppingConditions.Item(0).Properties.Sequence='EW Station Keeping';
Apoapsis_EW.MaxPropagationTime=10*365.25*86400;

建立一个前提条件在东西站点保持的情况,我们将添加一个情况来限制航天器沿着经度的距离,点击该条件的before条件,选择longitude作为停止情况,设置值为13.5deg。

Before=Apoapsis_EW.StoppingConditions.Item(0).Properties.BeforeConditions;
Before.Add('Longitude');
Before.Item(0).Properties.Trip=13.5;

添加Ascending Node NS Stopping Condition。接下来添加一个停止情况触发North South StationKeeping 自由序列。添加一个AscendingNode停止情况,命名为AscendingNode NS,选择序列为NS Station Keeping。将坐标系设置为Earth TOD。设置最大时间为10yr。

Apoapsis_EW.StoppingConditions.Add('AscendingNode');
Apoapsis_EW.StoppingConditions.Item(1).Properties.Sequence='NS Station Keeping';
Apoapsis_EW.StoppingConditions.Item(1).Properties.CoordSystem='CentralBody/Earth TOD';

添加一个约束条件为NS Station Keeping。我们将添加一个约束条件来限制航天器的轨道倾角。选择该约束条件为UserDefined,双击ComponentName,改名为MaxInclination。选择Criteria为Great than。将CalcObject换成Keplerian TOD Inclination,将坐标系设置为Earth TOD坐标系,最后设置Values为0.45°

Constraint1=Apoapsis_EW.StoppingConditions.Item(1).Properties.Constraint;
Constraint1.Add('UserDefined');
Constraint1.Item(0).Name='MaxInclination';
Constraint1.Item(0).Criteria='eVACriteriaGreaterThan';
MaxInclination=Constraint1.Item(0);
MaxInclination.CalcObjectName='TOD';
MaxInclination.Value=0.45;

这样确保了运行会在倾角到达0.45°之前停止。

创建一个最大的停止情况。因为最大条件不会运行450天。代码如下

satellite2.Propagator.MainSequence.Item(1).StoppingConditions.Add('AlwaysTripped');
MaxDuration=satellite2.Propagator.MainSequence.Item(1).StoppingConditions.Item(2);
MaxDuration.Name='MaxDuration';
MaxDuration.Properties.Constraints.Add('UserDefined');
MaxDuration.Properties.Constraints.Item(0).Name='MaxDuration';
MaxDuration.Properties.Constraints.Item(0).Criteria='eVACriteriaGreaterThan';
MaxDuration.Properties.Constraints.Item(0).CalcObjectName='Duration';
MaxDuration.Properties.Constraints.Item(0).Value=450*86400;

最后 Clear Graphic 点击运行MCS,再点击Clear Graphic来移除画好的轨迹

root.ExecuteCommand(['Astrogator */Satellite/',Sat_Name2,' RunMCS']);
root.ExecuteCommand(['Astrogator */Satellite/',Sat_Name2,' ClearDWCGraphics');

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

特产销售|基于Springboot+vue的藏区特产销售平台(源码+数据库+文档)​

目录 基于Springbootvue的藏区特产销售平台 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2管理员功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|毕设布道…

JavaScript 防抖与节流——以游戏智慧解锁实战奥秘

🔥 个人主页:空白诗 文章目录 🎮 引言❓ 什么是防抖和节流🏹 防抖(Debounce) - 锁定追击,精确无误📌 基础概念📌 适用场景📌 实战代码:防抖 应用于输入框的实时搜索 &…

【Python-爬虫】

Python-爬虫 ■ 爬虫分类■ 1. 通用网络爬虫:(搜索引擎使用,遵守robots协议)■ robots协议(君子协议) ■ 2. 聚集网络爬虫:自己写的爬虫程序 ■ urllib.request(要导入的模块&#x…

带有-i选项的sed命令在Linux上执行成功,但在MacOS上失败了

问题: 我已经成功地使用以下 sed 命令在Linux中搜索/替换文本: sed -i s/old_string/new_string/g /path/to/file然而,当我在Mac OS X上尝试时,我得到: command i expects \ followed by text我以为我的Mac运行的是…

高效文件管理:一键提取文件名关键字,快速创建对应文件夹

在数字化时代,文件管理成为我们日常工作中不可或缺的一部分。随着文件数量的不断增加,如何高效、有序地管理这些文件成为了许多人的挑战。传统的文件管理方法,如手动创建文件夹和分类文件,不仅耗时耗力,而且容易出错。…

使用html和css实现个人简历表单的制作

根据下列要求,做出下图所示的个人简历(表单) 表单要求 Ⅰ、表格整体的边框为1像素,单元格间距为0,表格中前六列列宽均为100像素,第七列 为200像素,表格整体在页面上居中显示; Ⅱ、前…

多功能投票小程序基于ThinkPHP+FastAdmin+Uniapp(源码搭建/上线/运营/售后/维护更新)

基于ThinkPHPFastAdminUniapp开发的多功能系统,支持图文投票、自定义选手报名内容、自定义主题色、礼物功能(高级授权)、弹幕功能(高级授权)、会员发布、支持数据库私有化部署,Uniapp提供全部无加密源码。 功能特性

Vue-watch监听器

监听器 watch侦听器(监视器)简单写法完整写法 watch侦听器(监视器) 作用:监视数据变化,执行一些业务逻辑或异步操作 语法: watch同样声明在跟data同级的配置项中简单写法: 简单类型…

ios 开发如何给项目安装第三方库,以websocket库 SocketRocket 为例

1.brew 安装 cococapods $ brew install cocoapods 2、找到xcode项目 的根目录,如图,在根目录下创建Podfile 文件 3、在Podfile文件中写入 platform :ios, 13.0 use_frameworks! target chat_app do pod SocketRocket end project ../chat_app.x…

攻防世界-web-fileinclude

题目 解题 原题代码 <html> <head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /></head><b>Notice</b>: Undefined index: language in <b>/var/www/html/index.php</b> on lin…

【硬件模块】ESP-01SWiFi模块基于AT指令详解(WiFi,TCP/IP,MQTT)

ESP-01S ESP-01S是由安信可科技开发的一款Wi-Fi模块。其核心处理器是ESP8266&#xff0c;该处理器在较小尺寸的封装中集成了业界领先的Tensilica L106超低功耗32位微型MCU&#xff0c;带有16位精简模式&#xff0c;主频支持80MHz和160MHz&#xff0c;并集成了Wi-Fi MAC/BB/RF/P…

windows@注册表介绍@注册表的查看和编辑操作

文章目录 abstractrefs注册表的主要组件包括根键极其缩写名称&#x1f47a;子键特性 查看注册表&#x1f47a;使用powershell查看路径下的子路径声明概念Get-ChildItem查看注册表路径下的项Set-Location进入注册表路径举例说明查看文件系统某个路径下的项查看某个注册表路径的项…

笨方法自学python(二)-注释

注释和#号 程序里的注释是很重要的。它们可以用自然语言告诉你某段代码的功能是什么。在你想要临时移除一段代码时&#xff0c;你还可以用注解的方式将这段代码临时禁用。 # A comment, this is so you can read your program later. # Anything after the # is ignored by py…

Ubuntu磁盘剩余空间不足,空间异常

近日发现用了3年的Ubuntu系统笔记本磁盘空间极度告急&#xff0c;上网搜了一下都是讲解如何扩容、如何重新挂载空间&#xff0c;但是博主发现/home目录明明分配了200G的空间&#xff0c;但是只剩下6G可用&#xff0c;查询所有的文件夹发现&#xff0c;所有文件加起来已使用50G左…

串口数据的发送(单词的发送)and UART原理协议---第九天

1.在中断函数中&#xff0c;定义一个数组给SBUF&#xff0c; i数组的偏移以便输入单词&#xff0c;&#xff1b; 用strstr&#xff08;&#xff09;函数来比较cmd输入的单词里面的 "en" , " se ";亮灯后i回来原来的位置0&#xff0c;清空cmd, UART 原理…

二进制转为HEX数组小工具

在使用RA8889时&#xff0c;JPG的解码只能从FLASH的DMA通道获取&#xff0c;那么如果要从远端、或者SD卡等处读取JPG图片出来显示怎么办&#xff1f; RA8889支持JPG图片硬解码&#xff0c;但数据流是从FLASH进行DMA读取的&#xff0c;然后再进行解码。因此这种情况下&#xff…

01.Net基础知识

.Net的用途 Web、移动、云、桌面、游戏开发、物联网 &#xff08;IDE&#xff1a;集成开发环境&#xff09; .Net学习资源 Microsoft Learn、GitHub、G码云&#xff08;Gitee&#xff09; Visual Studio初步使用 1&#xff09;可创建的项目种类&#xff08;主要学习以下四…

从loss角度理解LLM涌现能力

如今的很多研究都表明小模型也能出现涌现能力&#xff0c;本文的作者团队通过大量实验发现模型的涌现能力与模型大小、训练计算量无关&#xff0c;只与预训练loss相关。 作者团队惊奇地发现&#xff0c;不管任何下游任务&#xff0c;不管模型大小&#xff0c;模型出现涌现能力…

【C语言题解】输入n(1~9),再输入n个长度不超过50的字符串,给这n个字符串排序并输出它们

&#x1f970;欢迎关注 轻松拿捏C语言系列&#xff0c;来和 小哇 一起进步&#xff01;✊ &#x1f308;感谢大家的阅读、点赞、收藏和关注 解题思路&#xff1a; 首先&#xff1a;使用一个二维字符数组来存储输入的字符串。由于n的范围是1到9&#xff0c;我们可以直接定义一…

容器中的单例集合(二)——List接口的实现类之ArrayList

根据接口的定义我们知道&#xff0c;接口的作用是定义标准或者规定&#xff0c;要满足接口中的要求就需要定义一个实现类来实现接口中定义的标准。List接口的常用实现类有ArrayList、Vector、Stack以及LinkedList。其中ArrayList类是较为基础的一个实现类&#xff0c;理解Array…