Atualizado componentes pos refatoracao
This commit is contained in:
parent
34799f80fb
commit
966280da44
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
|
|
@ -186,6 +186,12 @@
|
|||
<Compile Include="Forms\Atuador\frmAtuCamera.Designer.cs">
|
||||
<DependentUpon>frmAtuCamera.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Forms\frmGPS.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\frmGPS.Designer.cs">
|
||||
<DependentUpon>frmGPS.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Forms\frmMapa.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
|
|
@ -240,7 +246,14 @@
|
|||
<Compile Include="Forms\Sensoriamento\frmSenConfig.Designer.cs">
|
||||
<DependentUpon>frmSenConfig.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Forms\Sensoriamento\frmSenConfig2.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\Sensoriamento\frmSenConfig2.Designer.cs">
|
||||
<DependentUpon>frmSenConfig2.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Models\CameraModel.cs" />
|
||||
<Compile Include="Models\GPSModel.cs" />
|
||||
<Compile Include="Models\MapasModel.cs" />
|
||||
<Compile Include="Models\Modules\AtuadorModel.cs" />
|
||||
<Compile Include="Models\Modules\DirecionalModel.cs" />
|
||||
|
|
@ -264,6 +277,7 @@
|
|||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Services\DispositivosServiceFactory.cs" />
|
||||
<Compile Include="Services\GPSService.cs" />
|
||||
<Compile Include="Services\IDispositivosService.cs" />
|
||||
<Compile Include="Services\MapasService.cs" />
|
||||
<Compile Include="Services\PythonService.cs" />
|
||||
|
|
@ -284,6 +298,9 @@
|
|||
<EmbeddedResource Include="Forms\Atuador\frmAtuCamera.resx">
|
||||
<DependentUpon>frmAtuCamera.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\frmGPS.resx">
|
||||
<DependentUpon>frmGPS.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\frmMapa.resx">
|
||||
<DependentUpon>frmMapa.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
|
|
@ -314,6 +331,9 @@
|
|||
<EmbeddedResource Include="Forms\Sensoriamento\frmSenConfig.resx">
|
||||
<DependentUpon>frmSenConfig.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\Sensoriamento\frmSenConfig2.resx">
|
||||
<DependentUpon>frmSenConfig2.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
|
|
@ -376,7 +396,7 @@
|
|||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Python\Scripts\face-recognize.py">
|
||||
<Content Include="Python\Scripts\gps-viewer.py">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Python\Scripts\green-detector.py">
|
||||
|
|
@ -391,9 +411,6 @@
|
|||
<Content Include="Python\Scripts\map-load.py">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Python\Scripts\object-detector.py">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Python\Output\" />
|
||||
|
|
|
|||
|
|
@ -27,9 +27,9 @@ namespace AgroBase.Forms
|
|||
private Timer tmrLeitura;
|
||||
|
||||
private int MaxLeituras = 10;
|
||||
private string VideoPorta = "8080";
|
||||
private string VideoPorta = VariaveisPortas.CameraSolo;
|
||||
private string VideoUrl = "green_objects";
|
||||
private string SocketPorta = "6536";
|
||||
private string SocketPorta = VariaveisPortas.SocketSolo;
|
||||
private string ArquivoLeitura = "objetos.json";
|
||||
|
||||
public frmAtuCamera()
|
||||
|
|
|
|||
|
|
@ -84,59 +84,66 @@ namespace AgroBase.Forms.Atuador
|
|||
//
|
||||
this.cmbGND1.Enabled = false;
|
||||
this.cmbGND1.FormattingEnabled = true;
|
||||
this.cmbGND1.Location = new System.Drawing.Point(18, 719);
|
||||
this.cmbGND1.Location = new System.Drawing.Point(14, 584);
|
||||
this.cmbGND1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGND1.Name = "cmbGND1";
|
||||
this.cmbGND1.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGND1.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGND1.TabIndex = 179;
|
||||
//
|
||||
// cmb5V
|
||||
//
|
||||
this.cmb5V.Enabled = false;
|
||||
this.cmb5V.FormattingEnabled = true;
|
||||
this.cmb5V.Location = new System.Drawing.Point(18, 689);
|
||||
this.cmb5V.Location = new System.Drawing.Point(14, 560);
|
||||
this.cmb5V.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmb5V.Name = "cmb5V";
|
||||
this.cmb5V.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmb5V.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmb5V.TabIndex = 178;
|
||||
//
|
||||
// cmbGPIO14
|
||||
//
|
||||
this.cmbGPIO14.FormattingEnabled = true;
|
||||
this.cmbGPIO14.Location = new System.Drawing.Point(18, 659);
|
||||
this.cmbGPIO14.Location = new System.Drawing.Point(14, 535);
|
||||
this.cmbGPIO14.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO14.Name = "cmbGPIO14";
|
||||
this.cmbGPIO14.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO14.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO14.TabIndex = 177;
|
||||
//
|
||||
// cmbGND2
|
||||
//
|
||||
this.cmbGND2.Enabled = false;
|
||||
this.cmbGND2.FormattingEnabled = true;
|
||||
this.cmbGND2.Location = new System.Drawing.Point(584, 719);
|
||||
this.cmbGND2.Location = new System.Drawing.Point(438, 584);
|
||||
this.cmbGND2.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGND2.Name = "cmbGND2";
|
||||
this.cmbGND2.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGND2.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGND2.TabIndex = 176;
|
||||
//
|
||||
// cmbGND3
|
||||
//
|
||||
this.cmbGND3.Enabled = false;
|
||||
this.cmbGND3.FormattingEnabled = true;
|
||||
this.cmbGND3.Location = new System.Drawing.Point(584, 689);
|
||||
this.cmbGND3.Location = new System.Drawing.Point(438, 560);
|
||||
this.cmbGND3.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGND3.Name = "cmbGND3";
|
||||
this.cmbGND3.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGND3.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGND3.TabIndex = 175;
|
||||
//
|
||||
// cmbGPIO19
|
||||
//
|
||||
this.cmbGPIO19.FormattingEnabled = true;
|
||||
this.cmbGPIO19.Location = new System.Drawing.Point(584, 659);
|
||||
this.cmbGPIO19.Location = new System.Drawing.Point(438, 535);
|
||||
this.cmbGPIO19.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO19.Name = "cmbGPIO19";
|
||||
this.cmbGPIO19.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO19.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO19.TabIndex = 174;
|
||||
//
|
||||
// btnSalvar
|
||||
//
|
||||
this.btnSalvar.Location = new System.Drawing.Point(584, 786);
|
||||
this.btnSalvar.Location = new System.Drawing.Point(438, 639);
|
||||
this.btnSalvar.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.btnSalvar.Name = "btnSalvar";
|
||||
this.btnSalvar.Size = new System.Drawing.Size(148, 40);
|
||||
this.btnSalvar.Size = new System.Drawing.Size(111, 32);
|
||||
this.btnSalvar.TabIndex = 173;
|
||||
this.btnSalvar.Text = "Salvar";
|
||||
this.btnSalvar.UseVisualStyleBackColor = true;
|
||||
|
|
@ -145,319 +152,358 @@ namespace AgroBase.Forms.Atuador
|
|||
// cmbGPIO20
|
||||
//
|
||||
this.cmbGPIO20.FormattingEnabled = true;
|
||||
this.cmbGPIO20.Location = new System.Drawing.Point(584, 629);
|
||||
this.cmbGPIO20.Location = new System.Drawing.Point(438, 511);
|
||||
this.cmbGPIO20.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO20.Name = "cmbGPIO20";
|
||||
this.cmbGPIO20.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO20.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO20.TabIndex = 172;
|
||||
//
|
||||
// cmbGPIO21
|
||||
//
|
||||
this.cmbGPIO21.FormattingEnabled = true;
|
||||
this.cmbGPIO21.Location = new System.Drawing.Point(584, 599);
|
||||
this.cmbGPIO21.Location = new System.Drawing.Point(438, 487);
|
||||
this.cmbGPIO21.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO21.Name = "cmbGPIO21";
|
||||
this.cmbGPIO21.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO21.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO21.TabIndex = 171;
|
||||
//
|
||||
// cmbGPIO47
|
||||
//
|
||||
this.cmbGPIO47.FormattingEnabled = true;
|
||||
this.cmbGPIO47.Location = new System.Drawing.Point(584, 569);
|
||||
this.cmbGPIO47.Location = new System.Drawing.Point(438, 462);
|
||||
this.cmbGPIO47.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO47.Name = "cmbGPIO47";
|
||||
this.cmbGPIO47.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO47.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO47.TabIndex = 170;
|
||||
//
|
||||
// cmbGPIO48
|
||||
//
|
||||
this.cmbGPIO48.FormattingEnabled = true;
|
||||
this.cmbGPIO48.Location = new System.Drawing.Point(584, 539);
|
||||
this.cmbGPIO48.Location = new System.Drawing.Point(438, 438);
|
||||
this.cmbGPIO48.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO48.Name = "cmbGPIO48";
|
||||
this.cmbGPIO48.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO48.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO48.TabIndex = 169;
|
||||
//
|
||||
// cmbGPIO45
|
||||
//
|
||||
this.cmbGPIO45.FormattingEnabled = true;
|
||||
this.cmbGPIO45.Location = new System.Drawing.Point(584, 509);
|
||||
this.cmbGPIO45.Location = new System.Drawing.Point(438, 414);
|
||||
this.cmbGPIO45.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO45.Name = "cmbGPIO45";
|
||||
this.cmbGPIO45.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO45.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO45.TabIndex = 168;
|
||||
//
|
||||
// cmbGPIO0
|
||||
//
|
||||
this.cmbGPIO0.FormattingEnabled = true;
|
||||
this.cmbGPIO0.Location = new System.Drawing.Point(584, 479);
|
||||
this.cmbGPIO0.Location = new System.Drawing.Point(438, 389);
|
||||
this.cmbGPIO0.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO0.Name = "cmbGPIO0";
|
||||
this.cmbGPIO0.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO0.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO0.TabIndex = 167;
|
||||
//
|
||||
// cmbGPIO35
|
||||
//
|
||||
this.cmbGPIO35.FormattingEnabled = true;
|
||||
this.cmbGPIO35.Location = new System.Drawing.Point(584, 449);
|
||||
this.cmbGPIO35.Location = new System.Drawing.Point(438, 365);
|
||||
this.cmbGPIO35.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO35.Name = "cmbGPIO35";
|
||||
this.cmbGPIO35.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO35.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO35.TabIndex = 166;
|
||||
//
|
||||
// cmbGPIO36
|
||||
//
|
||||
this.cmbGPIO36.FormattingEnabled = true;
|
||||
this.cmbGPIO36.Location = new System.Drawing.Point(584, 419);
|
||||
this.cmbGPIO36.Location = new System.Drawing.Point(438, 340);
|
||||
this.cmbGPIO36.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO36.Name = "cmbGPIO36";
|
||||
this.cmbGPIO36.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO36.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO36.TabIndex = 165;
|
||||
//
|
||||
// cmbGPIO37
|
||||
//
|
||||
this.cmbGPIO37.FormattingEnabled = true;
|
||||
this.cmbGPIO37.Location = new System.Drawing.Point(584, 389);
|
||||
this.cmbGPIO37.Location = new System.Drawing.Point(438, 316);
|
||||
this.cmbGPIO37.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO37.Name = "cmbGPIO37";
|
||||
this.cmbGPIO37.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO37.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO37.TabIndex = 164;
|
||||
//
|
||||
// cmbGPIO38
|
||||
//
|
||||
this.cmbGPIO38.FormattingEnabled = true;
|
||||
this.cmbGPIO38.Location = new System.Drawing.Point(584, 359);
|
||||
this.cmbGPIO38.Location = new System.Drawing.Point(438, 292);
|
||||
this.cmbGPIO38.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO38.Name = "cmbGPIO38";
|
||||
this.cmbGPIO38.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO38.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO38.TabIndex = 163;
|
||||
//
|
||||
// cmbGPIO39
|
||||
//
|
||||
this.cmbGPIO39.FormattingEnabled = true;
|
||||
this.cmbGPIO39.Location = new System.Drawing.Point(584, 329);
|
||||
this.cmbGPIO39.Location = new System.Drawing.Point(438, 267);
|
||||
this.cmbGPIO39.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO39.Name = "cmbGPIO39";
|
||||
this.cmbGPIO39.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO39.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO39.TabIndex = 162;
|
||||
//
|
||||
// cmbGPIO40
|
||||
//
|
||||
this.cmbGPIO40.FormattingEnabled = true;
|
||||
this.cmbGPIO40.Location = new System.Drawing.Point(584, 299);
|
||||
this.cmbGPIO40.Location = new System.Drawing.Point(438, 243);
|
||||
this.cmbGPIO40.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO40.Name = "cmbGPIO40";
|
||||
this.cmbGPIO40.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO40.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO40.TabIndex = 161;
|
||||
//
|
||||
// cmbGPIO41
|
||||
//
|
||||
this.cmbGPIO41.FormattingEnabled = true;
|
||||
this.cmbGPIO41.Location = new System.Drawing.Point(584, 269);
|
||||
this.cmbGPIO41.Location = new System.Drawing.Point(438, 219);
|
||||
this.cmbGPIO41.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO41.Name = "cmbGPIO41";
|
||||
this.cmbGPIO41.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO41.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO41.TabIndex = 160;
|
||||
//
|
||||
// cmbGPIO42
|
||||
//
|
||||
this.cmbGPIO42.FormattingEnabled = true;
|
||||
this.cmbGPIO42.Location = new System.Drawing.Point(584, 239);
|
||||
this.cmbGPIO42.Location = new System.Drawing.Point(438, 194);
|
||||
this.cmbGPIO42.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO42.Name = "cmbGPIO42";
|
||||
this.cmbGPIO42.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO42.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO42.TabIndex = 159;
|
||||
//
|
||||
// cmbGPIO2
|
||||
//
|
||||
this.cmbGPIO2.FormattingEnabled = true;
|
||||
this.cmbGPIO2.Location = new System.Drawing.Point(584, 209);
|
||||
this.cmbGPIO2.Location = new System.Drawing.Point(438, 170);
|
||||
this.cmbGPIO2.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO2.Name = "cmbGPIO2";
|
||||
this.cmbGPIO2.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO2.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO2.TabIndex = 158;
|
||||
//
|
||||
// cmbGPIO1
|
||||
//
|
||||
this.cmbGPIO1.FormattingEnabled = true;
|
||||
this.cmbGPIO1.Location = new System.Drawing.Point(584, 179);
|
||||
this.cmbGPIO1.Location = new System.Drawing.Point(438, 145);
|
||||
this.cmbGPIO1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO1.Name = "cmbGPIO1";
|
||||
this.cmbGPIO1.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO1.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO1.TabIndex = 157;
|
||||
//
|
||||
// cmbRX
|
||||
//
|
||||
this.cmbRX.Enabled = false;
|
||||
this.cmbRX.FormattingEnabled = true;
|
||||
this.cmbRX.Location = new System.Drawing.Point(584, 149);
|
||||
this.cmbRX.Location = new System.Drawing.Point(438, 121);
|
||||
this.cmbRX.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbRX.Name = "cmbRX";
|
||||
this.cmbRX.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbRX.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbRX.TabIndex = 156;
|
||||
//
|
||||
// cmbTX
|
||||
//
|
||||
this.cmbTX.Enabled = false;
|
||||
this.cmbTX.FormattingEnabled = true;
|
||||
this.cmbTX.Location = new System.Drawing.Point(584, 119);
|
||||
this.cmbTX.Location = new System.Drawing.Point(438, 97);
|
||||
this.cmbTX.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbTX.Name = "cmbTX";
|
||||
this.cmbTX.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbTX.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbTX.TabIndex = 155;
|
||||
//
|
||||
// cmbGND4
|
||||
//
|
||||
this.cmbGND4.Enabled = false;
|
||||
this.cmbGND4.FormattingEnabled = true;
|
||||
this.cmbGND4.Location = new System.Drawing.Point(584, 89);
|
||||
this.cmbGND4.Location = new System.Drawing.Point(438, 72);
|
||||
this.cmbGND4.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGND4.Name = "cmbGND4";
|
||||
this.cmbGND4.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGND4.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGND4.TabIndex = 154;
|
||||
//
|
||||
// cmbGPIO13
|
||||
//
|
||||
this.cmbGPIO13.FormattingEnabled = true;
|
||||
this.cmbGPIO13.Location = new System.Drawing.Point(18, 629);
|
||||
this.cmbGPIO13.Location = new System.Drawing.Point(14, 511);
|
||||
this.cmbGPIO13.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO13.Name = "cmbGPIO13";
|
||||
this.cmbGPIO13.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO13.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO13.TabIndex = 153;
|
||||
//
|
||||
// cmbGPIO12
|
||||
//
|
||||
this.cmbGPIO12.FormattingEnabled = true;
|
||||
this.cmbGPIO12.Location = new System.Drawing.Point(18, 599);
|
||||
this.cmbGPIO12.Location = new System.Drawing.Point(14, 487);
|
||||
this.cmbGPIO12.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO12.Name = "cmbGPIO12";
|
||||
this.cmbGPIO12.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO12.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO12.TabIndex = 152;
|
||||
//
|
||||
// cmbGPIO11
|
||||
//
|
||||
this.cmbGPIO11.FormattingEnabled = true;
|
||||
this.cmbGPIO11.Location = new System.Drawing.Point(18, 569);
|
||||
this.cmbGPIO11.Location = new System.Drawing.Point(14, 462);
|
||||
this.cmbGPIO11.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO11.Name = "cmbGPIO11";
|
||||
this.cmbGPIO11.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO11.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO11.TabIndex = 151;
|
||||
//
|
||||
// cmbGPIO10
|
||||
//
|
||||
this.cmbGPIO10.FormattingEnabled = true;
|
||||
this.cmbGPIO10.Location = new System.Drawing.Point(18, 539);
|
||||
this.cmbGPIO10.Location = new System.Drawing.Point(14, 438);
|
||||
this.cmbGPIO10.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO10.Name = "cmbGPIO10";
|
||||
this.cmbGPIO10.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO10.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO10.TabIndex = 150;
|
||||
//
|
||||
// cmbGPIO9
|
||||
//
|
||||
this.cmbGPIO9.FormattingEnabled = true;
|
||||
this.cmbGPIO9.Location = new System.Drawing.Point(18, 509);
|
||||
this.cmbGPIO9.Location = new System.Drawing.Point(14, 414);
|
||||
this.cmbGPIO9.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO9.Name = "cmbGPIO9";
|
||||
this.cmbGPIO9.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO9.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO9.TabIndex = 149;
|
||||
//
|
||||
// cmbGPIO46
|
||||
//
|
||||
this.cmbGPIO46.FormattingEnabled = true;
|
||||
this.cmbGPIO46.Location = new System.Drawing.Point(18, 479);
|
||||
this.cmbGPIO46.Location = new System.Drawing.Point(14, 389);
|
||||
this.cmbGPIO46.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO46.Name = "cmbGPIO46";
|
||||
this.cmbGPIO46.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO46.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO46.TabIndex = 148;
|
||||
//
|
||||
// cmbGPIO3
|
||||
//
|
||||
this.cmbGPIO3.FormattingEnabled = true;
|
||||
this.cmbGPIO3.Location = new System.Drawing.Point(18, 449);
|
||||
this.cmbGPIO3.Location = new System.Drawing.Point(14, 365);
|
||||
this.cmbGPIO3.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO3.Name = "cmbGPIO3";
|
||||
this.cmbGPIO3.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO3.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO3.TabIndex = 147;
|
||||
//
|
||||
// cmbGPIO8
|
||||
//
|
||||
this.cmbGPIO8.FormattingEnabled = true;
|
||||
this.cmbGPIO8.Location = new System.Drawing.Point(18, 419);
|
||||
this.cmbGPIO8.Location = new System.Drawing.Point(14, 340);
|
||||
this.cmbGPIO8.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO8.Name = "cmbGPIO8";
|
||||
this.cmbGPIO8.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO8.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO8.TabIndex = 146;
|
||||
//
|
||||
// cmbGPIO18
|
||||
//
|
||||
this.cmbGPIO18.FormattingEnabled = true;
|
||||
this.cmbGPIO18.Location = new System.Drawing.Point(18, 389);
|
||||
this.cmbGPIO18.Location = new System.Drawing.Point(14, 316);
|
||||
this.cmbGPIO18.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO18.Name = "cmbGPIO18";
|
||||
this.cmbGPIO18.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO18.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO18.TabIndex = 145;
|
||||
//
|
||||
// cmbGPIO17
|
||||
//
|
||||
this.cmbGPIO17.FormattingEnabled = true;
|
||||
this.cmbGPIO17.Location = new System.Drawing.Point(18, 359);
|
||||
this.cmbGPIO17.Location = new System.Drawing.Point(14, 292);
|
||||
this.cmbGPIO17.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO17.Name = "cmbGPIO17";
|
||||
this.cmbGPIO17.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO17.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO17.TabIndex = 144;
|
||||
//
|
||||
// cmbGPIO16
|
||||
//
|
||||
this.cmbGPIO16.FormattingEnabled = true;
|
||||
this.cmbGPIO16.Location = new System.Drawing.Point(18, 329);
|
||||
this.cmbGPIO16.Location = new System.Drawing.Point(14, 267);
|
||||
this.cmbGPIO16.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO16.Name = "cmbGPIO16";
|
||||
this.cmbGPIO16.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO16.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO16.TabIndex = 143;
|
||||
//
|
||||
// cmbGPIO15
|
||||
//
|
||||
this.cmbGPIO15.FormattingEnabled = true;
|
||||
this.cmbGPIO15.Location = new System.Drawing.Point(18, 299);
|
||||
this.cmbGPIO15.Location = new System.Drawing.Point(14, 243);
|
||||
this.cmbGPIO15.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO15.Name = "cmbGPIO15";
|
||||
this.cmbGPIO15.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO15.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO15.TabIndex = 142;
|
||||
//
|
||||
// cmbGPIO7
|
||||
//
|
||||
this.cmbGPIO7.FormattingEnabled = true;
|
||||
this.cmbGPIO7.Location = new System.Drawing.Point(18, 269);
|
||||
this.cmbGPIO7.Location = new System.Drawing.Point(14, 219);
|
||||
this.cmbGPIO7.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO7.Name = "cmbGPIO7";
|
||||
this.cmbGPIO7.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO7.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO7.TabIndex = 141;
|
||||
//
|
||||
// cmbGPIO6
|
||||
//
|
||||
this.cmbGPIO6.FormattingEnabled = true;
|
||||
this.cmbGPIO6.Location = new System.Drawing.Point(18, 239);
|
||||
this.cmbGPIO6.Location = new System.Drawing.Point(14, 194);
|
||||
this.cmbGPIO6.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO6.Name = "cmbGPIO6";
|
||||
this.cmbGPIO6.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO6.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO6.TabIndex = 140;
|
||||
//
|
||||
// cmbGPIO5
|
||||
//
|
||||
this.cmbGPIO5.FormattingEnabled = true;
|
||||
this.cmbGPIO5.Location = new System.Drawing.Point(18, 209);
|
||||
this.cmbGPIO5.Location = new System.Drawing.Point(14, 170);
|
||||
this.cmbGPIO5.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO5.Name = "cmbGPIO5";
|
||||
this.cmbGPIO5.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO5.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO5.TabIndex = 139;
|
||||
//
|
||||
// cmbGPIO4
|
||||
//
|
||||
this.cmbGPIO4.FormattingEnabled = true;
|
||||
this.cmbGPIO4.Location = new System.Drawing.Point(18, 179);
|
||||
this.cmbGPIO4.Location = new System.Drawing.Point(14, 145);
|
||||
this.cmbGPIO4.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO4.Name = "cmbGPIO4";
|
||||
this.cmbGPIO4.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO4.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO4.TabIndex = 138;
|
||||
//
|
||||
// cmbRst
|
||||
//
|
||||
this.cmbRst.Enabled = false;
|
||||
this.cmbRst.FormattingEnabled = true;
|
||||
this.cmbRst.Location = new System.Drawing.Point(18, 149);
|
||||
this.cmbRst.Location = new System.Drawing.Point(14, 121);
|
||||
this.cmbRst.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbRst.Name = "cmbRst";
|
||||
this.cmbRst.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbRst.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbRst.TabIndex = 137;
|
||||
//
|
||||
// cmb3v3_2
|
||||
//
|
||||
this.cmb3v3_2.Enabled = false;
|
||||
this.cmb3v3_2.FormattingEnabled = true;
|
||||
this.cmb3v3_2.Location = new System.Drawing.Point(18, 119);
|
||||
this.cmb3v3_2.Location = new System.Drawing.Point(14, 97);
|
||||
this.cmb3v3_2.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmb3v3_2.Name = "cmb3v3_2";
|
||||
this.cmb3v3_2.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmb3v3_2.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmb3v3_2.TabIndex = 136;
|
||||
//
|
||||
// cmb3v3_1
|
||||
//
|
||||
this.cmb3v3_1.Enabled = false;
|
||||
this.cmb3v3_1.FormattingEnabled = true;
|
||||
this.cmb3v3_1.Location = new System.Drawing.Point(18, 89);
|
||||
this.cmb3v3_1.Location = new System.Drawing.Point(14, 72);
|
||||
this.cmb3v3_1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmb3v3_1.Name = "cmb3v3_1";
|
||||
this.cmb3v3_1.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmb3v3_1.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmb3v3_1.TabIndex = 135;
|
||||
//
|
||||
// imgESP32
|
||||
//
|
||||
this.imgESP32.Image = ((System.Drawing.Image)(resources.GetObject("imgESP32.Image")));
|
||||
this.imgESP32.Location = new System.Drawing.Point(172, -2);
|
||||
this.imgESP32.Location = new System.Drawing.Point(129, -2);
|
||||
this.imgESP32.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.imgESP32.Name = "imgESP32";
|
||||
this.imgESP32.Size = new System.Drawing.Size(406, 847);
|
||||
this.imgESP32.Size = new System.Drawing.Size(304, 688);
|
||||
this.imgESP32.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.imgESP32.TabIndex = 134;
|
||||
this.imgESP32.TabStop = false;
|
||||
|
|
@ -465,18 +511,19 @@ namespace AgroBase.Forms.Atuador
|
|||
// lblPinout
|
||||
//
|
||||
this.lblPinout.AutoSize = true;
|
||||
this.lblPinout.Location = new System.Drawing.Point(15, 12);
|
||||
this.lblPinout.Location = new System.Drawing.Point(11, 10);
|
||||
this.lblPinout.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblPinout.Name = "lblPinout";
|
||||
this.lblPinout.Size = new System.Drawing.Size(48, 17);
|
||||
this.lblPinout.Size = new System.Drawing.Size(37, 13);
|
||||
this.lblPinout.TabIndex = 180;
|
||||
this.lblPinout.Text = "Pinout";
|
||||
//
|
||||
// frmAtuConfig
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.White;
|
||||
this.ClientSize = new System.Drawing.Size(1285, 838);
|
||||
this.ClientSize = new System.Drawing.Size(964, 693);
|
||||
this.Controls.Add(this.lblPinout);
|
||||
this.Controls.Add(this.cmbGND1);
|
||||
this.Controls.Add(this.cmb5V);
|
||||
|
|
@ -524,6 +571,7 @@ namespace AgroBase.Forms.Atuador
|
|||
this.Controls.Add(this.cmb3v3_2);
|
||||
this.Controls.Add(this.cmb3v3_1);
|
||||
this.Controls.Add(this.imgESP32);
|
||||
this.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.Name = "frmAtuConfig";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "Atuadores - Parametrização";
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -216,9 +216,9 @@ namespace AgroBase.Forms.Operacoes
|
|||
{
|
||||
string ArquivoLeitura = "angulos.json";
|
||||
int MaxLeituras = 10;
|
||||
string VideoPorta = "8081";
|
||||
string VideoPorta = VariaveisPortas.CameraCaminho;
|
||||
string VideoUrl = "line_angles";
|
||||
string SocketPorta = "6536";
|
||||
string SocketPorta = VariaveisPortas.SocketCaminho;
|
||||
|
||||
cameraCaminho.ArquivoLeitura = ArquivoLeitura;
|
||||
cameraCaminho.IniciarCamera(
|
||||
|
|
|
|||
|
|
@ -20,9 +20,9 @@ namespace AgroBase.Forms.Sensoriamento
|
|||
private Timer tmrLeitura;
|
||||
|
||||
private int MaxLeituras = 10;
|
||||
private string VideoPorta = "8081";
|
||||
private string VideoPorta = VariaveisPortas.CameraCaminho;
|
||||
private string VideoUrl = "line_angle";
|
||||
private string SocketPorta = "6535";
|
||||
private string SocketPorta = VariaveisPortas.SocketCaminho;
|
||||
private bool MostrarDebug = true;
|
||||
private string ArquivoLeitura = "leitura_angulo.json";
|
||||
|
||||
|
|
|
|||
|
|
@ -83,9 +83,10 @@ namespace AgroBase.Forms.Sensoriamento
|
|||
// lblPinout
|
||||
//
|
||||
this.lblPinout.AutoSize = true;
|
||||
this.lblPinout.Location = new System.Drawing.Point(15, 12);
|
||||
this.lblPinout.Location = new System.Drawing.Point(11, 10);
|
||||
this.lblPinout.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblPinout.Name = "lblPinout";
|
||||
this.lblPinout.Size = new System.Drawing.Size(48, 17);
|
||||
this.lblPinout.Size = new System.Drawing.Size(37, 13);
|
||||
this.lblPinout.TabIndex = 134;
|
||||
this.lblPinout.Text = "Pinout";
|
||||
//
|
||||
|
|
@ -93,59 +94,66 @@ namespace AgroBase.Forms.Sensoriamento
|
|||
//
|
||||
this.cmbGND1.Enabled = false;
|
||||
this.cmbGND1.FormattingEnabled = true;
|
||||
this.cmbGND1.Location = new System.Drawing.Point(18, 719);
|
||||
this.cmbGND1.Location = new System.Drawing.Point(14, 584);
|
||||
this.cmbGND1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGND1.Name = "cmbGND1";
|
||||
this.cmbGND1.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGND1.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGND1.TabIndex = 133;
|
||||
//
|
||||
// cmb5V
|
||||
//
|
||||
this.cmb5V.Enabled = false;
|
||||
this.cmb5V.FormattingEnabled = true;
|
||||
this.cmb5V.Location = new System.Drawing.Point(18, 689);
|
||||
this.cmb5V.Location = new System.Drawing.Point(14, 560);
|
||||
this.cmb5V.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmb5V.Name = "cmb5V";
|
||||
this.cmb5V.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmb5V.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmb5V.TabIndex = 132;
|
||||
//
|
||||
// cmbGPIO14
|
||||
//
|
||||
this.cmbGPIO14.FormattingEnabled = true;
|
||||
this.cmbGPIO14.Location = new System.Drawing.Point(18, 659);
|
||||
this.cmbGPIO14.Location = new System.Drawing.Point(14, 535);
|
||||
this.cmbGPIO14.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO14.Name = "cmbGPIO14";
|
||||
this.cmbGPIO14.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO14.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO14.TabIndex = 131;
|
||||
//
|
||||
// cmbGND2
|
||||
//
|
||||
this.cmbGND2.Enabled = false;
|
||||
this.cmbGND2.FormattingEnabled = true;
|
||||
this.cmbGND2.Location = new System.Drawing.Point(584, 719);
|
||||
this.cmbGND2.Location = new System.Drawing.Point(438, 584);
|
||||
this.cmbGND2.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGND2.Name = "cmbGND2";
|
||||
this.cmbGND2.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGND2.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGND2.TabIndex = 130;
|
||||
//
|
||||
// cmbGND3
|
||||
//
|
||||
this.cmbGND3.Enabled = false;
|
||||
this.cmbGND3.FormattingEnabled = true;
|
||||
this.cmbGND3.Location = new System.Drawing.Point(584, 689);
|
||||
this.cmbGND3.Location = new System.Drawing.Point(438, 560);
|
||||
this.cmbGND3.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGND3.Name = "cmbGND3";
|
||||
this.cmbGND3.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGND3.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGND3.TabIndex = 129;
|
||||
//
|
||||
// cmbGPIO19
|
||||
//
|
||||
this.cmbGPIO19.FormattingEnabled = true;
|
||||
this.cmbGPIO19.Location = new System.Drawing.Point(584, 659);
|
||||
this.cmbGPIO19.Location = new System.Drawing.Point(438, 535);
|
||||
this.cmbGPIO19.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO19.Name = "cmbGPIO19";
|
||||
this.cmbGPIO19.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO19.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO19.TabIndex = 128;
|
||||
//
|
||||
// btnSalvar
|
||||
//
|
||||
this.btnSalvar.Location = new System.Drawing.Point(584, 786);
|
||||
this.btnSalvar.Location = new System.Drawing.Point(438, 639);
|
||||
this.btnSalvar.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.btnSalvar.Name = "btnSalvar";
|
||||
this.btnSalvar.Size = new System.Drawing.Size(148, 40);
|
||||
this.btnSalvar.Size = new System.Drawing.Size(111, 32);
|
||||
this.btnSalvar.TabIndex = 127;
|
||||
this.btnSalvar.Text = "Salvar";
|
||||
this.btnSalvar.UseVisualStyleBackColor = true;
|
||||
|
|
@ -154,329 +162,368 @@ namespace AgroBase.Forms.Sensoriamento
|
|||
// cmbGPIO20
|
||||
//
|
||||
this.cmbGPIO20.FormattingEnabled = true;
|
||||
this.cmbGPIO20.Location = new System.Drawing.Point(584, 629);
|
||||
this.cmbGPIO20.Location = new System.Drawing.Point(438, 511);
|
||||
this.cmbGPIO20.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO20.Name = "cmbGPIO20";
|
||||
this.cmbGPIO20.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO20.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO20.TabIndex = 126;
|
||||
//
|
||||
// cmbGPIO21
|
||||
//
|
||||
this.cmbGPIO21.FormattingEnabled = true;
|
||||
this.cmbGPIO21.Location = new System.Drawing.Point(584, 599);
|
||||
this.cmbGPIO21.Location = new System.Drawing.Point(438, 487);
|
||||
this.cmbGPIO21.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO21.Name = "cmbGPIO21";
|
||||
this.cmbGPIO21.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO21.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO21.TabIndex = 125;
|
||||
//
|
||||
// cmbGPIO47
|
||||
//
|
||||
this.cmbGPIO47.FormattingEnabled = true;
|
||||
this.cmbGPIO47.Location = new System.Drawing.Point(584, 569);
|
||||
this.cmbGPIO47.Location = new System.Drawing.Point(438, 462);
|
||||
this.cmbGPIO47.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO47.Name = "cmbGPIO47";
|
||||
this.cmbGPIO47.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO47.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO47.TabIndex = 124;
|
||||
//
|
||||
// cmbGPIO48
|
||||
//
|
||||
this.cmbGPIO48.FormattingEnabled = true;
|
||||
this.cmbGPIO48.Location = new System.Drawing.Point(584, 539);
|
||||
this.cmbGPIO48.Location = new System.Drawing.Point(438, 438);
|
||||
this.cmbGPIO48.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO48.Name = "cmbGPIO48";
|
||||
this.cmbGPIO48.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO48.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO48.TabIndex = 123;
|
||||
//
|
||||
// cmbGPIO45
|
||||
//
|
||||
this.cmbGPIO45.FormattingEnabled = true;
|
||||
this.cmbGPIO45.Location = new System.Drawing.Point(584, 509);
|
||||
this.cmbGPIO45.Location = new System.Drawing.Point(438, 414);
|
||||
this.cmbGPIO45.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO45.Name = "cmbGPIO45";
|
||||
this.cmbGPIO45.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO45.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO45.TabIndex = 122;
|
||||
//
|
||||
// cmbGPIO0
|
||||
//
|
||||
this.cmbGPIO0.FormattingEnabled = true;
|
||||
this.cmbGPIO0.Location = new System.Drawing.Point(584, 479);
|
||||
this.cmbGPIO0.Location = new System.Drawing.Point(438, 389);
|
||||
this.cmbGPIO0.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO0.Name = "cmbGPIO0";
|
||||
this.cmbGPIO0.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO0.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO0.TabIndex = 121;
|
||||
//
|
||||
// cmbGPIO35
|
||||
//
|
||||
this.cmbGPIO35.FormattingEnabled = true;
|
||||
this.cmbGPIO35.Location = new System.Drawing.Point(584, 449);
|
||||
this.cmbGPIO35.Location = new System.Drawing.Point(438, 365);
|
||||
this.cmbGPIO35.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO35.Name = "cmbGPIO35";
|
||||
this.cmbGPIO35.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO35.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO35.TabIndex = 120;
|
||||
//
|
||||
// cmbGPIO36
|
||||
//
|
||||
this.cmbGPIO36.FormattingEnabled = true;
|
||||
this.cmbGPIO36.Location = new System.Drawing.Point(584, 419);
|
||||
this.cmbGPIO36.Location = new System.Drawing.Point(438, 340);
|
||||
this.cmbGPIO36.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO36.Name = "cmbGPIO36";
|
||||
this.cmbGPIO36.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO36.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO36.TabIndex = 119;
|
||||
//
|
||||
// cmbGPIO37
|
||||
//
|
||||
this.cmbGPIO37.FormattingEnabled = true;
|
||||
this.cmbGPIO37.Location = new System.Drawing.Point(584, 389);
|
||||
this.cmbGPIO37.Location = new System.Drawing.Point(438, 316);
|
||||
this.cmbGPIO37.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO37.Name = "cmbGPIO37";
|
||||
this.cmbGPIO37.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO37.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO37.TabIndex = 118;
|
||||
//
|
||||
// cmbGPIO38
|
||||
//
|
||||
this.cmbGPIO38.FormattingEnabled = true;
|
||||
this.cmbGPIO38.Location = new System.Drawing.Point(584, 359);
|
||||
this.cmbGPIO38.Location = new System.Drawing.Point(438, 292);
|
||||
this.cmbGPIO38.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO38.Name = "cmbGPIO38";
|
||||
this.cmbGPIO38.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO38.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO38.TabIndex = 117;
|
||||
//
|
||||
// cmbGPIO39
|
||||
//
|
||||
this.cmbGPIO39.FormattingEnabled = true;
|
||||
this.cmbGPIO39.Location = new System.Drawing.Point(584, 329);
|
||||
this.cmbGPIO39.Location = new System.Drawing.Point(438, 267);
|
||||
this.cmbGPIO39.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO39.Name = "cmbGPIO39";
|
||||
this.cmbGPIO39.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO39.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO39.TabIndex = 116;
|
||||
//
|
||||
// cmbGPIO40
|
||||
//
|
||||
this.cmbGPIO40.FormattingEnabled = true;
|
||||
this.cmbGPIO40.Location = new System.Drawing.Point(584, 299);
|
||||
this.cmbGPIO40.Location = new System.Drawing.Point(438, 243);
|
||||
this.cmbGPIO40.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO40.Name = "cmbGPIO40";
|
||||
this.cmbGPIO40.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO40.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO40.TabIndex = 115;
|
||||
//
|
||||
// cmbGPIO41
|
||||
//
|
||||
this.cmbGPIO41.FormattingEnabled = true;
|
||||
this.cmbGPIO41.Location = new System.Drawing.Point(584, 269);
|
||||
this.cmbGPIO41.Location = new System.Drawing.Point(438, 219);
|
||||
this.cmbGPIO41.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO41.Name = "cmbGPIO41";
|
||||
this.cmbGPIO41.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO41.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO41.TabIndex = 114;
|
||||
//
|
||||
// cmbGPIO42
|
||||
//
|
||||
this.cmbGPIO42.FormattingEnabled = true;
|
||||
this.cmbGPIO42.Location = new System.Drawing.Point(584, 239);
|
||||
this.cmbGPIO42.Location = new System.Drawing.Point(438, 194);
|
||||
this.cmbGPIO42.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO42.Name = "cmbGPIO42";
|
||||
this.cmbGPIO42.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO42.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO42.TabIndex = 113;
|
||||
//
|
||||
// cmbGPIO2
|
||||
//
|
||||
this.cmbGPIO2.FormattingEnabled = true;
|
||||
this.cmbGPIO2.Location = new System.Drawing.Point(584, 209);
|
||||
this.cmbGPIO2.Location = new System.Drawing.Point(438, 170);
|
||||
this.cmbGPIO2.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO2.Name = "cmbGPIO2";
|
||||
this.cmbGPIO2.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO2.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO2.TabIndex = 112;
|
||||
//
|
||||
// cmbGPIO1
|
||||
//
|
||||
this.cmbGPIO1.FormattingEnabled = true;
|
||||
this.cmbGPIO1.Location = new System.Drawing.Point(584, 179);
|
||||
this.cmbGPIO1.Location = new System.Drawing.Point(438, 145);
|
||||
this.cmbGPIO1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO1.Name = "cmbGPIO1";
|
||||
this.cmbGPIO1.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO1.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO1.TabIndex = 111;
|
||||
//
|
||||
// cmbRX
|
||||
//
|
||||
this.cmbRX.Enabled = false;
|
||||
this.cmbRX.FormattingEnabled = true;
|
||||
this.cmbRX.Location = new System.Drawing.Point(584, 149);
|
||||
this.cmbRX.Location = new System.Drawing.Point(438, 121);
|
||||
this.cmbRX.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbRX.Name = "cmbRX";
|
||||
this.cmbRX.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbRX.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbRX.TabIndex = 110;
|
||||
//
|
||||
// cmbTX
|
||||
//
|
||||
this.cmbTX.Enabled = false;
|
||||
this.cmbTX.FormattingEnabled = true;
|
||||
this.cmbTX.Location = new System.Drawing.Point(584, 119);
|
||||
this.cmbTX.Location = new System.Drawing.Point(438, 97);
|
||||
this.cmbTX.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbTX.Name = "cmbTX";
|
||||
this.cmbTX.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbTX.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbTX.TabIndex = 109;
|
||||
//
|
||||
// cmbGND4
|
||||
//
|
||||
this.cmbGND4.Enabled = false;
|
||||
this.cmbGND4.FormattingEnabled = true;
|
||||
this.cmbGND4.Location = new System.Drawing.Point(584, 89);
|
||||
this.cmbGND4.Location = new System.Drawing.Point(438, 72);
|
||||
this.cmbGND4.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGND4.Name = "cmbGND4";
|
||||
this.cmbGND4.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGND4.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGND4.TabIndex = 108;
|
||||
//
|
||||
// cmbGPIO13
|
||||
//
|
||||
this.cmbGPIO13.FormattingEnabled = true;
|
||||
this.cmbGPIO13.Location = new System.Drawing.Point(18, 629);
|
||||
this.cmbGPIO13.Location = new System.Drawing.Point(14, 511);
|
||||
this.cmbGPIO13.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO13.Name = "cmbGPIO13";
|
||||
this.cmbGPIO13.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO13.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO13.TabIndex = 107;
|
||||
//
|
||||
// cmbGPIO12
|
||||
//
|
||||
this.cmbGPIO12.FormattingEnabled = true;
|
||||
this.cmbGPIO12.Location = new System.Drawing.Point(18, 599);
|
||||
this.cmbGPIO12.Location = new System.Drawing.Point(14, 487);
|
||||
this.cmbGPIO12.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO12.Name = "cmbGPIO12";
|
||||
this.cmbGPIO12.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO12.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO12.TabIndex = 106;
|
||||
//
|
||||
// cmbGPIO11
|
||||
//
|
||||
this.cmbGPIO11.FormattingEnabled = true;
|
||||
this.cmbGPIO11.Location = new System.Drawing.Point(18, 569);
|
||||
this.cmbGPIO11.Location = new System.Drawing.Point(14, 462);
|
||||
this.cmbGPIO11.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO11.Name = "cmbGPIO11";
|
||||
this.cmbGPIO11.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO11.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO11.TabIndex = 105;
|
||||
//
|
||||
// cmbGPIO10
|
||||
//
|
||||
this.cmbGPIO10.FormattingEnabled = true;
|
||||
this.cmbGPIO10.Location = new System.Drawing.Point(18, 539);
|
||||
this.cmbGPIO10.Location = new System.Drawing.Point(14, 438);
|
||||
this.cmbGPIO10.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO10.Name = "cmbGPIO10";
|
||||
this.cmbGPIO10.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO10.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO10.TabIndex = 104;
|
||||
//
|
||||
// cmbGPIO9
|
||||
//
|
||||
this.cmbGPIO9.FormattingEnabled = true;
|
||||
this.cmbGPIO9.Location = new System.Drawing.Point(18, 509);
|
||||
this.cmbGPIO9.Location = new System.Drawing.Point(14, 414);
|
||||
this.cmbGPIO9.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO9.Name = "cmbGPIO9";
|
||||
this.cmbGPIO9.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO9.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO9.TabIndex = 103;
|
||||
//
|
||||
// cmbGPIO46
|
||||
//
|
||||
this.cmbGPIO46.FormattingEnabled = true;
|
||||
this.cmbGPIO46.Location = new System.Drawing.Point(18, 479);
|
||||
this.cmbGPIO46.Location = new System.Drawing.Point(14, 389);
|
||||
this.cmbGPIO46.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO46.Name = "cmbGPIO46";
|
||||
this.cmbGPIO46.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO46.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO46.TabIndex = 102;
|
||||
//
|
||||
// cmbGPIO3
|
||||
//
|
||||
this.cmbGPIO3.FormattingEnabled = true;
|
||||
this.cmbGPIO3.Location = new System.Drawing.Point(18, 449);
|
||||
this.cmbGPIO3.Location = new System.Drawing.Point(14, 365);
|
||||
this.cmbGPIO3.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO3.Name = "cmbGPIO3";
|
||||
this.cmbGPIO3.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO3.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO3.TabIndex = 101;
|
||||
//
|
||||
// cmbGPIO8
|
||||
//
|
||||
this.cmbGPIO8.FormattingEnabled = true;
|
||||
this.cmbGPIO8.Location = new System.Drawing.Point(18, 419);
|
||||
this.cmbGPIO8.Location = new System.Drawing.Point(14, 340);
|
||||
this.cmbGPIO8.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO8.Name = "cmbGPIO8";
|
||||
this.cmbGPIO8.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO8.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO8.TabIndex = 100;
|
||||
//
|
||||
// cmbGPIO18
|
||||
//
|
||||
this.cmbGPIO18.FormattingEnabled = true;
|
||||
this.cmbGPIO18.Location = new System.Drawing.Point(18, 389);
|
||||
this.cmbGPIO18.Location = new System.Drawing.Point(14, 316);
|
||||
this.cmbGPIO18.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO18.Name = "cmbGPIO18";
|
||||
this.cmbGPIO18.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO18.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO18.TabIndex = 99;
|
||||
//
|
||||
// cmbGPIO17
|
||||
//
|
||||
this.cmbGPIO17.FormattingEnabled = true;
|
||||
this.cmbGPIO17.Location = new System.Drawing.Point(18, 359);
|
||||
this.cmbGPIO17.Location = new System.Drawing.Point(14, 292);
|
||||
this.cmbGPIO17.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO17.Name = "cmbGPIO17";
|
||||
this.cmbGPIO17.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO17.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO17.TabIndex = 98;
|
||||
//
|
||||
// cmbGPIO16
|
||||
//
|
||||
this.cmbGPIO16.FormattingEnabled = true;
|
||||
this.cmbGPIO16.Location = new System.Drawing.Point(18, 329);
|
||||
this.cmbGPIO16.Location = new System.Drawing.Point(14, 267);
|
||||
this.cmbGPIO16.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO16.Name = "cmbGPIO16";
|
||||
this.cmbGPIO16.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO16.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO16.TabIndex = 97;
|
||||
//
|
||||
// cmbGPIO15
|
||||
//
|
||||
this.cmbGPIO15.FormattingEnabled = true;
|
||||
this.cmbGPIO15.Location = new System.Drawing.Point(18, 299);
|
||||
this.cmbGPIO15.Location = new System.Drawing.Point(14, 243);
|
||||
this.cmbGPIO15.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO15.Name = "cmbGPIO15";
|
||||
this.cmbGPIO15.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO15.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO15.TabIndex = 96;
|
||||
//
|
||||
// cmbGPIO7
|
||||
//
|
||||
this.cmbGPIO7.FormattingEnabled = true;
|
||||
this.cmbGPIO7.Location = new System.Drawing.Point(18, 269);
|
||||
this.cmbGPIO7.Location = new System.Drawing.Point(14, 219);
|
||||
this.cmbGPIO7.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO7.Name = "cmbGPIO7";
|
||||
this.cmbGPIO7.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO7.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO7.TabIndex = 95;
|
||||
//
|
||||
// cmbGPIO6
|
||||
//
|
||||
this.cmbGPIO6.FormattingEnabled = true;
|
||||
this.cmbGPIO6.Location = new System.Drawing.Point(18, 239);
|
||||
this.cmbGPIO6.Location = new System.Drawing.Point(14, 194);
|
||||
this.cmbGPIO6.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO6.Name = "cmbGPIO6";
|
||||
this.cmbGPIO6.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO6.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO6.TabIndex = 94;
|
||||
//
|
||||
// cmbGPIO5
|
||||
//
|
||||
this.cmbGPIO5.FormattingEnabled = true;
|
||||
this.cmbGPIO5.Location = new System.Drawing.Point(18, 209);
|
||||
this.cmbGPIO5.Location = new System.Drawing.Point(14, 170);
|
||||
this.cmbGPIO5.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO5.Name = "cmbGPIO5";
|
||||
this.cmbGPIO5.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO5.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO5.TabIndex = 93;
|
||||
//
|
||||
// cmbGPIO4
|
||||
//
|
||||
this.cmbGPIO4.FormattingEnabled = true;
|
||||
this.cmbGPIO4.Location = new System.Drawing.Point(18, 179);
|
||||
this.cmbGPIO4.Location = new System.Drawing.Point(14, 145);
|
||||
this.cmbGPIO4.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbGPIO4.Name = "cmbGPIO4";
|
||||
this.cmbGPIO4.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbGPIO4.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO4.TabIndex = 92;
|
||||
//
|
||||
// cmbRst
|
||||
//
|
||||
this.cmbRst.Enabled = false;
|
||||
this.cmbRst.FormattingEnabled = true;
|
||||
this.cmbRst.Location = new System.Drawing.Point(18, 149);
|
||||
this.cmbRst.Location = new System.Drawing.Point(14, 121);
|
||||
this.cmbRst.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbRst.Name = "cmbRst";
|
||||
this.cmbRst.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbRst.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbRst.TabIndex = 91;
|
||||
//
|
||||
// cmb3v3_2
|
||||
//
|
||||
this.cmb3v3_2.Enabled = false;
|
||||
this.cmb3v3_2.FormattingEnabled = true;
|
||||
this.cmb3v3_2.Location = new System.Drawing.Point(18, 119);
|
||||
this.cmb3v3_2.Location = new System.Drawing.Point(14, 97);
|
||||
this.cmb3v3_2.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmb3v3_2.Name = "cmb3v3_2";
|
||||
this.cmb3v3_2.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmb3v3_2.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmb3v3_2.TabIndex = 90;
|
||||
//
|
||||
// cmb3v3_1
|
||||
//
|
||||
this.cmb3v3_1.Enabled = false;
|
||||
this.cmb3v3_1.FormattingEnabled = true;
|
||||
this.cmb3v3_1.Location = new System.Drawing.Point(18, 89);
|
||||
this.cmb3v3_1.Location = new System.Drawing.Point(14, 72);
|
||||
this.cmb3v3_1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmb3v3_1.Name = "cmb3v3_1";
|
||||
this.cmb3v3_1.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmb3v3_1.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmb3v3_1.TabIndex = 89;
|
||||
//
|
||||
// imgESP32
|
||||
//
|
||||
this.imgESP32.Image = ((System.Drawing.Image)(resources.GetObject("imgESP32.Image")));
|
||||
this.imgESP32.Location = new System.Drawing.Point(172, -2);
|
||||
this.imgESP32.Location = new System.Drawing.Point(129, -2);
|
||||
this.imgESP32.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.imgESP32.Name = "imgESP32";
|
||||
this.imgESP32.Size = new System.Drawing.Size(406, 847);
|
||||
this.imgESP32.Size = new System.Drawing.Size(304, 688);
|
||||
this.imgESP32.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.imgESP32.TabIndex = 88;
|
||||
this.imgESP32.TabStop = false;
|
||||
//
|
||||
// frmSenConfig
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.White;
|
||||
this.ClientSize = new System.Drawing.Size(1285, 838);
|
||||
this.ClientSize = new System.Drawing.Size(964, 693);
|
||||
this.Controls.Add(this.lblPinout);
|
||||
this.Controls.Add(this.cmbGND1);
|
||||
this.Controls.Add(this.cmb5V);
|
||||
|
|
@ -524,6 +571,7 @@ namespace AgroBase.Forms.Sensoriamento
|
|||
this.Controls.Add(this.cmb3v3_2);
|
||||
this.Controls.Add(this.cmb3v3_1);
|
||||
this.Controls.Add(this.imgESP32);
|
||||
this.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.Name = "frmSenConfig";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "Sensoriamento - Parametrização";
|
||||
|
|
|
|||
|
|
@ -0,0 +1,633 @@
|
|||
namespace AgroBase.Forms.Sensoriamento
|
||||
{
|
||||
partial class frmSenConfig2
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmSenConfig2));
|
||||
this.lblPinout = new System.Windows.Forms.Label();
|
||||
this.cmbGND1 = new System.Windows.Forms.ComboBox();
|
||||
this.cmb5V = new System.Windows.Forms.ComboBox();
|
||||
this.cmbGPIO14 = new System.Windows.Forms.ComboBox();
|
||||
this.cmbGND2 = new System.Windows.Forms.ComboBox();
|
||||
this.cmbGND3 = new System.Windows.Forms.ComboBox();
|
||||
this.cmbGPIO19 = new System.Windows.Forms.ComboBox();
|
||||
this.btnSalvar = new System.Windows.Forms.Button();
|
||||
this.cmbGPIO20 = new System.Windows.Forms.ComboBox();
|
||||
this.cmbGPIO21 = new System.Windows.Forms.ComboBox();
|
||||
this.cmbGPIO47 = new System.Windows.Forms.ComboBox();
|
||||
this.cmbGPIO48 = new System.Windows.Forms.ComboBox();
|
||||
this.cmbGPIO45 = new System.Windows.Forms.ComboBox();
|
||||
this.cmbGPIO0 = new System.Windows.Forms.ComboBox();
|
||||
this.cmbGPIO35 = new System.Windows.Forms.ComboBox();
|
||||
this.cmbGPIO36 = new System.Windows.Forms.ComboBox();
|
||||
this.cmbGPIO37 = new System.Windows.Forms.ComboBox();
|
||||
this.cmbGPIO38 = new System.Windows.Forms.ComboBox();
|
||||
this.cmbGPIO39 = new System.Windows.Forms.ComboBox();
|
||||
this.cmbGPIO40 = new System.Windows.Forms.ComboBox();
|
||||
this.cmbGPIO41 = new System.Windows.Forms.ComboBox();
|
||||
this.cmbGPIO42 = new System.Windows.Forms.ComboBox();
|
||||
this.cmbGPIO2 = new System.Windows.Forms.ComboBox();
|
||||
this.cmbGPIO1 = new System.Windows.Forms.ComboBox();
|
||||
this.cmbRX = new System.Windows.Forms.ComboBox();
|
||||
this.cmbTX = new System.Windows.Forms.ComboBox();
|
||||
this.cmbGND4 = new System.Windows.Forms.ComboBox();
|
||||
this.cmbGPIO13 = new System.Windows.Forms.ComboBox();
|
||||
this.cmbGPIO12 = new System.Windows.Forms.ComboBox();
|
||||
this.cmbGPIO11 = new System.Windows.Forms.ComboBox();
|
||||
this.cmbGPIO10 = new System.Windows.Forms.ComboBox();
|
||||
this.cmbGPIO9 = new System.Windows.Forms.ComboBox();
|
||||
this.cmbGPIO46 = new System.Windows.Forms.ComboBox();
|
||||
this.cmbGPIO3 = new System.Windows.Forms.ComboBox();
|
||||
this.cmbGPIO8 = new System.Windows.Forms.ComboBox();
|
||||
this.cmbGPIO18 = new System.Windows.Forms.ComboBox();
|
||||
this.cmbGPIO17 = new System.Windows.Forms.ComboBox();
|
||||
this.cmbGPIO16 = new System.Windows.Forms.ComboBox();
|
||||
this.cmbGPIO15 = new System.Windows.Forms.ComboBox();
|
||||
this.cmbGPIO7 = new System.Windows.Forms.ComboBox();
|
||||
this.cmbGPIO6 = new System.Windows.Forms.ComboBox();
|
||||
this.cmbGPIO5 = new System.Windows.Forms.ComboBox();
|
||||
this.cmbGPIO4 = new System.Windows.Forms.ComboBox();
|
||||
this.cmbRst = new System.Windows.Forms.ComboBox();
|
||||
this.cmb3v3_2 = new System.Windows.Forms.ComboBox();
|
||||
this.cmb3v3_1 = new System.Windows.Forms.ComboBox();
|
||||
this.imgESP32 = new System.Windows.Forms.PictureBox();
|
||||
((System.ComponentModel.ISupportInitialize)(this.imgESP32)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// lblPinout
|
||||
//
|
||||
this.lblPinout.AutoSize = true;
|
||||
this.lblPinout.Location = new System.Drawing.Point(11, 10);
|
||||
this.lblPinout.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblPinout.Name = "lblPinout";
|
||||
this.lblPinout.Size = new System.Drawing.Size(37, 13);
|
||||
this.lblPinout.TabIndex = 181;
|
||||
this.lblPinout.Text = "Pinout";
|
||||
//
|
||||
// cmbGND1
|
||||
//
|
||||
this.cmbGND1.Enabled = false;
|
||||
this.cmbGND1.FormattingEnabled = true;
|
||||
this.cmbGND1.Location = new System.Drawing.Point(14, 584);
|
||||
this.cmbGND1.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGND1.Name = "cmbGND1";
|
||||
this.cmbGND1.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGND1.TabIndex = 180;
|
||||
//
|
||||
// cmb5V
|
||||
//
|
||||
this.cmb5V.Enabled = false;
|
||||
this.cmb5V.FormattingEnabled = true;
|
||||
this.cmb5V.Location = new System.Drawing.Point(14, 560);
|
||||
this.cmb5V.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmb5V.Name = "cmb5V";
|
||||
this.cmb5V.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmb5V.TabIndex = 179;
|
||||
//
|
||||
// cmbGPIO14
|
||||
//
|
||||
this.cmbGPIO14.FormattingEnabled = true;
|
||||
this.cmbGPIO14.Location = new System.Drawing.Point(14, 535);
|
||||
this.cmbGPIO14.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGPIO14.Name = "cmbGPIO14";
|
||||
this.cmbGPIO14.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO14.TabIndex = 178;
|
||||
//
|
||||
// cmbGND2
|
||||
//
|
||||
this.cmbGND2.Enabled = false;
|
||||
this.cmbGND2.FormattingEnabled = true;
|
||||
this.cmbGND2.Location = new System.Drawing.Point(438, 584);
|
||||
this.cmbGND2.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGND2.Name = "cmbGND2";
|
||||
this.cmbGND2.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGND2.TabIndex = 177;
|
||||
//
|
||||
// cmbGND3
|
||||
//
|
||||
this.cmbGND3.Enabled = false;
|
||||
this.cmbGND3.FormattingEnabled = true;
|
||||
this.cmbGND3.Location = new System.Drawing.Point(438, 560);
|
||||
this.cmbGND3.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGND3.Name = "cmbGND3";
|
||||
this.cmbGND3.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGND3.TabIndex = 176;
|
||||
//
|
||||
// cmbGPIO19
|
||||
//
|
||||
this.cmbGPIO19.FormattingEnabled = true;
|
||||
this.cmbGPIO19.Location = new System.Drawing.Point(438, 535);
|
||||
this.cmbGPIO19.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGPIO19.Name = "cmbGPIO19";
|
||||
this.cmbGPIO19.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO19.TabIndex = 175;
|
||||
//
|
||||
// btnSalvar
|
||||
//
|
||||
this.btnSalvar.Location = new System.Drawing.Point(438, 639);
|
||||
this.btnSalvar.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.btnSalvar.Name = "btnSalvar";
|
||||
this.btnSalvar.Size = new System.Drawing.Size(111, 32);
|
||||
this.btnSalvar.TabIndex = 174;
|
||||
this.btnSalvar.Text = "Salvar";
|
||||
this.btnSalvar.UseVisualStyleBackColor = true;
|
||||
this.btnSalvar.Click += new System.EventHandler(this.btnSalvar_Click);
|
||||
//
|
||||
// cmbGPIO20
|
||||
//
|
||||
this.cmbGPIO20.FormattingEnabled = true;
|
||||
this.cmbGPIO20.Location = new System.Drawing.Point(438, 511);
|
||||
this.cmbGPIO20.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGPIO20.Name = "cmbGPIO20";
|
||||
this.cmbGPIO20.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO20.TabIndex = 173;
|
||||
//
|
||||
// cmbGPIO21
|
||||
//
|
||||
this.cmbGPIO21.FormattingEnabled = true;
|
||||
this.cmbGPIO21.Location = new System.Drawing.Point(438, 487);
|
||||
this.cmbGPIO21.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGPIO21.Name = "cmbGPIO21";
|
||||
this.cmbGPIO21.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO21.TabIndex = 172;
|
||||
//
|
||||
// cmbGPIO47
|
||||
//
|
||||
this.cmbGPIO47.FormattingEnabled = true;
|
||||
this.cmbGPIO47.Location = new System.Drawing.Point(438, 462);
|
||||
this.cmbGPIO47.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGPIO47.Name = "cmbGPIO47";
|
||||
this.cmbGPIO47.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO47.TabIndex = 171;
|
||||
//
|
||||
// cmbGPIO48
|
||||
//
|
||||
this.cmbGPIO48.FormattingEnabled = true;
|
||||
this.cmbGPIO48.Location = new System.Drawing.Point(438, 438);
|
||||
this.cmbGPIO48.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGPIO48.Name = "cmbGPIO48";
|
||||
this.cmbGPIO48.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO48.TabIndex = 170;
|
||||
//
|
||||
// cmbGPIO45
|
||||
//
|
||||
this.cmbGPIO45.FormattingEnabled = true;
|
||||
this.cmbGPIO45.Location = new System.Drawing.Point(438, 414);
|
||||
this.cmbGPIO45.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGPIO45.Name = "cmbGPIO45";
|
||||
this.cmbGPIO45.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO45.TabIndex = 169;
|
||||
//
|
||||
// cmbGPIO0
|
||||
//
|
||||
this.cmbGPIO0.FormattingEnabled = true;
|
||||
this.cmbGPIO0.Location = new System.Drawing.Point(438, 389);
|
||||
this.cmbGPIO0.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGPIO0.Name = "cmbGPIO0";
|
||||
this.cmbGPIO0.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO0.TabIndex = 168;
|
||||
//
|
||||
// cmbGPIO35
|
||||
//
|
||||
this.cmbGPIO35.FormattingEnabled = true;
|
||||
this.cmbGPIO35.Location = new System.Drawing.Point(438, 365);
|
||||
this.cmbGPIO35.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGPIO35.Name = "cmbGPIO35";
|
||||
this.cmbGPIO35.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO35.TabIndex = 167;
|
||||
//
|
||||
// cmbGPIO36
|
||||
//
|
||||
this.cmbGPIO36.FormattingEnabled = true;
|
||||
this.cmbGPIO36.Location = new System.Drawing.Point(438, 340);
|
||||
this.cmbGPIO36.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGPIO36.Name = "cmbGPIO36";
|
||||
this.cmbGPIO36.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO36.TabIndex = 166;
|
||||
//
|
||||
// cmbGPIO37
|
||||
//
|
||||
this.cmbGPIO37.FormattingEnabled = true;
|
||||
this.cmbGPIO37.Location = new System.Drawing.Point(438, 316);
|
||||
this.cmbGPIO37.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGPIO37.Name = "cmbGPIO37";
|
||||
this.cmbGPIO37.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO37.TabIndex = 165;
|
||||
//
|
||||
// cmbGPIO38
|
||||
//
|
||||
this.cmbGPIO38.FormattingEnabled = true;
|
||||
this.cmbGPIO38.Location = new System.Drawing.Point(438, 292);
|
||||
this.cmbGPIO38.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGPIO38.Name = "cmbGPIO38";
|
||||
this.cmbGPIO38.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO38.TabIndex = 164;
|
||||
//
|
||||
// cmbGPIO39
|
||||
//
|
||||
this.cmbGPIO39.FormattingEnabled = true;
|
||||
this.cmbGPIO39.Location = new System.Drawing.Point(438, 267);
|
||||
this.cmbGPIO39.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGPIO39.Name = "cmbGPIO39";
|
||||
this.cmbGPIO39.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO39.TabIndex = 163;
|
||||
//
|
||||
// cmbGPIO40
|
||||
//
|
||||
this.cmbGPIO40.FormattingEnabled = true;
|
||||
this.cmbGPIO40.Location = new System.Drawing.Point(438, 243);
|
||||
this.cmbGPIO40.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGPIO40.Name = "cmbGPIO40";
|
||||
this.cmbGPIO40.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO40.TabIndex = 162;
|
||||
//
|
||||
// cmbGPIO41
|
||||
//
|
||||
this.cmbGPIO41.FormattingEnabled = true;
|
||||
this.cmbGPIO41.Location = new System.Drawing.Point(438, 219);
|
||||
this.cmbGPIO41.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGPIO41.Name = "cmbGPIO41";
|
||||
this.cmbGPIO41.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO41.TabIndex = 161;
|
||||
//
|
||||
// cmbGPIO42
|
||||
//
|
||||
this.cmbGPIO42.FormattingEnabled = true;
|
||||
this.cmbGPIO42.Location = new System.Drawing.Point(438, 194);
|
||||
this.cmbGPIO42.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGPIO42.Name = "cmbGPIO42";
|
||||
this.cmbGPIO42.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO42.TabIndex = 160;
|
||||
//
|
||||
// cmbGPIO2
|
||||
//
|
||||
this.cmbGPIO2.FormattingEnabled = true;
|
||||
this.cmbGPIO2.Location = new System.Drawing.Point(438, 170);
|
||||
this.cmbGPIO2.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGPIO2.Name = "cmbGPIO2";
|
||||
this.cmbGPIO2.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO2.TabIndex = 159;
|
||||
//
|
||||
// cmbGPIO1
|
||||
//
|
||||
this.cmbGPIO1.FormattingEnabled = true;
|
||||
this.cmbGPIO1.Location = new System.Drawing.Point(438, 145);
|
||||
this.cmbGPIO1.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGPIO1.Name = "cmbGPIO1";
|
||||
this.cmbGPIO1.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO1.TabIndex = 158;
|
||||
//
|
||||
// cmbRX
|
||||
//
|
||||
this.cmbRX.Enabled = false;
|
||||
this.cmbRX.FormattingEnabled = true;
|
||||
this.cmbRX.Location = new System.Drawing.Point(438, 121);
|
||||
this.cmbRX.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbRX.Name = "cmbRX";
|
||||
this.cmbRX.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbRX.TabIndex = 157;
|
||||
//
|
||||
// cmbTX
|
||||
//
|
||||
this.cmbTX.Enabled = false;
|
||||
this.cmbTX.FormattingEnabled = true;
|
||||
this.cmbTX.Location = new System.Drawing.Point(438, 97);
|
||||
this.cmbTX.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbTX.Name = "cmbTX";
|
||||
this.cmbTX.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbTX.TabIndex = 156;
|
||||
//
|
||||
// cmbGND4
|
||||
//
|
||||
this.cmbGND4.Enabled = false;
|
||||
this.cmbGND4.FormattingEnabled = true;
|
||||
this.cmbGND4.Location = new System.Drawing.Point(438, 72);
|
||||
this.cmbGND4.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGND4.Name = "cmbGND4";
|
||||
this.cmbGND4.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGND4.TabIndex = 155;
|
||||
//
|
||||
// cmbGPIO13
|
||||
//
|
||||
this.cmbGPIO13.FormattingEnabled = true;
|
||||
this.cmbGPIO13.Location = new System.Drawing.Point(14, 511);
|
||||
this.cmbGPIO13.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGPIO13.Name = "cmbGPIO13";
|
||||
this.cmbGPIO13.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO13.TabIndex = 154;
|
||||
//
|
||||
// cmbGPIO12
|
||||
//
|
||||
this.cmbGPIO12.FormattingEnabled = true;
|
||||
this.cmbGPIO12.Location = new System.Drawing.Point(14, 487);
|
||||
this.cmbGPIO12.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGPIO12.Name = "cmbGPIO12";
|
||||
this.cmbGPIO12.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO12.TabIndex = 153;
|
||||
//
|
||||
// cmbGPIO11
|
||||
//
|
||||
this.cmbGPIO11.FormattingEnabled = true;
|
||||
this.cmbGPIO11.Location = new System.Drawing.Point(14, 462);
|
||||
this.cmbGPIO11.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGPIO11.Name = "cmbGPIO11";
|
||||
this.cmbGPIO11.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO11.TabIndex = 152;
|
||||
//
|
||||
// cmbGPIO10
|
||||
//
|
||||
this.cmbGPIO10.FormattingEnabled = true;
|
||||
this.cmbGPIO10.Location = new System.Drawing.Point(14, 438);
|
||||
this.cmbGPIO10.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGPIO10.Name = "cmbGPIO10";
|
||||
this.cmbGPIO10.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO10.TabIndex = 151;
|
||||
//
|
||||
// cmbGPIO9
|
||||
//
|
||||
this.cmbGPIO9.FormattingEnabled = true;
|
||||
this.cmbGPIO9.Location = new System.Drawing.Point(14, 414);
|
||||
this.cmbGPIO9.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGPIO9.Name = "cmbGPIO9";
|
||||
this.cmbGPIO9.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO9.TabIndex = 150;
|
||||
//
|
||||
// cmbGPIO46
|
||||
//
|
||||
this.cmbGPIO46.FormattingEnabled = true;
|
||||
this.cmbGPIO46.Location = new System.Drawing.Point(14, 389);
|
||||
this.cmbGPIO46.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGPIO46.Name = "cmbGPIO46";
|
||||
this.cmbGPIO46.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO46.TabIndex = 149;
|
||||
//
|
||||
// cmbGPIO3
|
||||
//
|
||||
this.cmbGPIO3.FormattingEnabled = true;
|
||||
this.cmbGPIO3.Location = new System.Drawing.Point(14, 365);
|
||||
this.cmbGPIO3.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGPIO3.Name = "cmbGPIO3";
|
||||
this.cmbGPIO3.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO3.TabIndex = 148;
|
||||
//
|
||||
// cmbGPIO8
|
||||
//
|
||||
this.cmbGPIO8.FormattingEnabled = true;
|
||||
this.cmbGPIO8.Location = new System.Drawing.Point(14, 340);
|
||||
this.cmbGPIO8.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGPIO8.Name = "cmbGPIO8";
|
||||
this.cmbGPIO8.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO8.TabIndex = 147;
|
||||
//
|
||||
// cmbGPIO18
|
||||
//
|
||||
this.cmbGPIO18.FormattingEnabled = true;
|
||||
this.cmbGPIO18.Location = new System.Drawing.Point(14, 316);
|
||||
this.cmbGPIO18.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGPIO18.Name = "cmbGPIO18";
|
||||
this.cmbGPIO18.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO18.TabIndex = 146;
|
||||
//
|
||||
// cmbGPIO17
|
||||
//
|
||||
this.cmbGPIO17.FormattingEnabled = true;
|
||||
this.cmbGPIO17.Location = new System.Drawing.Point(14, 292);
|
||||
this.cmbGPIO17.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGPIO17.Name = "cmbGPIO17";
|
||||
this.cmbGPIO17.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO17.TabIndex = 145;
|
||||
//
|
||||
// cmbGPIO16
|
||||
//
|
||||
this.cmbGPIO16.FormattingEnabled = true;
|
||||
this.cmbGPIO16.Location = new System.Drawing.Point(14, 267);
|
||||
this.cmbGPIO16.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGPIO16.Name = "cmbGPIO16";
|
||||
this.cmbGPIO16.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO16.TabIndex = 144;
|
||||
//
|
||||
// cmbGPIO15
|
||||
//
|
||||
this.cmbGPIO15.FormattingEnabled = true;
|
||||
this.cmbGPIO15.Location = new System.Drawing.Point(14, 243);
|
||||
this.cmbGPIO15.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGPIO15.Name = "cmbGPIO15";
|
||||
this.cmbGPIO15.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO15.TabIndex = 143;
|
||||
//
|
||||
// cmbGPIO7
|
||||
//
|
||||
this.cmbGPIO7.FormattingEnabled = true;
|
||||
this.cmbGPIO7.Location = new System.Drawing.Point(14, 219);
|
||||
this.cmbGPIO7.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGPIO7.Name = "cmbGPIO7";
|
||||
this.cmbGPIO7.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO7.TabIndex = 142;
|
||||
//
|
||||
// cmbGPIO6
|
||||
//
|
||||
this.cmbGPIO6.FormattingEnabled = true;
|
||||
this.cmbGPIO6.Location = new System.Drawing.Point(14, 194);
|
||||
this.cmbGPIO6.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGPIO6.Name = "cmbGPIO6";
|
||||
this.cmbGPIO6.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO6.TabIndex = 141;
|
||||
//
|
||||
// cmbGPIO5
|
||||
//
|
||||
this.cmbGPIO5.FormattingEnabled = true;
|
||||
this.cmbGPIO5.Location = new System.Drawing.Point(14, 170);
|
||||
this.cmbGPIO5.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGPIO5.Name = "cmbGPIO5";
|
||||
this.cmbGPIO5.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO5.TabIndex = 140;
|
||||
//
|
||||
// cmbGPIO4
|
||||
//
|
||||
this.cmbGPIO4.FormattingEnabled = true;
|
||||
this.cmbGPIO4.Location = new System.Drawing.Point(14, 145);
|
||||
this.cmbGPIO4.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbGPIO4.Name = "cmbGPIO4";
|
||||
this.cmbGPIO4.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbGPIO4.TabIndex = 139;
|
||||
//
|
||||
// cmbRst
|
||||
//
|
||||
this.cmbRst.Enabled = false;
|
||||
this.cmbRst.FormattingEnabled = true;
|
||||
this.cmbRst.Location = new System.Drawing.Point(14, 121);
|
||||
this.cmbRst.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmbRst.Name = "cmbRst";
|
||||
this.cmbRst.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbRst.TabIndex = 138;
|
||||
//
|
||||
// cmb3v3_2
|
||||
//
|
||||
this.cmb3v3_2.Enabled = false;
|
||||
this.cmb3v3_2.FormattingEnabled = true;
|
||||
this.cmb3v3_2.Location = new System.Drawing.Point(14, 97);
|
||||
this.cmb3v3_2.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmb3v3_2.Name = "cmb3v3_2";
|
||||
this.cmb3v3_2.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmb3v3_2.TabIndex = 137;
|
||||
//
|
||||
// cmb3v3_1
|
||||
//
|
||||
this.cmb3v3_1.Enabled = false;
|
||||
this.cmb3v3_1.FormattingEnabled = true;
|
||||
this.cmb3v3_1.Location = new System.Drawing.Point(14, 72);
|
||||
this.cmb3v3_1.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cmb3v3_1.Name = "cmb3v3_1";
|
||||
this.cmb3v3_1.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmb3v3_1.TabIndex = 136;
|
||||
//
|
||||
// imgESP32
|
||||
//
|
||||
this.imgESP32.Image = ((System.Drawing.Image)(resources.GetObject("imgESP32.Image")));
|
||||
this.imgESP32.Location = new System.Drawing.Point(129, -2);
|
||||
this.imgESP32.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.imgESP32.Name = "imgESP32";
|
||||
this.imgESP32.Size = new System.Drawing.Size(304, 688);
|
||||
this.imgESP32.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.imgESP32.TabIndex = 135;
|
||||
this.imgESP32.TabStop = false;
|
||||
//
|
||||
// frmSenConfig2
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(964, 693);
|
||||
this.Controls.Add(this.lblPinout);
|
||||
this.Controls.Add(this.cmbGND1);
|
||||
this.Controls.Add(this.cmb5V);
|
||||
this.Controls.Add(this.cmbGPIO14);
|
||||
this.Controls.Add(this.cmbGND2);
|
||||
this.Controls.Add(this.cmbGND3);
|
||||
this.Controls.Add(this.cmbGPIO19);
|
||||
this.Controls.Add(this.btnSalvar);
|
||||
this.Controls.Add(this.cmbGPIO20);
|
||||
this.Controls.Add(this.cmbGPIO21);
|
||||
this.Controls.Add(this.cmbGPIO47);
|
||||
this.Controls.Add(this.cmbGPIO48);
|
||||
this.Controls.Add(this.cmbGPIO45);
|
||||
this.Controls.Add(this.cmbGPIO0);
|
||||
this.Controls.Add(this.cmbGPIO35);
|
||||
this.Controls.Add(this.cmbGPIO36);
|
||||
this.Controls.Add(this.cmbGPIO37);
|
||||
this.Controls.Add(this.cmbGPIO38);
|
||||
this.Controls.Add(this.cmbGPIO39);
|
||||
this.Controls.Add(this.cmbGPIO40);
|
||||
this.Controls.Add(this.cmbGPIO41);
|
||||
this.Controls.Add(this.cmbGPIO42);
|
||||
this.Controls.Add(this.cmbGPIO2);
|
||||
this.Controls.Add(this.cmbGPIO1);
|
||||
this.Controls.Add(this.cmbRX);
|
||||
this.Controls.Add(this.cmbTX);
|
||||
this.Controls.Add(this.cmbGND4);
|
||||
this.Controls.Add(this.cmbGPIO13);
|
||||
this.Controls.Add(this.cmbGPIO12);
|
||||
this.Controls.Add(this.cmbGPIO11);
|
||||
this.Controls.Add(this.cmbGPIO10);
|
||||
this.Controls.Add(this.cmbGPIO9);
|
||||
this.Controls.Add(this.cmbGPIO46);
|
||||
this.Controls.Add(this.cmbGPIO3);
|
||||
this.Controls.Add(this.cmbGPIO8);
|
||||
this.Controls.Add(this.cmbGPIO18);
|
||||
this.Controls.Add(this.cmbGPIO17);
|
||||
this.Controls.Add(this.cmbGPIO16);
|
||||
this.Controls.Add(this.cmbGPIO15);
|
||||
this.Controls.Add(this.cmbGPIO7);
|
||||
this.Controls.Add(this.cmbGPIO6);
|
||||
this.Controls.Add(this.cmbGPIO5);
|
||||
this.Controls.Add(this.cmbGPIO4);
|
||||
this.Controls.Add(this.cmbRst);
|
||||
this.Controls.Add(this.cmb3v3_2);
|
||||
this.Controls.Add(this.cmb3v3_1);
|
||||
this.Controls.Add(this.imgESP32);
|
||||
this.Name = "frmSenConfig2";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "Sensoriamento - Parametrização";
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.frmSenConfig2_FormClosing);
|
||||
this.Load += new System.EventHandler(this.frmSenConfig2_Load);
|
||||
((System.ComponentModel.ISupportInitialize)(this.imgESP32)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Label lblPinout;
|
||||
private System.Windows.Forms.ComboBox cmbGND1;
|
||||
private System.Windows.Forms.ComboBox cmb5V;
|
||||
private System.Windows.Forms.ComboBox cmbGPIO14;
|
||||
private System.Windows.Forms.ComboBox cmbGND2;
|
||||
private System.Windows.Forms.ComboBox cmbGND3;
|
||||
private System.Windows.Forms.ComboBox cmbGPIO19;
|
||||
private System.Windows.Forms.Button btnSalvar;
|
||||
private System.Windows.Forms.ComboBox cmbGPIO20;
|
||||
private System.Windows.Forms.ComboBox cmbGPIO21;
|
||||
private System.Windows.Forms.ComboBox cmbGPIO47;
|
||||
private System.Windows.Forms.ComboBox cmbGPIO48;
|
||||
private System.Windows.Forms.ComboBox cmbGPIO45;
|
||||
private System.Windows.Forms.ComboBox cmbGPIO0;
|
||||
private System.Windows.Forms.ComboBox cmbGPIO35;
|
||||
private System.Windows.Forms.ComboBox cmbGPIO36;
|
||||
private System.Windows.Forms.ComboBox cmbGPIO37;
|
||||
private System.Windows.Forms.ComboBox cmbGPIO38;
|
||||
private System.Windows.Forms.ComboBox cmbGPIO39;
|
||||
private System.Windows.Forms.ComboBox cmbGPIO40;
|
||||
private System.Windows.Forms.ComboBox cmbGPIO41;
|
||||
private System.Windows.Forms.ComboBox cmbGPIO42;
|
||||
private System.Windows.Forms.ComboBox cmbGPIO2;
|
||||
private System.Windows.Forms.ComboBox cmbGPIO1;
|
||||
private System.Windows.Forms.ComboBox cmbRX;
|
||||
private System.Windows.Forms.ComboBox cmbTX;
|
||||
private System.Windows.Forms.ComboBox cmbGND4;
|
||||
private System.Windows.Forms.ComboBox cmbGPIO13;
|
||||
private System.Windows.Forms.ComboBox cmbGPIO12;
|
||||
private System.Windows.Forms.ComboBox cmbGPIO11;
|
||||
private System.Windows.Forms.ComboBox cmbGPIO10;
|
||||
private System.Windows.Forms.ComboBox cmbGPIO9;
|
||||
private System.Windows.Forms.ComboBox cmbGPIO46;
|
||||
private System.Windows.Forms.ComboBox cmbGPIO3;
|
||||
private System.Windows.Forms.ComboBox cmbGPIO8;
|
||||
private System.Windows.Forms.ComboBox cmbGPIO18;
|
||||
private System.Windows.Forms.ComboBox cmbGPIO17;
|
||||
private System.Windows.Forms.ComboBox cmbGPIO16;
|
||||
private System.Windows.Forms.ComboBox cmbGPIO15;
|
||||
private System.Windows.Forms.ComboBox cmbGPIO7;
|
||||
private System.Windows.Forms.ComboBox cmbGPIO6;
|
||||
private System.Windows.Forms.ComboBox cmbGPIO5;
|
||||
private System.Windows.Forms.ComboBox cmbGPIO4;
|
||||
private System.Windows.Forms.ComboBox cmbRst;
|
||||
private System.Windows.Forms.ComboBox cmb3v3_2;
|
||||
private System.Windows.Forms.ComboBox cmb3v3_1;
|
||||
private System.Windows.Forms.PictureBox imgESP32;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
using AgroBase.Comum;
|
||||
using AgroBase.Models;
|
||||
using AgroBase.Models.Modules;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using static AgroBase.Models.Enuns;
|
||||
|
||||
namespace AgroBase.Forms.Sensoriamento
|
||||
{
|
||||
public partial class frmSenConfig2 : Form
|
||||
{
|
||||
DispositivosService<SensoriamentoModel> Disp = (DispositivosService<SensoriamentoModel>)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == T_Code.Sen);
|
||||
|
||||
public frmSenConfig2()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void frmSenConfig2_Load(object sender, EventArgs e)
|
||||
{
|
||||
if (Disp == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
List<string> Pinos = new List<string>()
|
||||
{
|
||||
Enum.GetName(typeof(FuncoesPinout), FuncoesPinout.NaoConectado),
|
||||
};
|
||||
|
||||
SensoriamentoModel.Funcoes.ForEach(x => Pinos.Add(Enum.GetName(typeof(FuncoesPinout), x)));
|
||||
|
||||
foreach (var Sensor in Disp.Dados.Sensores)
|
||||
{
|
||||
Sensor.Funcoes.ForEach(x => Pinos.Add(Sensor.ID + " " + Enum.GetName(typeof(FuncoesPinout), x)));
|
||||
}
|
||||
|
||||
List<ComboBox> cmbs = this.Controls.OfType<ComboBox>().Where(x => x.Name.Contains("cmbGPIO") && x.Enabled).ToList();
|
||||
foreach (var cmb in cmbs)
|
||||
{
|
||||
cmb.SelectedIndexChanged += Cmb_SelectedIndexChanged;
|
||||
cmb.Items.Clear();
|
||||
Pinos.ForEach(x => cmb.Items.Add(x));
|
||||
int pino = int.Parse(cmb.Name.Replace("cmbGPIO", ""));
|
||||
cmb.SelectedIndex = 0;
|
||||
|
||||
var Selecionado = SensoriamentoModel.Pinout.FirstOrDefault(x => x.Pino == pino);
|
||||
if (Selecionado != null) cmb.SelectedItem = (Selecionado.Funcao != FuncoesPinout.Geral ? Selecionado.ComponenteID + " " : "") + Enum.GetName(typeof(FuncoesPinout), Selecionado.Funcao);
|
||||
}
|
||||
}
|
||||
|
||||
private void frmSenConfig2_FormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
e.Cancel = true;
|
||||
this.Visible = false;
|
||||
}
|
||||
|
||||
private void Cmb_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
var cmb = (ComboBox)sender;
|
||||
this.Controls.OfType<ComboBox>().Where(x => x.Name != cmb.Name && x.SelectedItem != null && x.SelectedItem.ToString() == cmb.SelectedItem.ToString()).ToList().ForEach(x => x.SelectedIndex = 0);
|
||||
}
|
||||
|
||||
private void btnSalvar_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (Disp == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
SensoriamentoModel.Pinout.ForEach(x =>
|
||||
{
|
||||
x.ComponenteID = "";
|
||||
x.Funcao = FuncoesPinout.NaoConectado;
|
||||
});
|
||||
|
||||
List<ComboBox> cmbs = this.Controls.OfType<ComboBox>().Where(x => x.Enabled).ToList();
|
||||
foreach (var cmb in cmbs)
|
||||
{
|
||||
int pino = int.Parse(cmb.Name.Replace("cmbGPIO", ""));
|
||||
string ComponenteID = cmb.SelectedItem.ToString().Split(' ').Length > 1 ? cmb.SelectedItem.ToString().Split(' ')[0] : "";
|
||||
FuncoesPinout Funcao = (FuncoesPinout)Enum.Parse(typeof(FuncoesPinout), ComponenteID != "" ? (cmb.SelectedItem.ToString().Split(' ')[1]) : cmb.SelectedItem.ToString());
|
||||
SensoriamentoModel.Pinout.FirstOrDefault(x => x.Pino == pino).Funcao = Funcao;
|
||||
SensoriamentoModel.Pinout.FirstOrDefault(x => x.Pino == pino).ComponenteID = ComponenteID;
|
||||
}
|
||||
|
||||
Disp.Dados.SalvarPinout(SensoriamentoModel.Pinout, "pinout" + Enum.GetName(typeof(T_Code), Disp.Dispositivo) + ".pin");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,991 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="imgESP32.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
/9j/4AAQSkZJRgABAQEAeAB4AAD/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcI
|
||||
CQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwM
|
||||
DAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAI+AQ4DASIAAhEBAxEB/8QA
|
||||
HwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh
|
||||
MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVW
|
||||
V1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXG
|
||||
x8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQF
|
||||
BgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV
|
||||
YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE
|
||||
hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq
|
||||
8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9/KKKKACiiigAooooAKbJIsKFmZVVeSScAU6vDf8AgpbqE+k/
|
||||
sE/Fa5tZpLe4g0Cd45I2KshGOQRyKAPZl8Q6e3S+sz24mX/Gl/t+x/5/bT/v8v8AjX8hEPxi8X317FH/
|
||||
AMJNr26Yqo/0+Xqfxrul0D4hPDu/4TDUg393+0Jjj9aAP6vf7fsf+f20/wC/y/40f2/Y/wDP7af9/l/x
|
||||
r+UD+wPiL/0OGpf+B03+NMn0f4iW8MkjeMNSIjRnwL+YZwM9zQB/WF/b9j/z+2n/AH+X/Gj+37H/AJ/b
|
||||
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
|
||||
GygD/9k=
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,194 @@
|
|||
namespace AgroBase.Forms
|
||||
{
|
||||
partial class frmGPS
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmGPS));
|
||||
this.pnlMapa = new System.Windows.Forms.Panel();
|
||||
this.picLoading = new System.Windows.Forms.PictureBox();
|
||||
this.pnlInformacoes = new System.Windows.Forms.Panel();
|
||||
this.lblLatitude = new System.Windows.Forms.Label();
|
||||
this.lblLongitude = new System.Windows.Forms.Label();
|
||||
this.lblPrecisao = new System.Windows.Forms.Label();
|
||||
this.lblSatelites = new System.Windows.Forms.Label();
|
||||
this.lblDatahora = new System.Windows.Forms.Label();
|
||||
this.lblAltitude = new System.Windows.Forms.Label();
|
||||
this.lblVelocidade = new System.Windows.Forms.Label();
|
||||
this.pnlMapa.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picLoading)).BeginInit();
|
||||
this.pnlInformacoes.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// pnlMapa
|
||||
//
|
||||
this.pnlMapa.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.pnlMapa.Controls.Add(this.picLoading);
|
||||
this.pnlMapa.Location = new System.Drawing.Point(9, 10);
|
||||
this.pnlMapa.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.pnlMapa.Name = "pnlMapa";
|
||||
this.pnlMapa.Size = new System.Drawing.Size(772, 464);
|
||||
this.pnlMapa.TabIndex = 2;
|
||||
//
|
||||
// picLoading
|
||||
//
|
||||
this.picLoading.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.picLoading.BackColor = System.Drawing.Color.Transparent;
|
||||
this.picLoading.Image = ((System.Drawing.Image)(resources.GetObject("picLoading.Image")));
|
||||
this.picLoading.Location = new System.Drawing.Point(194, 24);
|
||||
this.picLoading.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.picLoading.Name = "picLoading";
|
||||
this.picLoading.Size = new System.Drawing.Size(384, 416);
|
||||
this.picLoading.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
||||
this.picLoading.TabIndex = 2;
|
||||
this.picLoading.TabStop = false;
|
||||
this.picLoading.Visible = false;
|
||||
//
|
||||
// pnlInformacoes
|
||||
//
|
||||
this.pnlInformacoes.Controls.Add(this.lblVelocidade);
|
||||
this.pnlInformacoes.Controls.Add(this.lblAltitude);
|
||||
this.pnlInformacoes.Controls.Add(this.lblDatahora);
|
||||
this.pnlInformacoes.Controls.Add(this.lblSatelites);
|
||||
this.pnlInformacoes.Controls.Add(this.lblPrecisao);
|
||||
this.pnlInformacoes.Controls.Add(this.lblLongitude);
|
||||
this.pnlInformacoes.Controls.Add(this.lblLatitude);
|
||||
this.pnlInformacoes.Dock = System.Windows.Forms.DockStyle.Bottom;
|
||||
this.pnlInformacoes.Location = new System.Drawing.Point(0, 479);
|
||||
this.pnlInformacoes.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.pnlInformacoes.Name = "pnlInformacoes";
|
||||
this.pnlInformacoes.Size = new System.Drawing.Size(790, 46);
|
||||
this.pnlInformacoes.TabIndex = 3;
|
||||
//
|
||||
// lblLatitude
|
||||
//
|
||||
this.lblLatitude.AutoSize = true;
|
||||
this.lblLatitude.Location = new System.Drawing.Point(9, 17);
|
||||
this.lblLatitude.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblLatitude.Name = "lblLatitude";
|
||||
this.lblLatitude.Size = new System.Drawing.Size(57, 13);
|
||||
this.lblLatitude.TabIndex = 1;
|
||||
this.lblLatitude.Text = "Latitude: 0";
|
||||
//
|
||||
// lblLongitude
|
||||
//
|
||||
this.lblLongitude.AutoSize = true;
|
||||
this.lblLongitude.Location = new System.Drawing.Point(131, 17);
|
||||
this.lblLongitude.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblLongitude.Name = "lblLongitude";
|
||||
this.lblLongitude.Size = new System.Drawing.Size(66, 13);
|
||||
this.lblLongitude.TabIndex = 2;
|
||||
this.lblLongitude.Text = "Longitude: 0";
|
||||
//
|
||||
// lblPrecisao
|
||||
//
|
||||
this.lblPrecisao.AutoSize = true;
|
||||
this.lblPrecisao.Location = new System.Drawing.Point(497, 17);
|
||||
this.lblPrecisao.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblPrecisao.Name = "lblPrecisao";
|
||||
this.lblPrecisao.Size = new System.Drawing.Size(60, 13);
|
||||
this.lblPrecisao.TabIndex = 3;
|
||||
this.lblPrecisao.Text = "Precisão: 0";
|
||||
//
|
||||
// lblSatelites
|
||||
//
|
||||
this.lblSatelites.AutoSize = true;
|
||||
this.lblSatelites.Location = new System.Drawing.Point(584, 17);
|
||||
this.lblSatelites.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblSatelites.Name = "lblSatelites";
|
||||
this.lblSatelites.Size = new System.Drawing.Size(59, 13);
|
||||
this.lblSatelites.TabIndex = 4;
|
||||
this.lblSatelites.Text = "Satélites: 0";
|
||||
//
|
||||
// lblDatahora
|
||||
//
|
||||
this.lblDatahora.AutoSize = true;
|
||||
this.lblDatahora.Location = new System.Drawing.Point(669, 17);
|
||||
this.lblDatahora.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblDatahora.Name = "lblDatahora";
|
||||
this.lblDatahora.Size = new System.Drawing.Size(77, 13);
|
||||
this.lblDatahora.TabIndex = 5;
|
||||
this.lblDatahora.Text = "Ultima Leitura: ";
|
||||
//
|
||||
// lblAltitude
|
||||
//
|
||||
this.lblAltitude.AutoSize = true;
|
||||
this.lblAltitude.Location = new System.Drawing.Point(283, 17);
|
||||
this.lblAltitude.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblAltitude.Name = "lblAltitude";
|
||||
this.lblAltitude.Size = new System.Drawing.Size(54, 13);
|
||||
this.lblAltitude.TabIndex = 6;
|
||||
this.lblAltitude.Text = "Altitude: 0";
|
||||
//
|
||||
// lblVelocidade
|
||||
//
|
||||
this.lblVelocidade.AutoSize = true;
|
||||
this.lblVelocidade.Location = new System.Drawing.Point(365, 17);
|
||||
this.lblVelocidade.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblVelocidade.Name = "lblVelocidade";
|
||||
this.lblVelocidade.Size = new System.Drawing.Size(72, 13);
|
||||
this.lblVelocidade.TabIndex = 7;
|
||||
this.lblVelocidade.Text = "Velocidade: 0";
|
||||
//
|
||||
// frmGPS
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(790, 525);
|
||||
this.Controls.Add(this.pnlInformacoes);
|
||||
this.Controls.Add(this.pnlMapa);
|
||||
this.Name = "frmGPS";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "GPS";
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.frmGPS_FormClosing);
|
||||
this.Load += new System.EventHandler(this.frmGPS_Load);
|
||||
this.pnlMapa.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.picLoading)).EndInit();
|
||||
this.pnlInformacoes.ResumeLayout(false);
|
||||
this.pnlInformacoes.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Panel pnlMapa;
|
||||
private System.Windows.Forms.PictureBox picLoading;
|
||||
private System.Windows.Forms.Panel pnlInformacoes;
|
||||
private System.Windows.Forms.Label lblLatitude;
|
||||
private System.Windows.Forms.Label lblDatahora;
|
||||
private System.Windows.Forms.Label lblSatelites;
|
||||
private System.Windows.Forms.Label lblPrecisao;
|
||||
private System.Windows.Forms.Label lblLongitude;
|
||||
private System.Windows.Forms.Label lblVelocidade;
|
||||
private System.Windows.Forms.Label lblAltitude;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,89 @@
|
|||
using AgroBase.Services;
|
||||
using CefSharp;
|
||||
using CefSharp.DevTools.IO;
|
||||
using CefSharp.WinForms;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace AgroBase.Forms
|
||||
{
|
||||
public partial class frmGPS : Form
|
||||
{
|
||||
private ChromiumWebBrowser chromiumWebBrowser;
|
||||
private MapasService mapaService = new MapasService();
|
||||
Timer tmrUpdate = new Timer();
|
||||
|
||||
public frmGPS()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void frmGPS_Load(object sender, EventArgs e)
|
||||
{
|
||||
IniciarMapa();
|
||||
}
|
||||
|
||||
private void frmGPS_FormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
GPSService.PararRecepcaoDados();
|
||||
|
||||
tmrUpdate.Stop();
|
||||
mapaService.pythonProcess.Kill();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
private void IniciarMapa()
|
||||
{
|
||||
GPSService.IniciarRecepcaoDados();
|
||||
|
||||
mapaService.CarregarMapaGPS(MapasVariaveisModel.NomeArquivoMapaGPS);
|
||||
picLoading.Visible = true;
|
||||
tmrUpdate = new Timer() { Interval = 1000 };
|
||||
tmrUpdate.Tick -= Tmr_Tick;
|
||||
tmrUpdate.Tick += Tmr_Tick;
|
||||
tmrUpdate.Start();
|
||||
}
|
||||
|
||||
private void Tmr_Tick(object sender, EventArgs e)
|
||||
{
|
||||
if (picLoading.Visible)
|
||||
{
|
||||
picLoading.Visible = false;
|
||||
|
||||
chromiumWebBrowser = new ChromiumWebBrowser(mapaService.MapaUrl);
|
||||
this.pnlMapa.Controls.Add(chromiumWebBrowser);
|
||||
chromiumWebBrowser.Dock = DockStyle.Fill;
|
||||
}
|
||||
else if (!picLoading.Visible && GPSService.UltimaLeitura != null)
|
||||
{
|
||||
mapaService.AtualizarPosicaoMapaGPS(GPSService.UltimaLeitura.Latitude, GPSService.UltimaLeitura.Longitude);
|
||||
chromiumWebBrowser.Reload();
|
||||
|
||||
lblDatahora.Text = "Ultima Leitura: " + GPSService.UltimaLeitura.DataHora.ToString("dd/MM/yyyy HH:mm:ss");
|
||||
lblLatitude.Text = "Latitude: " + GPSService.UltimaLeitura.Latitude;
|
||||
lblLongitude.Text = "Longitude: " + GPSService.UltimaLeitura.Longitude;
|
||||
lblPrecisao.Text = "Precisão: " + GPSService.UltimaLeitura.PrecisaoHorizontal;
|
||||
lblSatelites.Text = "Satelites: " + GPSService.UltimaLeitura.NumeroSatelites;
|
||||
lblVelocidade.Text = "Velocidade: " + GPSService.UltimaLeitura.Velocidade;
|
||||
lblAltitude.Text = "Altitude: " + GPSService.UltimaLeitura.Altitude;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -31,13 +31,13 @@ namespace AgroBase.Forms
|
|||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmMapa));
|
||||
this.pnlMapa = new System.Windows.Forms.Panel();
|
||||
this.picLoading = new System.Windows.Forms.PictureBox();
|
||||
this.pnlBotoes = new System.Windows.Forms.Panel();
|
||||
this.lblMapa = new System.Windows.Forms.Label();
|
||||
this.btnCarregar = new System.Windows.Forms.Button();
|
||||
this.picLoading = new System.Windows.Forms.PictureBox();
|
||||
this.pnlMapa.SuspendLayout();
|
||||
this.pnlBotoes.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picLoading)).BeginInit();
|
||||
this.pnlBotoes.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// pnlMapa
|
||||
|
|
@ -46,41 +46,12 @@ namespace AgroBase.Forms
|
|||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.pnlMapa.Controls.Add(this.picLoading);
|
||||
this.pnlMapa.Location = new System.Drawing.Point(12, 12);
|
||||
this.pnlMapa.Location = new System.Drawing.Point(9, 10);
|
||||
this.pnlMapa.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.pnlMapa.Name = "pnlMapa";
|
||||
this.pnlMapa.Size = new System.Drawing.Size(1030, 571);
|
||||
this.pnlMapa.Size = new System.Drawing.Size(772, 464);
|
||||
this.pnlMapa.TabIndex = 1;
|
||||
//
|
||||
// pnlBotoes
|
||||
//
|
||||
this.pnlBotoes.Controls.Add(this.lblMapa);
|
||||
this.pnlBotoes.Controls.Add(this.btnCarregar);
|
||||
this.pnlBotoes.Dock = System.Windows.Forms.DockStyle.Bottom;
|
||||
this.pnlBotoes.Location = new System.Drawing.Point(0, 589);
|
||||
this.pnlBotoes.Name = "pnlBotoes";
|
||||
this.pnlBotoes.Size = new System.Drawing.Size(1054, 57);
|
||||
this.pnlBotoes.TabIndex = 2;
|
||||
//
|
||||
// lblMapa
|
||||
//
|
||||
this.lblMapa.AutoSize = true;
|
||||
this.lblMapa.Location = new System.Drawing.Point(12, 21);
|
||||
this.lblMapa.Name = "lblMapa";
|
||||
this.lblMapa.Size = new System.Drawing.Size(120, 17);
|
||||
this.lblMapa.TabIndex = 1;
|
||||
this.lblMapa.Text = "Mapa carregado: ";
|
||||
//
|
||||
// btnCarregar
|
||||
//
|
||||
this.btnCarregar.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnCarregar.Location = new System.Drawing.Point(912, 13);
|
||||
this.btnCarregar.Name = "btnCarregar";
|
||||
this.btnCarregar.Size = new System.Drawing.Size(130, 32);
|
||||
this.btnCarregar.TabIndex = 0;
|
||||
this.btnCarregar.Text = "Carregar mapa";
|
||||
this.btnCarregar.UseVisualStyleBackColor = true;
|
||||
this.btnCarregar.Click += new System.EventHandler(this.btnCarregar_Click);
|
||||
//
|
||||
// picLoading
|
||||
//
|
||||
this.picLoading.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
|
|
@ -88,28 +59,63 @@ namespace AgroBase.Forms
|
|||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.picLoading.BackColor = System.Drawing.Color.Transparent;
|
||||
this.picLoading.Image = ((System.Drawing.Image)(resources.GetObject("picLoading.Image")));
|
||||
this.picLoading.Location = new System.Drawing.Point(259, 29);
|
||||
this.picLoading.Location = new System.Drawing.Point(194, 24);
|
||||
this.picLoading.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.picLoading.Name = "picLoading";
|
||||
this.picLoading.Size = new System.Drawing.Size(512, 512);
|
||||
this.picLoading.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
|
||||
this.picLoading.Size = new System.Drawing.Size(384, 416);
|
||||
this.picLoading.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
||||
this.picLoading.TabIndex = 2;
|
||||
this.picLoading.TabStop = false;
|
||||
this.picLoading.Visible = false;
|
||||
//
|
||||
// pnlBotoes
|
||||
//
|
||||
this.pnlBotoes.Controls.Add(this.lblMapa);
|
||||
this.pnlBotoes.Controls.Add(this.btnCarregar);
|
||||
this.pnlBotoes.Dock = System.Windows.Forms.DockStyle.Bottom;
|
||||
this.pnlBotoes.Location = new System.Drawing.Point(0, 479);
|
||||
this.pnlBotoes.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.pnlBotoes.Name = "pnlBotoes";
|
||||
this.pnlBotoes.Size = new System.Drawing.Size(790, 46);
|
||||
this.pnlBotoes.TabIndex = 2;
|
||||
//
|
||||
// lblMapa
|
||||
//
|
||||
this.lblMapa.AutoSize = true;
|
||||
this.lblMapa.Location = new System.Drawing.Point(9, 17);
|
||||
this.lblMapa.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblMapa.Name = "lblMapa";
|
||||
this.lblMapa.Size = new System.Drawing.Size(91, 13);
|
||||
this.lblMapa.TabIndex = 1;
|
||||
this.lblMapa.Text = "Mapa carregado: ";
|
||||
//
|
||||
// btnCarregar
|
||||
//
|
||||
this.btnCarregar.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnCarregar.Location = new System.Drawing.Point(684, 11);
|
||||
this.btnCarregar.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.btnCarregar.Name = "btnCarregar";
|
||||
this.btnCarregar.Size = new System.Drawing.Size(98, 26);
|
||||
this.btnCarregar.TabIndex = 0;
|
||||
this.btnCarregar.Text = "Carregar mapa";
|
||||
this.btnCarregar.UseVisualStyleBackColor = true;
|
||||
this.btnCarregar.Click += new System.EventHandler(this.btnCarregar_Click);
|
||||
//
|
||||
// frmMapa
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(1054, 646);
|
||||
this.ClientSize = new System.Drawing.Size(790, 525);
|
||||
this.Controls.Add(this.pnlBotoes);
|
||||
this.Controls.Add(this.pnlMapa);
|
||||
this.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.Name = "frmMapa";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "Mapas";
|
||||
this.pnlMapa.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.picLoading)).EndInit();
|
||||
this.pnlBotoes.ResumeLayout(false);
|
||||
this.pnlBotoes.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picLoading)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ namespace AgroBase.Forms
|
|||
|
||||
private void btnCarregar_Click(object sender, EventArgs e)
|
||||
{
|
||||
mapaService.CarregarMapa();
|
||||
mapaService.CarregarMapa(MapasVariaveisModel.NomeArquivoMapaInterativo, MapasVariaveisModel.NomeArquivoMapaInterativoSaida);
|
||||
picLoading.Visible = true;
|
||||
Timer tmr = new Timer() { Interval = 500 };
|
||||
tmr.Tick += Tmr_Tick;
|
||||
|
|
|
|||
|
|
@ -49,6 +49,8 @@ namespace AgroBase
|
|||
this.generalStrip = new System.Windows.Forms.StatusStrip();
|
||||
this.lblStripJoystick = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.lblStripJoystickComando = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.lblStripOperacao = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.lblStripOperacaoStatus = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.gpbMovimentacao = new System.Windows.Forms.GroupBox();
|
||||
this.lblKmh = new System.Windows.Forms.Label();
|
||||
this.trkKmh = new System.Windows.Forms.TrackBar();
|
||||
|
|
@ -79,8 +81,7 @@ namespace AgroBase
|
|||
this.btnIniciarOperacao = new System.Windows.Forms.Button();
|
||||
this.lblModoOperacao = new System.Windows.Forms.Label();
|
||||
this.cmbModoOperacao = new System.Windows.Forms.ComboBox();
|
||||
this.lblStripOperacao = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.lblStripOperacaoStatus = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.btnGPS = new System.Windows.Forms.Button();
|
||||
this.gpbAcoes.SuspendLayout();
|
||||
this.erroStrip.SuspendLayout();
|
||||
this.pnlLateral.SuspendLayout();
|
||||
|
|
@ -105,9 +106,11 @@ namespace AgroBase
|
|||
this.gpbAcoes.Controls.Add(this.erroStrip);
|
||||
this.gpbAcoes.Controls.Add(this.pnlLateral);
|
||||
this.gpbAcoes.Dock = System.Windows.Forms.DockStyle.Right;
|
||||
this.gpbAcoes.Location = new System.Drawing.Point(588, 0);
|
||||
this.gpbAcoes.Location = new System.Drawing.Point(441, 0);
|
||||
this.gpbAcoes.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.gpbAcoes.Name = "gpbAcoes";
|
||||
this.gpbAcoes.Size = new System.Drawing.Size(823, 763);
|
||||
this.gpbAcoes.Padding = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.gpbAcoes.Size = new System.Drawing.Size(617, 609);
|
||||
this.gpbAcoes.TabIndex = 0;
|
||||
this.gpbAcoes.TabStop = false;
|
||||
this.gpbAcoes.Text = "Conexão";
|
||||
|
|
@ -117,16 +120,17 @@ namespace AgroBase
|
|||
this.erroStrip.ImageScalingSize = new System.Drawing.Size(20, 20);
|
||||
this.erroStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.lblStripErro});
|
||||
this.erroStrip.Location = new System.Drawing.Point(3, 734);
|
||||
this.erroStrip.Location = new System.Drawing.Point(2, 585);
|
||||
this.erroStrip.Name = "erroStrip";
|
||||
this.erroStrip.Size = new System.Drawing.Size(817, 26);
|
||||
this.erroStrip.Padding = new System.Windows.Forms.Padding(1, 0, 10, 0);
|
||||
this.erroStrip.Size = new System.Drawing.Size(613, 22);
|
||||
this.erroStrip.TabIndex = 1;
|
||||
this.erroStrip.Text = "statusStrip1";
|
||||
//
|
||||
// lblStripErro
|
||||
//
|
||||
this.lblStripErro.Name = "lblStripErro";
|
||||
this.lblStripErro.Size = new System.Drawing.Size(62, 20);
|
||||
this.lblStripErro.Size = new System.Drawing.Size(49, 17);
|
||||
this.lblStripErro.Text = "Iniciado";
|
||||
//
|
||||
// pnlLateral
|
||||
|
|
@ -139,17 +143,20 @@ namespace AgroBase
|
|||
this.pnlLateral.Controls.Add(this.gpbNovoDispositivo);
|
||||
this.pnlLateral.Controls.Add(this.btnNovoDispositivo);
|
||||
this.pnlLateral.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.pnlLateral.Location = new System.Drawing.Point(3, 18);
|
||||
this.pnlLateral.Location = new System.Drawing.Point(2, 15);
|
||||
this.pnlLateral.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.pnlLateral.Name = "pnlLateral";
|
||||
this.pnlLateral.Size = new System.Drawing.Size(817, 742);
|
||||
this.pnlLateral.Size = new System.Drawing.Size(613, 592);
|
||||
this.pnlLateral.TabIndex = 0;
|
||||
//
|
||||
// gpbDispositivos
|
||||
//
|
||||
this.gpbDispositivos.Controls.Add(this.lstDisponiveis);
|
||||
this.gpbDispositivos.Location = new System.Drawing.Point(215, 96);
|
||||
this.gpbDispositivos.Location = new System.Drawing.Point(161, 78);
|
||||
this.gpbDispositivos.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.gpbDispositivos.Name = "gpbDispositivos";
|
||||
this.gpbDispositivos.Size = new System.Drawing.Size(599, 164);
|
||||
this.gpbDispositivos.Padding = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.gpbDispositivos.Size = new System.Drawing.Size(449, 133);
|
||||
this.gpbDispositivos.TabIndex = 3;
|
||||
this.gpbDispositivos.TabStop = false;
|
||||
this.gpbDispositivos.Text = "Dispositivos disponíveis";
|
||||
|
|
@ -157,18 +164,20 @@ namespace AgroBase
|
|||
// lstDisponiveis
|
||||
//
|
||||
this.lstDisponiveis.HideSelection = false;
|
||||
this.lstDisponiveis.Location = new System.Drawing.Point(15, 25);
|
||||
this.lstDisponiveis.Location = new System.Drawing.Point(11, 20);
|
||||
this.lstDisponiveis.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.lstDisponiveis.Name = "lstDisponiveis";
|
||||
this.lstDisponiveis.Size = new System.Drawing.Size(334, 124);
|
||||
this.lstDisponiveis.Size = new System.Drawing.Size(252, 102);
|
||||
this.lstDisponiveis.TabIndex = 0;
|
||||
this.lstDisponiveis.UseCompatibleStateImageBehavior = false;
|
||||
this.lstDisponiveis.View = System.Windows.Forms.View.List;
|
||||
//
|
||||
// btnRemover
|
||||
//
|
||||
this.btnRemover.Location = new System.Drawing.Point(116, 62);
|
||||
this.btnRemover.Location = new System.Drawing.Point(87, 50);
|
||||
this.btnRemover.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.btnRemover.Name = "btnRemover";
|
||||
this.btnRemover.Size = new System.Drawing.Size(83, 28);
|
||||
this.btnRemover.Size = new System.Drawing.Size(62, 23);
|
||||
this.btnRemover.TabIndex = 12;
|
||||
this.btnRemover.Text = "Remover";
|
||||
this.btnRemover.UseVisualStyleBackColor = true;
|
||||
|
|
@ -177,9 +186,10 @@ namespace AgroBase
|
|||
// lblDispositivos
|
||||
//
|
||||
this.lblDispositivos.AutoSize = true;
|
||||
this.lblDispositivos.Location = new System.Drawing.Point(27, 12);
|
||||
this.lblDispositivos.Location = new System.Drawing.Point(20, 10);
|
||||
this.lblDispositivos.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblDispositivos.Name = "lblDispositivos";
|
||||
this.lblDispositivos.Size = new System.Drawing.Size(83, 17);
|
||||
this.lblDispositivos.Size = new System.Drawing.Size(63, 13);
|
||||
this.lblDispositivos.TabIndex = 11;
|
||||
this.lblDispositivos.Text = "Dispositivos";
|
||||
//
|
||||
|
|
@ -187,9 +197,10 @@ namespace AgroBase
|
|||
//
|
||||
this.cmbDispositivos.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cmbDispositivos.FormattingEnabled = true;
|
||||
this.cmbDispositivos.Location = new System.Drawing.Point(30, 32);
|
||||
this.cmbDispositivos.Location = new System.Drawing.Point(22, 26);
|
||||
this.cmbDispositivos.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbDispositivos.Name = "cmbDispositivos";
|
||||
this.cmbDispositivos.Size = new System.Drawing.Size(169, 24);
|
||||
this.cmbDispositivos.Size = new System.Drawing.Size(128, 21);
|
||||
this.cmbDispositivos.TabIndex = 10;
|
||||
this.cmbDispositivos.SelectedIndexChanged += new System.EventHandler(this.cmbDispositivos_SelectedIndexChanged);
|
||||
//
|
||||
|
|
@ -201,9 +212,11 @@ namespace AgroBase
|
|||
this.gpbNovoDispositivo.Controls.Add(this.lblDescricao);
|
||||
this.gpbNovoDispositivo.Controls.Add(this.lblTipo);
|
||||
this.gpbNovoDispositivo.Enabled = false;
|
||||
this.gpbNovoDispositivo.Location = new System.Drawing.Point(21, 96);
|
||||
this.gpbNovoDispositivo.Location = new System.Drawing.Point(16, 78);
|
||||
this.gpbNovoDispositivo.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.gpbNovoDispositivo.Name = "gpbNovoDispositivo";
|
||||
this.gpbNovoDispositivo.Size = new System.Drawing.Size(188, 164);
|
||||
this.gpbNovoDispositivo.Padding = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.gpbNovoDispositivo.Size = new System.Drawing.Size(141, 133);
|
||||
this.gpbNovoDispositivo.TabIndex = 9;
|
||||
this.gpbNovoDispositivo.TabStop = false;
|
||||
this.gpbNovoDispositivo.Text = "Novo Dispositivo";
|
||||
|
|
@ -212,16 +225,18 @@ namespace AgroBase
|
|||
//
|
||||
this.cmbTipos.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cmbTipos.FormattingEnabled = true;
|
||||
this.cmbTipos.Location = new System.Drawing.Point(9, 45);
|
||||
this.cmbTipos.Location = new System.Drawing.Point(7, 37);
|
||||
this.cmbTipos.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbTipos.Name = "cmbTipos";
|
||||
this.cmbTipos.Size = new System.Drawing.Size(169, 24);
|
||||
this.cmbTipos.Size = new System.Drawing.Size(128, 21);
|
||||
this.cmbTipos.TabIndex = 2;
|
||||
//
|
||||
// btnSalvar
|
||||
//
|
||||
this.btnSalvar.Location = new System.Drawing.Point(9, 124);
|
||||
this.btnSalvar.Location = new System.Drawing.Point(7, 101);
|
||||
this.btnSalvar.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.btnSalvar.Name = "btnSalvar";
|
||||
this.btnSalvar.Size = new System.Drawing.Size(169, 25);
|
||||
this.btnSalvar.Size = new System.Drawing.Size(127, 20);
|
||||
this.btnSalvar.TabIndex = 9;
|
||||
this.btnSalvar.Text = "Salvar";
|
||||
this.btnSalvar.UseVisualStyleBackColor = true;
|
||||
|
|
@ -229,34 +244,38 @@ namespace AgroBase
|
|||
//
|
||||
// txtDescricao
|
||||
//
|
||||
this.txtDescricao.Location = new System.Drawing.Point(9, 94);
|
||||
this.txtDescricao.Location = new System.Drawing.Point(7, 76);
|
||||
this.txtDescricao.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.txtDescricao.Name = "txtDescricao";
|
||||
this.txtDescricao.Size = new System.Drawing.Size(169, 22);
|
||||
this.txtDescricao.Size = new System.Drawing.Size(128, 20);
|
||||
this.txtDescricao.TabIndex = 3;
|
||||
//
|
||||
// lblDescricao
|
||||
//
|
||||
this.lblDescricao.AutoSize = true;
|
||||
this.lblDescricao.Location = new System.Drawing.Point(6, 74);
|
||||
this.lblDescricao.Location = new System.Drawing.Point(4, 60);
|
||||
this.lblDescricao.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblDescricao.Name = "lblDescricao";
|
||||
this.lblDescricao.Size = new System.Drawing.Size(71, 17);
|
||||
this.lblDescricao.Size = new System.Drawing.Size(55, 13);
|
||||
this.lblDescricao.TabIndex = 2;
|
||||
this.lblDescricao.Text = "Descrição";
|
||||
//
|
||||
// lblTipo
|
||||
//
|
||||
this.lblTipo.AutoSize = true;
|
||||
this.lblTipo.Location = new System.Drawing.Point(6, 25);
|
||||
this.lblTipo.Location = new System.Drawing.Point(4, 20);
|
||||
this.lblTipo.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblTipo.Name = "lblTipo";
|
||||
this.lblTipo.Size = new System.Drawing.Size(36, 17);
|
||||
this.lblTipo.Size = new System.Drawing.Size(28, 13);
|
||||
this.lblTipo.TabIndex = 0;
|
||||
this.lblTipo.Text = "Tipo";
|
||||
//
|
||||
// btnNovoDispositivo
|
||||
//
|
||||
this.btnNovoDispositivo.Location = new System.Drawing.Point(30, 62);
|
||||
this.btnNovoDispositivo.Location = new System.Drawing.Point(22, 50);
|
||||
this.btnNovoDispositivo.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.btnNovoDispositivo.Name = "btnNovoDispositivo";
|
||||
this.btnNovoDispositivo.Size = new System.Drawing.Size(80, 28);
|
||||
this.btnNovoDispositivo.Size = new System.Drawing.Size(60, 23);
|
||||
this.btnNovoDispositivo.TabIndex = 8;
|
||||
this.btnNovoDispositivo.Text = "Novo dispositivo";
|
||||
this.btnNovoDispositivo.UseVisualStyleBackColor = true;
|
||||
|
|
@ -270,33 +289,48 @@ namespace AgroBase
|
|||
this.lblStripJoystickComando,
|
||||
this.lblStripOperacao,
|
||||
this.lblStripOperacaoStatus});
|
||||
this.generalStrip.Location = new System.Drawing.Point(0, 737);
|
||||
this.generalStrip.Location = new System.Drawing.Point(0, 587);
|
||||
this.generalStrip.Name = "generalStrip";
|
||||
this.generalStrip.Size = new System.Drawing.Size(588, 26);
|
||||
this.generalStrip.Padding = new System.Windows.Forms.Padding(1, 0, 10, 0);
|
||||
this.generalStrip.Size = new System.Drawing.Size(441, 22);
|
||||
this.generalStrip.TabIndex = 1;
|
||||
this.generalStrip.Text = "statusStrip1";
|
||||
//
|
||||
// lblStripJoystick
|
||||
//
|
||||
this.lblStripJoystick.Name = "lblStripJoystick";
|
||||
this.lblStripJoystick.Size = new System.Drawing.Size(161, 20);
|
||||
this.lblStripJoystick.Size = new System.Drawing.Size(129, 17);
|
||||
this.lblStripJoystick.Text = "Joystick: Desconectado";
|
||||
//
|
||||
// lblStripJoystickComando
|
||||
//
|
||||
this.lblStripJoystickComando.Name = "lblStripJoystickComando";
|
||||
this.lblStripJoystickComando.Size = new System.Drawing.Size(18, 20);
|
||||
this.lblStripJoystickComando.Size = new System.Drawing.Size(16, 17);
|
||||
this.lblStripJoystickComando.Text = "...";
|
||||
//
|
||||
// lblStripOperacao
|
||||
//
|
||||
this.lblStripOperacao.Name = "lblStripOperacao";
|
||||
this.lblStripOperacao.Size = new System.Drawing.Size(104, 17);
|
||||
this.lblStripOperacao.Text = "Operação: Manual";
|
||||
//
|
||||
// lblStripOperacaoStatus
|
||||
//
|
||||
this.lblStripOperacaoStatus.Name = "lblStripOperacaoStatus";
|
||||
this.lblStripOperacaoStatus.Size = new System.Drawing.Size(74, 17);
|
||||
this.lblStripOperacaoStatus.Text = "Não iniciado";
|
||||
//
|
||||
// gpbMovimentacao
|
||||
//
|
||||
this.gpbMovimentacao.Controls.Add(this.lblKmh);
|
||||
this.gpbMovimentacao.Controls.Add(this.trkKmh);
|
||||
this.gpbMovimentacao.Controls.Add(this.trkRPM);
|
||||
this.gpbMovimentacao.Controls.Add(this.lblRPM);
|
||||
this.gpbMovimentacao.Location = new System.Drawing.Point(12, 78);
|
||||
this.gpbMovimentacao.Location = new System.Drawing.Point(9, 63);
|
||||
this.gpbMovimentacao.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.gpbMovimentacao.Name = "gpbMovimentacao";
|
||||
this.gpbMovimentacao.Size = new System.Drawing.Size(440, 105);
|
||||
this.gpbMovimentacao.Padding = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.gpbMovimentacao.Size = new System.Drawing.Size(330, 85);
|
||||
this.gpbMovimentacao.TabIndex = 2;
|
||||
this.gpbMovimentacao.TabStop = false;
|
||||
this.gpbMovimentacao.Text = "Controle Movimentação";
|
||||
|
|
@ -304,18 +338,20 @@ namespace AgroBase
|
|||
// lblKmh
|
||||
//
|
||||
this.lblKmh.AutoSize = true;
|
||||
this.lblKmh.Location = new System.Drawing.Point(221, 25);
|
||||
this.lblKmh.Location = new System.Drawing.Point(166, 20);
|
||||
this.lblKmh.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblKmh.Name = "lblKmh";
|
||||
this.lblKmh.Size = new System.Drawing.Size(128, 17);
|
||||
this.lblKmh.Size = new System.Drawing.Size(100, 13);
|
||||
this.lblKmh.TabIndex = 23;
|
||||
this.lblKmh.Text = "Velocidade: 3 km/h";
|
||||
//
|
||||
// trkKmh
|
||||
//
|
||||
this.trkKmh.Location = new System.Drawing.Point(224, 45);
|
||||
this.trkKmh.Location = new System.Drawing.Point(168, 37);
|
||||
this.trkKmh.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.trkKmh.Maximum = 34;
|
||||
this.trkKmh.Name = "trkKmh";
|
||||
this.trkKmh.Size = new System.Drawing.Size(210, 56);
|
||||
this.trkKmh.Size = new System.Drawing.Size(158, 45);
|
||||
this.trkKmh.TabIndex = 22;
|
||||
this.trkKmh.TickFrequency = 2;
|
||||
this.trkKmh.Value = 3;
|
||||
|
|
@ -323,11 +359,12 @@ namespace AgroBase
|
|||
//
|
||||
// trkRPM
|
||||
//
|
||||
this.trkRPM.Location = new System.Drawing.Point(6, 45);
|
||||
this.trkRPM.Location = new System.Drawing.Point(4, 37);
|
||||
this.trkRPM.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.trkRPM.Maximum = 500;
|
||||
this.trkRPM.Minimum = 5;
|
||||
this.trkRPM.Name = "trkRPM";
|
||||
this.trkRPM.Size = new System.Drawing.Size(210, 56);
|
||||
this.trkRPM.Size = new System.Drawing.Size(158, 45);
|
||||
this.trkRPM.TabIndex = 20;
|
||||
this.trkRPM.TickFrequency = 20;
|
||||
this.trkRPM.Value = 5;
|
||||
|
|
@ -336,18 +373,20 @@ namespace AgroBase
|
|||
// lblRPM
|
||||
//
|
||||
this.lblRPM.AutoSize = true;
|
||||
this.lblRPM.Location = new System.Drawing.Point(3, 25);
|
||||
this.lblRPM.Location = new System.Drawing.Point(2, 20);
|
||||
this.lblRPM.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblRPM.Name = "lblRPM";
|
||||
this.lblRPM.Size = new System.Drawing.Size(54, 17);
|
||||
this.lblRPM.Size = new System.Drawing.Size(43, 13);
|
||||
this.lblRPM.TabIndex = 21;
|
||||
this.lblRPM.Text = "RPM: 5";
|
||||
//
|
||||
// tkbAngulo
|
||||
//
|
||||
this.tkbAngulo.Location = new System.Drawing.Point(6, 117);
|
||||
this.tkbAngulo.Location = new System.Drawing.Point(4, 95);
|
||||
this.tkbAngulo.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.tkbAngulo.Maximum = 180;
|
||||
this.tkbAngulo.Name = "tkbAngulo";
|
||||
this.tkbAngulo.Size = new System.Drawing.Size(419, 56);
|
||||
this.tkbAngulo.Size = new System.Drawing.Size(314, 45);
|
||||
this.tkbAngulo.TabIndex = 17;
|
||||
this.tkbAngulo.TickFrequency = 5;
|
||||
this.tkbAngulo.ValueChanged += new System.EventHandler(this.tkbRampa_ValueChanged);
|
||||
|
|
@ -355,28 +394,31 @@ namespace AgroBase
|
|||
// lblAngulo
|
||||
//
|
||||
this.lblAngulo.AutoSize = true;
|
||||
this.lblAngulo.Location = new System.Drawing.Point(3, 97);
|
||||
this.lblAngulo.Location = new System.Drawing.Point(2, 79);
|
||||
this.lblAngulo.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblAngulo.Name = "lblAngulo";
|
||||
this.lblAngulo.Size = new System.Drawing.Size(73, 17);
|
||||
this.lblAngulo.Size = new System.Drawing.Size(56, 13);
|
||||
this.lblAngulo.TabIndex = 16;
|
||||
this.lblAngulo.Text = "Angulo: 0º";
|
||||
//
|
||||
// lblVelocidade
|
||||
//
|
||||
this.lblVelocidade.AutoSize = true;
|
||||
this.lblVelocidade.Location = new System.Drawing.Point(3, 23);
|
||||
this.lblVelocidade.Location = new System.Drawing.Point(2, 19);
|
||||
this.lblVelocidade.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblVelocidade.Name = "lblVelocidade";
|
||||
this.lblVelocidade.Size = new System.Drawing.Size(106, 17);
|
||||
this.lblVelocidade.Size = new System.Drawing.Size(80, 13);
|
||||
this.lblVelocidade.TabIndex = 15;
|
||||
this.lblVelocidade.Text = "Velocidade: 1%";
|
||||
//
|
||||
// tkbVelocidade
|
||||
//
|
||||
this.tkbVelocidade.Location = new System.Drawing.Point(6, 43);
|
||||
this.tkbVelocidade.Location = new System.Drawing.Point(4, 35);
|
||||
this.tkbVelocidade.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.tkbVelocidade.Maximum = 100;
|
||||
this.tkbVelocidade.Minimum = 1;
|
||||
this.tkbVelocidade.Name = "tkbVelocidade";
|
||||
this.tkbVelocidade.Size = new System.Drawing.Size(419, 56);
|
||||
this.tkbVelocidade.Size = new System.Drawing.Size(314, 45);
|
||||
this.tkbVelocidade.TabIndex = 14;
|
||||
this.tkbVelocidade.TickFrequency = 5;
|
||||
this.tkbVelocidade.Value = 1;
|
||||
|
|
@ -384,9 +426,10 @@ namespace AgroBase
|
|||
//
|
||||
// btnVer
|
||||
//
|
||||
this.btnVer.Location = new System.Drawing.Point(341, 25);
|
||||
this.btnVer.Location = new System.Drawing.Point(256, 20);
|
||||
this.btnVer.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.btnVer.Name = "btnVer";
|
||||
this.btnVer.Size = new System.Drawing.Size(84, 25);
|
||||
this.btnVer.Size = new System.Drawing.Size(63, 20);
|
||||
this.btnVer.TabIndex = 13;
|
||||
this.btnVer.Text = "Ver";
|
||||
this.btnVer.UseVisualStyleBackColor = true;
|
||||
|
|
@ -394,9 +437,10 @@ namespace AgroBase
|
|||
//
|
||||
// btnJoyAtt
|
||||
//
|
||||
this.btnJoyAtt.Location = new System.Drawing.Point(161, 25);
|
||||
this.btnJoyAtt.Location = new System.Drawing.Point(121, 20);
|
||||
this.btnJoyAtt.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.btnJoyAtt.Name = "btnJoyAtt";
|
||||
this.btnJoyAtt.Size = new System.Drawing.Size(84, 25);
|
||||
this.btnJoyAtt.Size = new System.Drawing.Size(63, 20);
|
||||
this.btnJoyAtt.TabIndex = 12;
|
||||
this.btnJoyAtt.Text = "Atualizar";
|
||||
this.btnJoyAtt.UseVisualStyleBackColor = true;
|
||||
|
|
@ -404,9 +448,10 @@ namespace AgroBase
|
|||
//
|
||||
// btnJoyEdt
|
||||
//
|
||||
this.btnJoyEdt.Location = new System.Drawing.Point(251, 25);
|
||||
this.btnJoyEdt.Location = new System.Drawing.Point(188, 20);
|
||||
this.btnJoyEdt.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.btnJoyEdt.Name = "btnJoyEdt";
|
||||
this.btnJoyEdt.Size = new System.Drawing.Size(84, 25);
|
||||
this.btnJoyEdt.Size = new System.Drawing.Size(63, 20);
|
||||
this.btnJoyEdt.TabIndex = 11;
|
||||
this.btnJoyEdt.Text = "Editar";
|
||||
this.btnJoyEdt.UseVisualStyleBackColor = true;
|
||||
|
|
@ -416,9 +461,10 @@ namespace AgroBase
|
|||
//
|
||||
this.cmbJoysticks.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cmbJoysticks.FormattingEnabled = true;
|
||||
this.cmbJoysticks.Location = new System.Drawing.Point(6, 26);
|
||||
this.cmbJoysticks.Location = new System.Drawing.Point(4, 21);
|
||||
this.cmbJoysticks.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbJoysticks.Name = "cmbJoysticks";
|
||||
this.cmbJoysticks.Size = new System.Drawing.Size(148, 24);
|
||||
this.cmbJoysticks.Size = new System.Drawing.Size(112, 21);
|
||||
this.cmbJoysticks.TabIndex = 3;
|
||||
//
|
||||
// timerDispositivos
|
||||
|
|
@ -433,9 +479,11 @@ namespace AgroBase
|
|||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.gpbSensoriamento.Controls.Add(this.lblSenMotores);
|
||||
this.gpbSensoriamento.Controls.Add(this.gridSenMotores);
|
||||
this.gpbSensoriamento.Location = new System.Drawing.Point(12, 508);
|
||||
this.gpbSensoriamento.Location = new System.Drawing.Point(9, 413);
|
||||
this.gpbSensoriamento.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.gpbSensoriamento.Name = "gpbSensoriamento";
|
||||
this.gpbSensoriamento.Size = new System.Drawing.Size(564, 226);
|
||||
this.gpbSensoriamento.Padding = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.gpbSensoriamento.Size = new System.Drawing.Size(423, 184);
|
||||
this.gpbSensoriamento.TabIndex = 13;
|
||||
this.gpbSensoriamento.TabStop = false;
|
||||
this.gpbSensoriamento.Text = "Sensoriamento";
|
||||
|
|
@ -443,9 +491,10 @@ namespace AgroBase
|
|||
// lblSenMotores
|
||||
//
|
||||
this.lblSenMotores.AutoSize = true;
|
||||
this.lblSenMotores.Location = new System.Drawing.Point(12, 23);
|
||||
this.lblSenMotores.Location = new System.Drawing.Point(9, 19);
|
||||
this.lblSenMotores.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblSenMotores.Name = "lblSenMotores";
|
||||
this.lblSenMotores.Size = new System.Drawing.Size(59, 17);
|
||||
this.lblSenMotores.Size = new System.Drawing.Size(45, 13);
|
||||
this.lblSenMotores.TabIndex = 1;
|
||||
this.lblSenMotores.Text = "Motores";
|
||||
//
|
||||
|
|
@ -455,18 +504,20 @@ namespace AgroBase
|
|||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.gridSenMotores.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||
this.gridSenMotores.Location = new System.Drawing.Point(6, 43);
|
||||
this.gridSenMotores.Location = new System.Drawing.Point(4, 35);
|
||||
this.gridSenMotores.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.gridSenMotores.Name = "gridSenMotores";
|
||||
this.gridSenMotores.RowHeadersWidth = 51;
|
||||
this.gridSenMotores.RowTemplate.Height = 24;
|
||||
this.gridSenMotores.Size = new System.Drawing.Size(552, 177);
|
||||
this.gridSenMotores.Size = new System.Drawing.Size(414, 144);
|
||||
this.gridSenMotores.TabIndex = 0;
|
||||
//
|
||||
// btnDiagnosticos
|
||||
//
|
||||
this.btnDiagnosticos.Location = new System.Drawing.Point(6, 21);
|
||||
this.btnDiagnosticos.Location = new System.Drawing.Point(4, 17);
|
||||
this.btnDiagnosticos.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.btnDiagnosticos.Name = "btnDiagnosticos";
|
||||
this.btnDiagnosticos.Size = new System.Drawing.Size(112, 25);
|
||||
this.btnDiagnosticos.Size = new System.Drawing.Size(84, 20);
|
||||
this.btnDiagnosticos.TabIndex = 14;
|
||||
this.btnDiagnosticos.Text = "Diagnósticos";
|
||||
this.btnDiagnosticos.UseVisualStyleBackColor = true;
|
||||
|
|
@ -474,9 +525,10 @@ namespace AgroBase
|
|||
//
|
||||
// btnAcompanhamento
|
||||
//
|
||||
this.btnAcompanhamento.Location = new System.Drawing.Point(6, 52);
|
||||
this.btnAcompanhamento.Location = new System.Drawing.Point(4, 42);
|
||||
this.btnAcompanhamento.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.btnAcompanhamento.Name = "btnAcompanhamento";
|
||||
this.btnAcompanhamento.Size = new System.Drawing.Size(112, 25);
|
||||
this.btnAcompanhamento.Size = new System.Drawing.Size(84, 20);
|
||||
this.btnAcompanhamento.TabIndex = 15;
|
||||
this.btnAcompanhamento.Text = "Plotagem";
|
||||
this.btnAcompanhamento.UseVisualStyleBackColor = true;
|
||||
|
|
@ -484,9 +536,10 @@ namespace AgroBase
|
|||
//
|
||||
// btnAtuCamera
|
||||
//
|
||||
this.btnAtuCamera.Location = new System.Drawing.Point(6, 83);
|
||||
this.btnAtuCamera.Location = new System.Drawing.Point(4, 67);
|
||||
this.btnAtuCamera.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.btnAtuCamera.Name = "btnAtuCamera";
|
||||
this.btnAtuCamera.Size = new System.Drawing.Size(112, 25);
|
||||
this.btnAtuCamera.Size = new System.Drawing.Size(84, 20);
|
||||
this.btnAtuCamera.TabIndex = 16;
|
||||
this.btnAtuCamera.Text = "Ver solo";
|
||||
this.btnAtuCamera.UseVisualStyleBackColor = true;
|
||||
|
|
@ -494,9 +547,10 @@ namespace AgroBase
|
|||
//
|
||||
// btnMapas
|
||||
//
|
||||
this.btnMapas.Location = new System.Drawing.Point(6, 145);
|
||||
this.btnMapas.Location = new System.Drawing.Point(4, 118);
|
||||
this.btnMapas.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.btnMapas.Name = "btnMapas";
|
||||
this.btnMapas.Size = new System.Drawing.Size(112, 25);
|
||||
this.btnMapas.Size = new System.Drawing.Size(84, 20);
|
||||
this.btnMapas.TabIndex = 17;
|
||||
this.btnMapas.Text = "Mapas";
|
||||
this.btnMapas.UseVisualStyleBackColor = true;
|
||||
|
|
@ -504,9 +558,10 @@ namespace AgroBase
|
|||
//
|
||||
// btnSenCamera
|
||||
//
|
||||
this.btnSenCamera.Location = new System.Drawing.Point(6, 114);
|
||||
this.btnSenCamera.Location = new System.Drawing.Point(4, 93);
|
||||
this.btnSenCamera.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.btnSenCamera.Name = "btnSenCamera";
|
||||
this.btnSenCamera.Size = new System.Drawing.Size(112, 25);
|
||||
this.btnSenCamera.Size = new System.Drawing.Size(84, 20);
|
||||
this.btnSenCamera.TabIndex = 18;
|
||||
this.btnSenCamera.Text = "Ver caminho";
|
||||
this.btnSenCamera.UseVisualStyleBackColor = true;
|
||||
|
|
@ -518,9 +573,11 @@ namespace AgroBase
|
|||
this.gpbJoystick.Controls.Add(this.btnJoyEdt);
|
||||
this.gpbJoystick.Controls.Add(this.btnJoyAtt);
|
||||
this.gpbJoystick.Controls.Add(this.btnVer);
|
||||
this.gpbJoystick.Location = new System.Drawing.Point(12, 12);
|
||||
this.gpbJoystick.Location = new System.Drawing.Point(9, 10);
|
||||
this.gpbJoystick.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.gpbJoystick.Name = "gpbJoystick";
|
||||
this.gpbJoystick.Size = new System.Drawing.Size(440, 60);
|
||||
this.gpbJoystick.Padding = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.gpbJoystick.Size = new System.Drawing.Size(330, 49);
|
||||
this.gpbJoystick.TabIndex = 18;
|
||||
this.gpbJoystick.TabStop = false;
|
||||
this.gpbJoystick.Text = "Joystick";
|
||||
|
|
@ -531,23 +588,28 @@ namespace AgroBase
|
|||
this.groupBox2.Controls.Add(this.tkbAngulo);
|
||||
this.groupBox2.Controls.Add(this.lblAngulo);
|
||||
this.groupBox2.Controls.Add(this.lblVelocidade);
|
||||
this.groupBox2.Location = new System.Drawing.Point(12, 189);
|
||||
this.groupBox2.Location = new System.Drawing.Point(9, 154);
|
||||
this.groupBox2.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.groupBox2.Name = "groupBox2";
|
||||
this.groupBox2.Size = new System.Drawing.Size(440, 183);
|
||||
this.groupBox2.Padding = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.groupBox2.Size = new System.Drawing.Size(330, 149);
|
||||
this.groupBox2.TabIndex = 19;
|
||||
this.groupBox2.TabStop = false;
|
||||
this.groupBox2.Text = "Controle Direcional";
|
||||
//
|
||||
// gpbAtalhos
|
||||
//
|
||||
this.gpbAtalhos.Controls.Add(this.btnGPS);
|
||||
this.gpbAtalhos.Controls.Add(this.btnDiagnosticos);
|
||||
this.gpbAtalhos.Controls.Add(this.btnAcompanhamento);
|
||||
this.gpbAtalhos.Controls.Add(this.btnSenCamera);
|
||||
this.gpbAtalhos.Controls.Add(this.btnAtuCamera);
|
||||
this.gpbAtalhos.Controls.Add(this.btnMapas);
|
||||
this.gpbAtalhos.Location = new System.Drawing.Point(458, 12);
|
||||
this.gpbAtalhos.Location = new System.Drawing.Point(344, 10);
|
||||
this.gpbAtalhos.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.gpbAtalhos.Name = "gpbAtalhos";
|
||||
this.gpbAtalhos.Size = new System.Drawing.Size(124, 360);
|
||||
this.gpbAtalhos.Padding = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.gpbAtalhos.Size = new System.Drawing.Size(93, 292);
|
||||
this.gpbAtalhos.TabIndex = 20;
|
||||
this.gpbAtalhos.TabStop = false;
|
||||
this.gpbAtalhos.Text = "Atalhos";
|
||||
|
|
@ -558,9 +620,11 @@ namespace AgroBase
|
|||
this.gpbOperacao.Controls.Add(this.btnIniciarOperacao);
|
||||
this.gpbOperacao.Controls.Add(this.lblModoOperacao);
|
||||
this.gpbOperacao.Controls.Add(this.cmbModoOperacao);
|
||||
this.gpbOperacao.Location = new System.Drawing.Point(12, 378);
|
||||
this.gpbOperacao.Location = new System.Drawing.Point(9, 307);
|
||||
this.gpbOperacao.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.gpbOperacao.Name = "gpbOperacao";
|
||||
this.gpbOperacao.Size = new System.Drawing.Size(570, 124);
|
||||
this.gpbOperacao.Padding = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.gpbOperacao.Size = new System.Drawing.Size(428, 101);
|
||||
this.gpbOperacao.TabIndex = 21;
|
||||
this.gpbOperacao.TabStop = false;
|
||||
this.gpbOperacao.Text = "Operação";
|
||||
|
|
@ -568,18 +632,20 @@ namespace AgroBase
|
|||
// chbDebugMode
|
||||
//
|
||||
this.chbDebugMode.AutoSize = true;
|
||||
this.chbDebugMode.Location = new System.Drawing.Point(179, 49);
|
||||
this.chbDebugMode.Location = new System.Drawing.Point(134, 40);
|
||||
this.chbDebugMode.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.chbDebugMode.Name = "chbDebugMode";
|
||||
this.chbDebugMode.Size = new System.Drawing.Size(139, 21);
|
||||
this.chbDebugMode.Size = new System.Drawing.Size(109, 17);
|
||||
this.chbDebugMode.TabIndex = 14;
|
||||
this.chbDebugMode.Text = "Modo Depuração";
|
||||
this.chbDebugMode.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// btnIniciarOperacao
|
||||
//
|
||||
this.btnIniciarOperacao.Location = new System.Drawing.Point(9, 77);
|
||||
this.btnIniciarOperacao.Location = new System.Drawing.Point(7, 63);
|
||||
this.btnIniciarOperacao.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.btnIniciarOperacao.Name = "btnIniciarOperacao";
|
||||
this.btnIniciarOperacao.Size = new System.Drawing.Size(145, 41);
|
||||
this.btnIniciarOperacao.Size = new System.Drawing.Size(109, 33);
|
||||
this.btnIniciarOperacao.TabIndex = 13;
|
||||
this.btnIniciarOperacao.Text = "Iniciar Operação";
|
||||
this.btnIniciarOperacao.UseVisualStyleBackColor = true;
|
||||
|
|
@ -588,9 +654,10 @@ namespace AgroBase
|
|||
// lblModoOperacao
|
||||
//
|
||||
this.lblModoOperacao.AutoSize = true;
|
||||
this.lblModoOperacao.Location = new System.Drawing.Point(6, 27);
|
||||
this.lblModoOperacao.Location = new System.Drawing.Point(4, 22);
|
||||
this.lblModoOperacao.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblModoOperacao.Name = "lblModoOperacao";
|
||||
this.lblModoOperacao.Size = new System.Drawing.Size(43, 17);
|
||||
this.lblModoOperacao.Size = new System.Drawing.Size(34, 13);
|
||||
this.lblModoOperacao.TabIndex = 13;
|
||||
this.lblModoOperacao.Text = "Modo";
|
||||
//
|
||||
|
|
@ -598,29 +665,29 @@ namespace AgroBase
|
|||
//
|
||||
this.cmbModoOperacao.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cmbModoOperacao.FormattingEnabled = true;
|
||||
this.cmbModoOperacao.Location = new System.Drawing.Point(9, 47);
|
||||
this.cmbModoOperacao.Location = new System.Drawing.Point(7, 38);
|
||||
this.cmbModoOperacao.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.cmbModoOperacao.Name = "cmbModoOperacao";
|
||||
this.cmbModoOperacao.Size = new System.Drawing.Size(145, 24);
|
||||
this.cmbModoOperacao.Size = new System.Drawing.Size(110, 21);
|
||||
this.cmbModoOperacao.TabIndex = 13;
|
||||
this.cmbModoOperacao.SelectedIndexChanged += new System.EventHandler(this.cmbModoOperacao_SelectedIndexChanged);
|
||||
//
|
||||
// lblStripOperacao
|
||||
// btnGPS
|
||||
//
|
||||
this.lblStripOperacao.Name = "lblStripOperacao";
|
||||
this.lblStripOperacao.Size = new System.Drawing.Size(130, 20);
|
||||
this.lblStripOperacao.Text = "Operação: Manual";
|
||||
//
|
||||
// lblStripOperacaoStatus
|
||||
//
|
||||
this.lblStripOperacaoStatus.Name = "lblStripOperacaoStatus";
|
||||
this.lblStripOperacaoStatus.Size = new System.Drawing.Size(94, 20);
|
||||
this.lblStripOperacaoStatus.Text = "Não iniciado";
|
||||
this.btnGPS.Location = new System.Drawing.Point(4, 142);
|
||||
this.btnGPS.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.btnGPS.Name = "btnGPS";
|
||||
this.btnGPS.Size = new System.Drawing.Size(84, 20);
|
||||
this.btnGPS.TabIndex = 19;
|
||||
this.btnGPS.Text = "GPS";
|
||||
this.btnGPS.UseVisualStyleBackColor = true;
|
||||
this.btnGPS.Click += new System.EventHandler(this.btnGPS_Click);
|
||||
//
|
||||
// frmPrincipal
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(1411, 763);
|
||||
this.ClientSize = new System.Drawing.Size(1058, 609);
|
||||
this.Controls.Add(this.gpbOperacao);
|
||||
this.Controls.Add(this.gpbAtalhos);
|
||||
this.Controls.Add(this.groupBox2);
|
||||
|
|
@ -629,6 +696,7 @@ namespace AgroBase
|
|||
this.Controls.Add(this.gpbSensoriamento);
|
||||
this.Controls.Add(this.generalStrip);
|
||||
this.Controls.Add(this.gpbAcoes);
|
||||
this.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.Name = "frmPrincipal";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "Agro Base";
|
||||
|
|
@ -719,6 +787,7 @@ namespace AgroBase
|
|||
public System.Windows.Forms.TrackBar trkKmh;
|
||||
private System.Windows.Forms.ToolStripStatusLabel lblStripOperacao;
|
||||
private System.Windows.Forms.ToolStripStatusLabel lblStripOperacaoStatus;
|
||||
private System.Windows.Forms.Button btnGPS;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -221,6 +221,12 @@ namespace AgroBase
|
|||
frmMapa.Show();
|
||||
}
|
||||
|
||||
private void btnGPS_Click(object sender, EventArgs e)
|
||||
{
|
||||
frmGPS frmGps = new frmGPS();
|
||||
frmGps.Show();
|
||||
}
|
||||
|
||||
private void btnSenCamera_Click(object sender, EventArgs e)
|
||||
{
|
||||
frmSenCamera frmCamera = new frmSenCamera();
|
||||
|
|
|
|||
|
|
@ -120,6 +120,9 @@
|
|||
<metadata name="erroStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>11, 10</value>
|
||||
</metadata>
|
||||
<metadata name="erroStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>11, 10</value>
|
||||
</metadata>
|
||||
<metadata name="generalStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>133, 16</value>
|
||||
</metadata>
|
||||
|
|
|
|||
|
|
@ -51,6 +51,7 @@ namespace AgroBase.Models
|
|||
Dir = 101,
|
||||
Sen = 102,
|
||||
Atu = 103,
|
||||
Gps = 104,
|
||||
}
|
||||
|
||||
public enum F_Code
|
||||
|
|
@ -64,14 +65,14 @@ namespace AgroBase.Models
|
|||
|
||||
public enum S_Code
|
||||
{
|
||||
sRPM,
|
||||
sTST,
|
||||
sCFG,
|
||||
sTMP,
|
||||
sENC,
|
||||
sCOR,
|
||||
sTEN,
|
||||
sFLX,
|
||||
sRPM = 133,
|
||||
sTST = 154,
|
||||
sCFG = 211,
|
||||
sTMP = 411,
|
||||
sENC = 111,
|
||||
sCOR = 322,
|
||||
sTEN = 112,
|
||||
sFLX = 198,
|
||||
}
|
||||
|
||||
public enum BotoesJoystick
|
||||
|
|
|
|||
|
|
@ -0,0 +1,19 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AgroBase.Models
|
||||
{
|
||||
public class GPSModel
|
||||
{
|
||||
public double Latitude { get; set; }
|
||||
public double Longitude { get; set; }
|
||||
public DateTime DataHora { get; set; }
|
||||
public double Altitude { get; set; }
|
||||
public double Velocidade { get; set; }
|
||||
public int NumeroSatelites { get; set; }
|
||||
public double PrecisaoHorizontal { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -141,7 +141,7 @@ namespace AgroBase.Models.Modules
|
|||
{
|
||||
if (!File.Exists(nomeArquivo))
|
||||
{
|
||||
var newPinout = PinoutModel.CarregarPinoutPadrao();
|
||||
var newPinout = PinoutModel.CarregarPinoutPadrao_S3();
|
||||
File.WriteAllText(nomeArquivo, JsonConvert.SerializeObject(newPinout));
|
||||
}
|
||||
var pinoutText = File.ReadAllText(nomeArquivo);
|
||||
|
|
|
|||
|
|
@ -279,7 +279,7 @@ namespace AgroBase.Models.Modules
|
|||
{
|
||||
if (!File.Exists(nomeArquivo))
|
||||
{
|
||||
var newPinout = PinoutModel.CarregarPinoutPadrao();
|
||||
var newPinout = PinoutModel.CarregarPinoutPadrao_S3();
|
||||
File.WriteAllText(nomeArquivo, JsonConvert.SerializeObject(newPinout));
|
||||
}
|
||||
var pinoutText = File.ReadAllText(nomeArquivo);
|
||||
|
|
|
|||
|
|
@ -221,12 +221,12 @@ namespace AgroBase.Models
|
|||
double t = 0;
|
||||
double.TryParse(Dados[2].Replace(".", ","), out t);
|
||||
Motor.Temperatura = t;
|
||||
double u = 0;
|
||||
/*double u = 0;
|
||||
double.TryParse(Dados[3].Replace(".", ","), out u);
|
||||
Motor.Umidade = u;
|
||||
long i = 0;
|
||||
long.TryParse(Dados[4].Replace(".", ","), out i);
|
||||
Motor.IndiceCalor = i;
|
||||
Motor.IndiceCalor = i;*/
|
||||
AtualizaGrafico = true;
|
||||
break;
|
||||
}
|
||||
|
|
@ -308,7 +308,7 @@ namespace AgroBase.Models
|
|||
frmInstancial.frmPrincipal.gridSenMotores.Columns.Add("clRPM", "RPM");
|
||||
frmInstancial.frmPrincipal.gridSenMotores.Columns.Add("clVelocidade", "Velocidade");
|
||||
frmInstancial.frmPrincipal.gridSenMotores.Columns.Add("clTemperatura", "Temperatura");
|
||||
frmInstancial.frmPrincipal.gridSenMotores.Columns.Add("clUmidade", "Umidade");
|
||||
//frmInstancial.frmPrincipal.gridSenMotores.Columns.Add("clUmidade", "Umidade");
|
||||
foreach (var Motor in Motores)
|
||||
{
|
||||
frmInstancial.frmPrincipal.gridSenMotores.Rows.Add(new string[]
|
||||
|
|
@ -318,11 +318,11 @@ namespace AgroBase.Models
|
|||
Enum.GetName(typeof(Sentido), Motor.Sentido_SP),
|
||||
Enum.GetName(typeof(Sentido), Motor.Sentido),
|
||||
Enum.GetName(typeof(StatusMotor), Motor.Aceleracao),
|
||||
Motor.Potencia_SP.ToString(),
|
||||
Motor.Potencia.ToString(),
|
||||
Motor.RPM.ToString(),
|
||||
Motor.VelocidadeInstantanea.ToString(),
|
||||
Motor.Temperatura.ToString(),
|
||||
Motor.Umidade.ToString(),
|
||||
//Motor.Umidade.ToString(),
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -336,11 +336,11 @@ namespace AgroBase.Models
|
|||
frmInstancial.frmPrincipal.gridSenMotores.Rows[Motor.Canal].Cells[2].Value = Enum.GetName(typeof(Sentido), Motor.Sentido_SP);
|
||||
frmInstancial.frmPrincipal.gridSenMotores.Rows[Motor.Canal].Cells[3].Value = Enum.GetName(typeof(Sentido), Motor.Sentido);
|
||||
frmInstancial.frmPrincipal.gridSenMotores.Rows[Motor.Canal].Cells[4].Value = Enum.GetName(typeof(StatusMotor), Motor.Aceleracao);
|
||||
frmInstancial.frmPrincipal.gridSenMotores.Rows[Motor.Canal].Cells[5].Value = Motor.Potencia_SP.ToString();
|
||||
frmInstancial.frmPrincipal.gridSenMotores.Rows[Motor.Canal].Cells[5].Value = Motor.Potencia.ToString();
|
||||
frmInstancial.frmPrincipal.gridSenMotores.Rows[Motor.Canal].Cells[6].Value = Motor.RPM.ToString();
|
||||
frmInstancial.frmPrincipal.gridSenMotores.Rows[Motor.Canal].Cells[7].Value = Motor.VelocidadeInstantanea.ToString();
|
||||
frmInstancial.frmPrincipal.gridSenMotores.Rows[Motor.Canal].Cells[8].Value = Motor.Temperatura.ToString();
|
||||
frmInstancial.frmPrincipal.gridSenMotores.Rows[Motor.Canal].Cells[9].Value = Motor.Umidade.ToString();
|
||||
//frmInstancial.frmPrincipal.gridSenMotores.Rows[Motor.Canal].Cells[9].Value = Motor.Umidade.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -348,7 +348,7 @@ namespace AgroBase.Models
|
|||
{
|
||||
if (!File.Exists(nomeArquivo))
|
||||
{
|
||||
var newPinout = PinoutModel.CarregarPinoutPadrao();
|
||||
var newPinout = PinoutModel.CarregarPinoutPadrao_S3();
|
||||
File.WriteAllText(nomeArquivo, JsonConvert.SerializeObject(newPinout));
|
||||
}
|
||||
var pinoutText = File.ReadAllText(nomeArquivo);
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ namespace AgroBase.Models.Modules
|
|||
public bool Habilitado { get; set; }
|
||||
public string ComponenteID { get; set; }
|
||||
|
||||
public static List<PinoutModel> CarregarPinoutPadrao()
|
||||
public static List<PinoutModel> CarregarPinoutPadrao_S3()
|
||||
{
|
||||
List<PinoutModel> Pinout = new List<PinoutModel>()
|
||||
{
|
||||
|
|
@ -66,6 +66,54 @@ namespace AgroBase.Models.Modules
|
|||
|
||||
return Pinout;
|
||||
}
|
||||
|
||||
public static List<PinoutModel> CarregarPinoutPadrao_Wrover()
|
||||
{
|
||||
List<PinoutModel> Pinout = new List<PinoutModel>()
|
||||
{
|
||||
new PinoutModel() { Pino = 99, ComponenteID = "", Descricao = "3V3", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
|
||||
new PinoutModel() { Pino = 98, ComponenteID = "", Descricao = "EN", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
|
||||
new PinoutModel() { Pino = 36, ComponenteID = "", Descricao = "GPIO36", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
|
||||
new PinoutModel() { Pino = 39, ComponenteID = "", Descricao = "GPIO39", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
|
||||
new PinoutModel() { Pino = 34, ComponenteID = "", Descricao = "GPIO5", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
|
||||
new PinoutModel() { Pino = 35, ComponenteID = "", Descricao = "GPIO6", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
|
||||
new PinoutModel() { Pino = 32, ComponenteID = "", Descricao = "GPIO7", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
|
||||
new PinoutModel() { Pino = 33, ComponenteID = "", Descricao = "GPIO15", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
|
||||
new PinoutModel() { Pino = 25, ComponenteID = "", Descricao = "GPIO16", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
|
||||
new PinoutModel() { Pino = 26, ComponenteID = "", Descricao = "GPIO17", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
|
||||
new PinoutModel() { Pino = 27, ComponenteID = "", Descricao = "GPIO18", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
|
||||
new PinoutModel() { Pino = 14, ComponenteID = "", Descricao = "GPIO8", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
|
||||
new PinoutModel() { Pino = 12, ComponenteID = "", Descricao = "GPIO3", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
|
||||
new PinoutModel() { Pino = 97, ComponenteID = "", Descricao = "GND_1", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
|
||||
new PinoutModel() { Pino = 13, ComponenteID = "", Descricao = "GPIO13", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
|
||||
new PinoutModel() { Pino = 9, ComponenteID = "", Descricao = "GPIO9", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
|
||||
new PinoutModel() { Pino = 10, ComponenteID = "", Descricao = "GPIO10", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
|
||||
new PinoutModel() { Pino = 11, ComponenteID = "", Descricao = "GPIO11", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
|
||||
new PinoutModel() { Pino = 96, ComponenteID = "", Descricao = "5V", Funcao = FuncoesPinout.Desabilitado, Habilitado = false},
|
||||
new PinoutModel() { Pino = 6, ComponenteID = "", Descricao = "GPIO6", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
|
||||
new PinoutModel() { Pino = 7, ComponenteID = "", Descricao = "GPIO7", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
|
||||
new PinoutModel() { Pino = 8, ComponenteID = "", Descricao = "GPIO8", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
|
||||
new PinoutModel() { Pino = 15, ComponenteID = "", Descricao = "GPIO15", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
|
||||
new PinoutModel() { Pino = 2, ComponenteID = "", Descricao = "GPIO2", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
|
||||
new PinoutModel() { Pino = 0, ComponenteID = "", Descricao = "GPIO0", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
|
||||
new PinoutModel() { Pino = 4, ComponenteID = "", Descricao = "GPIO4", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
|
||||
new PinoutModel() { Pino = 16, ComponenteID = "", Descricao = "GPIO16", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
|
||||
new PinoutModel() { Pino = 17, ComponenteID = "", Descricao = "GPIO17", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
|
||||
new PinoutModel() { Pino = 5, ComponenteID = "", Descricao = "GPIO5", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
|
||||
new PinoutModel() { Pino = 18, ComponenteID = "", Descricao = "GPIO18", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
|
||||
new PinoutModel() { Pino = 19, ComponenteID = "", Descricao = "GPIO19", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
|
||||
new PinoutModel() { Pino = 95, ComponenteID = "", Descricao = "GND_2", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
|
||||
new PinoutModel() { Pino = 21, ComponenteID = "", Descricao = "GPIO21", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
|
||||
new PinoutModel() { Pino = 3, ComponenteID = "", Descricao = "GPIO3", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
|
||||
new PinoutModel() { Pino = 1, ComponenteID = "", Descricao = "GPIO1", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
|
||||
new PinoutModel() { Pino = 22, ComponenteID = "", Descricao = "GPIO22", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
|
||||
new PinoutModel() { Pino = 23, ComponenteID = "", Descricao = "GPIO23", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
|
||||
new PinoutModel() { Pino = 94, ComponenteID = "", Descricao = "GND_3", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
|
||||
};
|
||||
|
||||
return Pinout;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public enum FuncoesPinout
|
||||
|
|
|
|||
|
|
@ -29,7 +29,67 @@ namespace AgroBase.Models.Modules
|
|||
{
|
||||
new SensorModel()
|
||||
{
|
||||
ID = "VBAT",
|
||||
ID = "TMVET",
|
||||
Descricao = "Temperatura Motor Esquerdo Trás",
|
||||
Prioridade = 0,
|
||||
Componente = S_Code.sTMP,
|
||||
Aferir = true,
|
||||
Inicializado = false,
|
||||
Testando = false,
|
||||
Funcoes = new List<FuncoesPinout>()
|
||||
{
|
||||
FuncoesPinout.TMP,
|
||||
},
|
||||
DelayAmostragem = 200,
|
||||
},
|
||||
new SensorModel()
|
||||
{
|
||||
ID = "TMVEF",
|
||||
Descricao = "Temperatura Motor Esquerdo Frente",
|
||||
Prioridade = 0,
|
||||
Componente = S_Code.sTMP,
|
||||
Aferir = true,
|
||||
Inicializado = false,
|
||||
Testando = false,
|
||||
Funcoes = new List<FuncoesPinout>()
|
||||
{
|
||||
FuncoesPinout.TMP,
|
||||
},
|
||||
DelayAmostragem = 200,
|
||||
},
|
||||
new SensorModel()
|
||||
{
|
||||
ID = "TMVDT",
|
||||
Descricao = "Temperatura Motor Direito Trás",
|
||||
Prioridade = 0,
|
||||
Componente = S_Code.sTMP,
|
||||
Aferir = true,
|
||||
Inicializado = false,
|
||||
Testando = false,
|
||||
Funcoes = new List<FuncoesPinout>()
|
||||
{
|
||||
FuncoesPinout.TMP,
|
||||
},
|
||||
DelayAmostragem = 200,
|
||||
},
|
||||
new SensorModel()
|
||||
{
|
||||
ID = "TMVDF",
|
||||
Descricao = "Temperatura Motor Direito Frente",
|
||||
Prioridade = 0,
|
||||
Componente = S_Code.sTMP,
|
||||
Aferir = true,
|
||||
Inicializado = false,
|
||||
Testando = false,
|
||||
Funcoes = new List<FuncoesPinout>()
|
||||
{
|
||||
FuncoesPinout.TMP,
|
||||
},
|
||||
DelayAmostragem = 200,
|
||||
},
|
||||
new SensorModel()
|
||||
{
|
||||
ID = "VBAT ",
|
||||
Descricao = "Tensão da bateria",
|
||||
Prioridade = 20,
|
||||
Componente = S_Code.sTEN,
|
||||
|
|
@ -44,7 +104,7 @@ namespace AgroBase.Models.Modules
|
|||
},
|
||||
new SensorModel()
|
||||
{
|
||||
ID = "ABAT",
|
||||
ID = "ABAT ",
|
||||
Prioridade = 10,
|
||||
Descricao = "Corrente da bateria",
|
||||
Componente = S_Code.sCOR,
|
||||
|
|
@ -65,9 +125,9 @@ namespace AgroBase.Models.Modules
|
|||
{
|
||||
List<string> Config = Sensores.Select(x => x.ProtocoloConfiguracaoSensor(Conectar)).ToList();
|
||||
string ProtocoloMOD = ((int)F_Code.Cfg).ToString() +
|
||||
"MD" + ";" + // 0 ~ 1
|
||||
(Conectar ? "1" : "0") + ";" + // 3
|
||||
_TaxaAmostragem.ToString("00000"); // 5 ~ 9
|
||||
"MD " + ";" + // 0 ~ 4
|
||||
(Conectar ? "1" : "0") + ";" + // 6
|
||||
_TaxaAmostragem.ToString("00000"); // 8 ~ 12
|
||||
Config.Add(ProtocoloMOD);
|
||||
return Config;
|
||||
}
|
||||
|
|
@ -78,7 +138,14 @@ namespace AgroBase.Models.Modules
|
|||
if (!string.IsNullOrEmpty(Protocolo) && Protocolo[0].ToString() == SerialService.BeginSensor)
|
||||
{
|
||||
string[] Dados = Protocolo.Replace(SerialService.BeginSensor, "").Split(SerialService.EndLine[0])[0].Split(';');
|
||||
S_Code TipoSensor = (S_Code)(int.Parse(Dados[0]));
|
||||
int cod = 0;
|
||||
int.TryParse(Dados[0], out cod);
|
||||
if (cod == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
S_Code TipoSensor = (S_Code)(cod);
|
||||
SensorModel Sensor = Sensores.FirstOrDefault(x => x.ID == Dados[1]);
|
||||
if (Sensor == null)
|
||||
{
|
||||
|
|
@ -122,6 +189,22 @@ namespace AgroBase.Models.Modules
|
|||
Sensor.Inicializado = Dados[2] == "1";
|
||||
break;
|
||||
}
|
||||
case S_Code.sTMP: {
|
||||
double temp = -1;
|
||||
double.TryParse(Dados[2], out temp);
|
||||
Sensor.Leituras = new List<double>() { temp };
|
||||
if (temp > Sensor.ValorMaximo)
|
||||
{
|
||||
Sensor.ValorMaximo = temp;
|
||||
}
|
||||
else if (temp < Sensor.ValorMinimo)
|
||||
{
|
||||
Sensor.ValorMinimo = temp;
|
||||
}
|
||||
|
||||
AtualizaGrafico = true;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -192,7 +275,7 @@ namespace AgroBase.Models.Modules
|
|||
{
|
||||
if (!File.Exists(nomeArquivo))
|
||||
{
|
||||
var newPinout = PinoutModel.CarregarPinoutPadrao();
|
||||
var newPinout = PinoutModel.CarregarPinoutPadrao_S3();
|
||||
File.WriteAllText(nomeArquivo, JsonConvert.SerializeObject(newPinout));
|
||||
}
|
||||
var pinoutText = File.ReadAllText(nomeArquivo);
|
||||
|
|
@ -232,18 +315,15 @@ namespace AgroBase.Models.Modules
|
|||
public string ProtocoloConfiguracaoSensor(bool Conectar)
|
||||
{
|
||||
var _pinout = SensoriamentoModel.Pinout.Where(x => x.ComponenteID == ID).ToList();
|
||||
return ((int)F_Code.Cfg).ToString() +
|
||||
ID + ";" + // 0 ~ 1
|
||||
(Conectar ? "1" : "0") + ";" + // 3
|
||||
((int)Componente).ToString() + ";" + // 5
|
||||
Prioridade.ToString("00") + ";" + // 7 ~ 8
|
||||
DelayAmostragem.ToString("00000") + ";" + // 10 ~ 14
|
||||
(Aferir ? "1" : "0") + ";" + // 16
|
||||
(_pinout.Any(x => x.Funcao == FuncoesPinout.I2C) ? "1" : "0") + ";" + // 18
|
||||
(_pinout.Any(x => x.Funcao == FuncoesPinout.Leitura1) ? _pinout.FirstOrDefault(x => x.Funcao == FuncoesPinout.Leitura1).Pino.ToString("00") : "-1") + "," + // 20 ~ 21
|
||||
(_pinout.Any(x => x.Funcao == FuncoesPinout.Leitura2) ? _pinout.FirstOrDefault(x => x.Funcao == FuncoesPinout.Leitura2).Pino.ToString("00") : "-1") + "," + // 23 ~ 24
|
||||
(_pinout.Any(x => x.Funcao == FuncoesPinout.Leitura3) ? _pinout.FirstOrDefault(x => x.Funcao == FuncoesPinout.Leitura3).Pino.ToString("00") : "-1") + "," + // 26 ~ 27
|
||||
(_pinout.Any(x => x.Funcao == FuncoesPinout.Leitura4) ? _pinout.FirstOrDefault(x => x.Funcao == FuncoesPinout.Leitura4).Pino.ToString("00") : "-1"); // 29 ~ 30
|
||||
string Protocolo = ((int)F_Code.Cfg).ToString() +
|
||||
ID + ";" + // 0 ~ 4
|
||||
(Conectar ? "1" : "0") + ";" + // 6
|
||||
((int)Componente).ToString() + ";" + // 8 ~ 10
|
||||
(Aferir ? "1" : "0") + ";" + // 12
|
||||
DelayAmostragem.ToString("00000") + ";" + // 14 ~ 18
|
||||
Prioridade.ToString("00") + ";" + // 20 ~ 21
|
||||
(_pinout.Any(x => x.Funcao != FuncoesPinout.NaoConectado) ? _pinout.FirstOrDefault(x => x.Funcao != FuncoesPinout.NaoConectado).Pino.ToString("00") : "-1"); // 23 ~ 24
|
||||
return Protocolo;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -34,4 +34,14 @@ namespace AgroBase.Models
|
|||
return formattedDate;
|
||||
}
|
||||
}
|
||||
|
||||
public static class VariaveisPortas
|
||||
{
|
||||
public static string GPS { get; } = "6512";
|
||||
public static string CameraSolo { get; } = "6513";
|
||||
public static string CameraCaminho { get; } = "6514";
|
||||
public static string SocketSolo { get; } = "6515";
|
||||
public static string SocketCaminho { get; } = "6516";
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,69 +0,0 @@
|
|||
import cv2
|
||||
import mediapipe as mp
|
||||
import json
|
||||
import time
|
||||
from flask import Flask, Response
|
||||
import sys
|
||||
|
||||
max_readings = 10
|
||||
cameraIndex = sys.argv[1]
|
||||
porta = sys.argv[2]
|
||||
url = sys.argv[3]
|
||||
arquivoSaida = sys.argv[4]
|
||||
|
||||
app = Flask(__name__)
|
||||
cap = cv2.VideoCapture(cameraIndex)
|
||||
|
||||
mp_face_detection = mp.solutions.face_detection
|
||||
face_detection = mp_face_detection.FaceDetection(min_detection_confidence=0.5)
|
||||
|
||||
readings = []
|
||||
|
||||
def generate_frames():
|
||||
while True:
|
||||
ret, frame = cap.read()
|
||||
frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
|
||||
results = face_detection.process(frame_rgb)
|
||||
current_readings = []
|
||||
|
||||
if results.detections:
|
||||
for idx, detection in enumerate(results.detections):
|
||||
bboxC = detection.location_data.relative_bounding_box
|
||||
ih, iw, _ = frame.shape
|
||||
x, y, w, h = int(bboxC.xmin * iw), int(bboxC.ymin * ih), int(bboxC.width * iw), int(bboxC.height * ih)
|
||||
current_readings.append({'id': idx, 'x': x, 'y': y, 'largura': w, 'altura': h})
|
||||
|
||||
cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)
|
||||
cv2.putText(frame, f'Rosto {idx}', (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (255, 0, 0), 2)
|
||||
|
||||
timestamp = time.time()
|
||||
readings.append({'timestamp': timestamp, 'rostos': current_readings})
|
||||
|
||||
if len(readings) > max_readings:
|
||||
readings.pop(0)
|
||||
|
||||
if len(readings) == max_readings:
|
||||
try:
|
||||
with open('Python/Output/' + arquivoSaida, 'w') as file:
|
||||
json.dump({'frames': readings}, file)
|
||||
except Exception as e:
|
||||
print(f"Erro ao escrever no arquivo: {e}")
|
||||
|
||||
ret, buffer = cv2.imencode('.jpg', frame)
|
||||
frame = buffer.tobytes()
|
||||
yield (b'--frame\r\n'
|
||||
b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n')
|
||||
|
||||
|
||||
@app.route('/' + url)
|
||||
def video_feed():
|
||||
return Response(generate_frames(), mimetype='multipart/x-mixed-replace; boundary=frame')
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Acessando os argumentos passados na linha de comando
|
||||
if len(sys.argv) != 4:
|
||||
print("Usage: python script.py <porta> <URL> <arquivoSaida>")
|
||||
sys.exit(1)
|
||||
|
||||
app.run(host='0.0.0.0', port=int(porta))
|
||||
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
from flask import Flask, jsonify, request
|
||||
import folium
|
||||
import sys
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
# Armazena a última localização conhecida
|
||||
last_known_location = (-22.1839247, -47.3824123)
|
||||
|
||||
# Rota para renderizar o mapa inicial
|
||||
@app.route('/')
|
||||
def index():
|
||||
global last_known_location
|
||||
folium_map = folium.Map(location=last_known_location, zoom_start=20)
|
||||
folium.Marker(last_known_location, tooltip='Ponto GPS').add_to(folium_map)
|
||||
return folium_map._repr_html_()
|
||||
|
||||
# Rota para atualizar as coordenadas do marcador
|
||||
@app.route('/update_marker', methods=['POST'])
|
||||
def update_marker():
|
||||
global last_known_location
|
||||
data = request.json
|
||||
last_known_location = (data['lat'], data['lon'])
|
||||
return jsonify({'message': 'Coordenadas atualizadas com sucesso!'}), 200
|
||||
|
||||
if __name__ == '__main__':
|
||||
port = 5000 # Porta padrão
|
||||
if len(sys.argv) > 1:
|
||||
try:
|
||||
port = int(sys.argv[1])
|
||||
except ValueError:
|
||||
print("Por favor forneça um número de porta válido.")
|
||||
sys.exit(1)
|
||||
app.run(debug=True, port=port)
|
||||
|
|
@ -1,151 +0,0 @@
|
|||
import cv2
|
||||
import numpy as np
|
||||
from flask import Flask, Response, request
|
||||
import json
|
||||
import time
|
||||
import sys
|
||||
import os
|
||||
|
||||
|
||||
max_readings = int(sys.argv[1])
|
||||
porta = sys.argv[2]
|
||||
url = sys.argv[3]
|
||||
arquivoSaida = sys.argv[4]
|
||||
|
||||
app = Flask(__name__)
|
||||
# Função para detecção de objetos usando YOLO e salvar as coordenadas em um arquivo JSON
|
||||
def detect_objects(conf_threshold, nms_threshold, _camera_index):
|
||||
# Carregar o modelo YOLO e os arquivos de configuração
|
||||
model_config = 'Python/Models/yolo/yolov3.cfg'
|
||||
model_weights = 'Python/Models/yolo/crop_weed_detection.weights'
|
||||
|
||||
# Carregar as classes que o modelo pode detectar
|
||||
with open('Python/Models/yolo/coco.names', 'rt') as f:
|
||||
classes = f.read().rstrip('\n').split('\n')
|
||||
print(classes)
|
||||
|
||||
net = cv2.dnn.readNetFromDarknet(model_config, model_weights)
|
||||
net.setPreferableBackend(cv2.dnn.DNN_BACKEND_OPENCV)
|
||||
net.setPreferableTarget(cv2.dnn.DNN_TARGET_CPU)
|
||||
|
||||
cap = cv2.VideoCapture(_camera_index, cv2.CAP_DSHOW)
|
||||
readings = []
|
||||
|
||||
while True:
|
||||
ret, frame = cap.read()
|
||||
if not ret:
|
||||
break
|
||||
|
||||
# Detecção de Objetos usando YOLO
|
||||
blob = cv2.dnn.blobFromImage(frame, 0.00392, (416, 416), (0, 0, 0), True, crop=False)
|
||||
net.setInput(blob)
|
||||
outs = net.forward(net.getUnconnectedOutLayersNames())
|
||||
|
||||
# Obter as camadas de saída do modelo YOLO
|
||||
output_layers_names = net.getUnconnectedOutLayersNames()
|
||||
|
||||
# Verificar se há saída válida
|
||||
if not output_layers_names:
|
||||
print("Nenhuma camada de saída encontrada. Verifique se o modelo foi carregado corretamente.")
|
||||
break
|
||||
|
||||
# Fazer a detecção de objetos no frame
|
||||
blob = cv2.dnn.blobFromImage(frame, 0.00392, (416, 416), (0, 0, 0), True, crop=False)
|
||||
net.setInput(blob)
|
||||
outs = net.forward(output_layers_names)
|
||||
|
||||
# Mostrar as detecções no frame
|
||||
class_ids = []
|
||||
confidences = []
|
||||
boxes = []
|
||||
|
||||
for out in outs:
|
||||
for detection in out:
|
||||
scores = detection[5:]
|
||||
class_id = np.argmax(scores)
|
||||
confidence = scores[class_id]
|
||||
|
||||
if confidence > conf_threshold:
|
||||
# Obter informações do objeto detectado
|
||||
center_x = int(detection[0] * frame.shape[1])
|
||||
center_y = int(detection[1] * frame.shape[0])
|
||||
w = int(detection[2] * frame.shape[1])
|
||||
h = int(detection[3] * frame.shape[0])
|
||||
|
||||
# Coordenadas do retângulo
|
||||
x = int(center_x - w / 2)
|
||||
y = int(center_y - h / 2)
|
||||
|
||||
boxes.append([x, y, w, h])
|
||||
confidences.append(float(confidence))
|
||||
class_ids.append(class_id)
|
||||
|
||||
# Aplicar Non-Max Suppression
|
||||
indices = cv2.dnn.NMSBoxes(boxes, confidences, conf_threshold, nms_threshold)
|
||||
|
||||
# Mostrar as detecções no frame após o NMS
|
||||
current_readings = []
|
||||
for i in indices:
|
||||
box = boxes[i]
|
||||
x, y, w, h = box[0], box[1], box[2], box[3]
|
||||
class_id = class_ids[i]
|
||||
class_name = classes[class_id]
|
||||
confidence = confidences[i]
|
||||
cv2.rectangle(frame, (x, y), (x + w, y + h), (255, 0, 0), 2)
|
||||
cv2.putText(frame, class_name, (x, y - 5), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 2)
|
||||
|
||||
|
||||
|
||||
# Salvar as detecções em um formato desejado
|
||||
detection_info = {
|
||||
'id': int(i),
|
||||
'descricao': class_name,
|
||||
'x': int(x),
|
||||
'y': int(y),
|
||||
'largura': int(w),
|
||||
'altura': int(h),
|
||||
'confianca': float(confidence)
|
||||
}
|
||||
#print(detection_info)
|
||||
current_readings.append(detection_info)
|
||||
|
||||
timestamp = time.time()
|
||||
readings.append({'timestamp': timestamp, 'objetos': current_readings})
|
||||
|
||||
# Salvar as detecções em um arquivo JSON
|
||||
if len(readings) > max_readings:
|
||||
readings.pop(0)
|
||||
|
||||
output_folder = 'Python/Output/'
|
||||
|
||||
if not os.path.exists(output_folder):
|
||||
os.makedirs(output_folder)
|
||||
|
||||
if len(readings) == max_readings:
|
||||
try:
|
||||
with open(output_folder + arquivoSaida, 'w') as file:
|
||||
json.dump({'frames': readings}, file)
|
||||
except Exception as e:
|
||||
print(f"Erro ao escrever no arquivo: {e}")
|
||||
|
||||
cv2.imshow('Deteccao de Objetos YOLO', frame)
|
||||
if cv2.waitKey(1) & 0xFF == ord('q'):
|
||||
break
|
||||
|
||||
|
||||
|
||||
# Convertendo frame para JPEG e enviando via Flask
|
||||
ret, buffer = cv2.imencode('.jpg', frame)
|
||||
frame = buffer.tobytes()
|
||||
yield (b'--frame\r\n'
|
||||
b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n')
|
||||
|
||||
@app.route('/' + url, methods=['GET'])
|
||||
def video_feed():
|
||||
conf_threshold = float(request.args.get('conf_threshold'))
|
||||
nms_threshold = float(request.args.get('nms_threshold'))
|
||||
camera_index = int(request.args.get('camera_index'))
|
||||
return Response(detect_objects(conf_threshold, nms_threshold, camera_index), mimetype='multipart/x-mixed-replace; boundary=frame')
|
||||
|
||||
if __name__ == "__main__":
|
||||
app.run(host='0.0.0.0', port=porta)
|
||||
|
|
@ -0,0 +1,163 @@
|
|||
using AgroBase.Models;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.IO.Ports;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using static AgroBase.Models.Enuns;
|
||||
using static AgroBase.Services.SerialService;
|
||||
|
||||
namespace AgroBase.Services
|
||||
{
|
||||
public class GPSService
|
||||
{
|
||||
public static bool Iniciado = false;
|
||||
public static SerialPort PortaGPS = null;
|
||||
public static GPSModel UltimaLeitura = new GPSModel();
|
||||
|
||||
public static void AtualizarPortaGPS(SerialPort _porta)
|
||||
{
|
||||
PortaGPS = new SerialPort()
|
||||
{
|
||||
PortName = _porta.PortName,
|
||||
BaudRate = _porta.BaudRate,
|
||||
};
|
||||
PortaGPS.DataReceived -= PortaGPS_DataReceived;
|
||||
PortaGPS.DataReceived += PortaGPS_DataReceived;
|
||||
}
|
||||
|
||||
public static void IniciarRecepcaoDados()
|
||||
{
|
||||
if (PortaGPS != null)
|
||||
{
|
||||
PortaGPS.Open();
|
||||
|
||||
if (PortaGPS.IsOpen)
|
||||
{
|
||||
Iniciado = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void PararRecepcaoDados()
|
||||
{
|
||||
if (PortaGPS != null && PortaGPS.IsOpen)
|
||||
{
|
||||
PortaGPS.Close();
|
||||
|
||||
if (!PortaGPS.IsOpen)
|
||||
{
|
||||
Iniciado = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void PortaGPS_DataReceived(object sender, SerialDataReceivedEventArgs e)
|
||||
{
|
||||
if (PortaGPS.IsOpen)
|
||||
{
|
||||
string Recebido = PortaGPS.ReadLine();
|
||||
if (Recebido.Length > 2)
|
||||
{
|
||||
ProcessarStringNMEA(Recebido);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static void ProcessarStringNMEA(string nmeaString)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(nmeaString))
|
||||
return;
|
||||
|
||||
string[] parts = nmeaString.Split(',');
|
||||
|
||||
switch (parts[0])
|
||||
{
|
||||
// Global Positioning System Fix Data
|
||||
case "$GPGGA":
|
||||
if (parts[2] != "" && parts[3] != "")
|
||||
{
|
||||
UltimaLeitura.Latitude = ConvertToDecimalDegrees(parts[2], parts[3], 2); // ConvertToDouble(parts[2]);
|
||||
}
|
||||
if (parts[4] != "" && parts[5] != "")
|
||||
{
|
||||
UltimaLeitura.Longitude = ConvertToDecimalDegrees(parts[4], parts[5], 3); // ConvertToDouble(parts[4]);
|
||||
}
|
||||
UltimaLeitura.NumeroSatelites = int.TryParse(parts[7], out int numSat) ? numSat : 0;
|
||||
UltimaLeitura.PrecisaoHorizontal = double.TryParse(parts[8], NumberStyles.Float, CultureInfo.InvariantCulture, out double hdop) ? hdop : 0;
|
||||
UltimaLeitura.Altitude = ConvertToDouble(parts[9]);
|
||||
|
||||
Console.WriteLine(UltimaLeitura.Latitude + "," + UltimaLeitura.Longitude);
|
||||
break;
|
||||
|
||||
// Recommended minimum specific GPS/Transit data
|
||||
case "$GPRMC":
|
||||
UltimaLeitura.DataHora = ParseDateTime(parts[9], parts[1], -3);
|
||||
UltimaLeitura.Velocidade = ConvertKnotsToKmh(ConvertToDouble(parts[7]));
|
||||
break;
|
||||
|
||||
// Você pode adicionar mais cases aqui para outros tipos de sentenças NMEA que você deseja processar
|
||||
}
|
||||
}
|
||||
|
||||
private static double ConvertToDecimalDegrees(string nmeaCoordinate, string direction, int digits)
|
||||
{
|
||||
// Divide a string em graus e minutos
|
||||
int degrees = int.Parse(nmeaCoordinate.Substring(0, digits));
|
||||
double minutes = double.Parse(nmeaCoordinate.Substring(digits), CultureInfo.InvariantCulture);
|
||||
|
||||
// Converte para graus decimais
|
||||
double decimalDegrees = degrees + (minutes / 60);
|
||||
|
||||
// Se a direção for Sul ou Oeste, o valor deve ser negativo
|
||||
if (direction == "S" || direction == "W")
|
||||
{
|
||||
decimalDegrees *= -1;
|
||||
}
|
||||
|
||||
return decimalDegrees;
|
||||
}
|
||||
|
||||
private static double ConvertToDouble(string value)
|
||||
{
|
||||
double.TryParse(value, NumberStyles.Float, CultureInfo.InvariantCulture, out double result);
|
||||
return result;
|
||||
}
|
||||
|
||||
private static DateTime ParseDateTime(string date, string time, int timeZoneOffset)
|
||||
{
|
||||
// DDMMAA, HHMMSS.ss
|
||||
string dateTimeFormat = "ddMMyyHHmmss.ff";
|
||||
|
||||
// Verifica se o formato de data e hora está completo
|
||||
if (date.Length == 6 && (time.Length == 6 || time.Length == 9))
|
||||
{
|
||||
string dateTimeStr = date + time;
|
||||
if (DateTime.TryParseExact(dateTimeStr, dateTimeFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime result))
|
||||
{
|
||||
// Ajusta o DateTime para o fuso horário especificado
|
||||
result = result.AddHours(timeZoneOffset);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
// Se a conversão falhar, retorne DateTime.MinValue ou lance uma exceção, conforme sua necessidade
|
||||
return DateTime.MinValue;
|
||||
}
|
||||
|
||||
private static double ConvertKnotsToKmh(double knots)
|
||||
{
|
||||
return knots * 1.852;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -1,32 +1,45 @@
|
|||
using AgroBase.Models;
|
||||
using CefSharp.DevTools.IO;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace AgroBase.Services
|
||||
{
|
||||
public static class MapasVariaveisModel
|
||||
{
|
||||
public static string NomeArquivoMapaInterativo = "mapa_interativo.html";
|
||||
public static string NomeArquivoMapaInterativoSaida = "GeoJson.json";
|
||||
public static string NomeArquivoMapaGPS = "mapa_gps.html";
|
||||
}
|
||||
|
||||
public class MapasService
|
||||
{
|
||||
OpenFileDialog opfMapa;
|
||||
public Process pythonProcess;
|
||||
private string CaminhoSaida = Variaveis.CaminhoSistema + PythonService.CaminhoGeral + PythonService.CaminhoLeitura;
|
||||
private string NomeArquivoMapa = "mapa_interativo.html";
|
||||
private string NomeArquivoMapa = "";
|
||||
public string NomeArquivos = "";
|
||||
public string CaminhoMapa = "";
|
||||
public string ArquivoSaida = "GeoJson.json";
|
||||
public string ArquivoSaida = "";
|
||||
public string MapaUrl = "";
|
||||
public string CaminhoDadosMapa = "";
|
||||
public MapaFeatureCollectionModel DadosMapa;
|
||||
private string PathUpdateMarker = "update_marker";
|
||||
|
||||
|
||||
public void CarregarMapa()
|
||||
public void CarregarMapa(string nomeArquivoMapa, string nomeArquivoSaida)
|
||||
{
|
||||
NomeArquivoMapa = nomeArquivoMapa;
|
||||
ArquivoSaida = nomeArquivoSaida;
|
||||
|
||||
opfMapa = new OpenFileDialog
|
||||
{
|
||||
DefaultExt = ".shp",
|
||||
|
|
@ -52,6 +65,44 @@ namespace AgroBase.Services
|
|||
DadosMapa = JsonConvert.DeserializeObject<MapaFeatureCollectionModel>(dados);
|
||||
}
|
||||
|
||||
|
||||
public void CarregarMapaGPS(string nomeArquivoMapa)
|
||||
{
|
||||
NomeArquivoMapa = nomeArquivoMapa;
|
||||
|
||||
pythonProcess = PythonService.RunScript(PythonService.ScriptMapGPS, new string[] { VariaveisPortas.GPS, PathUpdateMarker });
|
||||
|
||||
MapaUrl = new Uri("http://localhost:" + VariaveisPortas.GPS + "/").AbsoluteUri;
|
||||
}
|
||||
|
||||
public async void AtualizarPosicaoMapaGPS(double lat, double lon)
|
||||
{
|
||||
HttpClient _client = new HttpClient();
|
||||
|
||||
var payload = new
|
||||
{
|
||||
lat = lat,
|
||||
lon = lon
|
||||
};
|
||||
|
||||
var content = new StringContent(JsonConvert.SerializeObject(payload), Encoding.UTF8, "application/json");
|
||||
|
||||
try
|
||||
{
|
||||
var response = await _client.PostAsync(MapaUrl + PathUpdateMarker, content);
|
||||
if (response.IsSuccessStatusCode)
|
||||
{
|
||||
Console.WriteLine("Localização atualizada com sucesso!");
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("Erro ao atualizar a localização.");
|
||||
}
|
||||
}
|
||||
catch (HttpRequestException ex)
|
||||
{
|
||||
Console.WriteLine($"Erro de requisição: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ namespace AgroBase.Services
|
|||
public static string ScriptGreenDetector = "green-detector.py";
|
||||
public static string ScriptMapConverter = "map-load.py";
|
||||
public static string ScriptLineAngle = "line-angle2.py";
|
||||
public static string ScriptMapGPS = "gps-viewer.py";
|
||||
|
||||
public static Process RunScript(string Script, string[] Argumentos)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
using System.Collections.Generic;
|
||||
using System.IO.Ports;
|
||||
using System.Linq;
|
||||
using System.Net.NetworkInformation;
|
||||
using static AgroBase.Models.Enuns;
|
||||
|
||||
namespace AgroBase.Services
|
||||
|
|
@ -24,6 +25,11 @@ namespace AgroBase.Services
|
|||
{
|
||||
var Portas = SerialPort.GetPortNames();
|
||||
var PortasNaoMapeadas = Portas.Where(x => !DispositivosConectados.Select(y => y.PortaCOM).Contains(x)).ToList();
|
||||
if (GPSService.PortaGPS != null)
|
||||
{
|
||||
PortasNaoMapeadas = PortasNaoMapeadas.Where(x => x != GPSService.PortaGPS.PortName).ToList();
|
||||
}
|
||||
|
||||
for (int i = 0; i < PortasNaoMapeadas.Count(); i++)
|
||||
{
|
||||
string PortaCom = PortasNaoMapeadas[i].ToString();
|
||||
|
|
@ -54,20 +60,35 @@ namespace AgroBase.Services
|
|||
string Recebido = Porta.ReadLine();
|
||||
if (Recebido.Length > 2)
|
||||
{
|
||||
var Dados = Recebido.Split(';');
|
||||
int code = 0;
|
||||
int.TryParse(Dados[0], out code);
|
||||
if (code == 0)
|
||||
T_Code Dispositivo = T_Code.Vzo;
|
||||
|
||||
if (Recebido.Contains("$GPTXT"))
|
||||
{
|
||||
return;
|
||||
GPSService.AtualizarPortaGPS(Porta);
|
||||
Dispositivo = T_Code.Gps;
|
||||
}
|
||||
else {
|
||||
var Dados = Recebido.Split(';');
|
||||
int code = 0;
|
||||
int.TryParse(Dados[0], out code);
|
||||
if (code == 0)
|
||||
{
|
||||
//Porta.Close();
|
||||
return;
|
||||
}
|
||||
|
||||
Dispositivo = (T_Code)(int.Parse(Dados[0]));
|
||||
}
|
||||
|
||||
T_Code Dispositivo = (T_Code)(int.Parse(Dados[0]));
|
||||
DispositivosConectados.Add(new DispositivoDetalhesModel()
|
||||
if (Dispositivo != T_Code.Vzo)
|
||||
{
|
||||
PortaCOM = Porta.PortName,
|
||||
Dispositivo = Dispositivo
|
||||
});
|
||||
DispositivosConectados.Add(new DispositivoDetalhesModel()
|
||||
{
|
||||
PortaCOM = Porta.PortName,
|
||||
Dispositivo = Dispositivo
|
||||
});
|
||||
}
|
||||
|
||||
Porta.Close();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -1,62 +1,62 @@
|
|||
[
|
||||
{
|
||||
"timestamp": 1703261258.146047,
|
||||
"angulo": 70.83386634512402,
|
||||
"distancia_esquerda": 0,
|
||||
"distancia_direita": 0
|
||||
"timestamp": 1704472484.9266078,
|
||||
"angulo": -5.000644597558448,
|
||||
"distancia_esquerda": 433,
|
||||
"distancia_direita": 249
|
||||
},
|
||||
{
|
||||
"timestamp": 1703261258.1779122,
|
||||
"angulo": 71.62454833068,
|
||||
"distancia_esquerda": 0,
|
||||
"distancia_direita": 0
|
||||
"timestamp": 1704472484.9573126,
|
||||
"angulo": -5.3558250428552014,
|
||||
"distancia_esquerda": 435,
|
||||
"distancia_direita": 250
|
||||
},
|
||||
{
|
||||
"timestamp": 1703261258.2098758,
|
||||
"angulo": 71.21250362005355,
|
||||
"distancia_esquerda": 0,
|
||||
"distancia_direita": 0
|
||||
"timestamp": 1704472484.9890833,
|
||||
"angulo": -4.289153328818998,
|
||||
"distancia_esquerda": 424,
|
||||
"distancia_direita": 252
|
||||
},
|
||||
{
|
||||
"timestamp": 1703261258.2414749,
|
||||
"angulo": 71.29878626894322,
|
||||
"distancia_esquerda": 0,
|
||||
"distancia_direita": 0
|
||||
"timestamp": 1704472485.0372036,
|
||||
"angulo": -6.6544250460065655,
|
||||
"distancia_esquerda": 432,
|
||||
"distancia_direita": 264
|
||||
},
|
||||
{
|
||||
"timestamp": 1703261258.2731776,
|
||||
"angulo": 71.37213682354496,
|
||||
"distancia_esquerda": 0,
|
||||
"distancia_direita": 0
|
||||
"timestamp": 1704472485.0718324,
|
||||
"angulo": -5.119082256336242,
|
||||
"distancia_esquerda": 431,
|
||||
"distancia_direita": 252
|
||||
},
|
||||
{
|
||||
"timestamp": 1703261258.305718,
|
||||
"angulo": 70.71739479109578,
|
||||
"distancia_esquerda": 0,
|
||||
"distancia_direita": 0
|
||||
"timestamp": 1704472485.1011403,
|
||||
"angulo": -5.119082256336242,
|
||||
"distancia_esquerda": 432,
|
||||
"distancia_direita": 251
|
||||
},
|
||||
{
|
||||
"timestamp": 1703261258.3383834,
|
||||
"angulo": 71.01237591212987,
|
||||
"distancia_esquerda": 0,
|
||||
"distancia_direita": 0
|
||||
"timestamp": 1704472485.1334994,
|
||||
"angulo": -8.764100827877996,
|
||||
"distancia_esquerda": 449,
|
||||
"distancia_direita": 265
|
||||
},
|
||||
{
|
||||
"timestamp": 1703261258.3862917,
|
||||
"angulo": 70.9617007750378,
|
||||
"distancia_esquerda": 0,
|
||||
"distancia_direita": 0
|
||||
"timestamp": 1704472485.1670296,
|
||||
"angulo": -11.768288932020653,
|
||||
"distancia_esquerda": 463,
|
||||
"distancia_direita": 277
|
||||
},
|
||||
{
|
||||
"timestamp": 1703261258.4176264,
|
||||
"angulo": 70.98707086102593,
|
||||
"distancia_esquerda": 0,
|
||||
"distancia_direita": 0
|
||||
"timestamp": 1704472485.2005017,
|
||||
"angulo": -4.289153328818998,
|
||||
"distancia_esquerda": 426,
|
||||
"distancia_direita": 250
|
||||
},
|
||||
{
|
||||
"timestamp": 1703261258.4505165,
|
||||
"angulo": 71.13793400214888,
|
||||
"distancia_esquerda": 0,
|
||||
"distancia_direita": 0
|
||||
"timestamp": 1704472485.230556,
|
||||
"angulo": -5.710593137499643,
|
||||
"distancia_esquerda": 437,
|
||||
"distancia_direita": 251
|
||||
}
|
||||
]
|
||||
|
|
@ -1,72 +1,62 @@
|
|||
[
|
||||
{
|
||||
"timestamp": 1703261249.8491328,
|
||||
"timestamp": 1704472448.5072937,
|
||||
"x_max": 640.0,
|
||||
"y_max": 480.0,
|
||||
"objetos": []
|
||||
},
|
||||
{
|
||||
"timestamp": 1703261250.8542001,
|
||||
"timestamp": 1704472448.5392926,
|
||||
"x_max": 640.0,
|
||||
"y_max": 480.0,
|
||||
"objetos": []
|
||||
},
|
||||
{
|
||||
"timestamp": 1703261251.858236,
|
||||
"timestamp": 1704472448.5712929,
|
||||
"x_max": 640.0,
|
||||
"y_max": 480.0,
|
||||
"objetos": []
|
||||
},
|
||||
{
|
||||
"timestamp": 1703261252.8649428,
|
||||
"timestamp": 1704472448.6243026,
|
||||
"x_max": 640.0,
|
||||
"y_max": 480.0,
|
||||
"objetos": []
|
||||
},
|
||||
{
|
||||
"timestamp": 1703261253.8680236,
|
||||
"timestamp": 1704472448.653862,
|
||||
"x_max": 640.0,
|
||||
"y_max": 480.0,
|
||||
"objetos": []
|
||||
},
|
||||
{
|
||||
"timestamp": 1703261254.8731163,
|
||||
"timestamp": 1704472448.6838481,
|
||||
"x_max": 640.0,
|
||||
"y_max": 480.0,
|
||||
"objetos": []
|
||||
},
|
||||
{
|
||||
"timestamp": 1703261255.8774235,
|
||||
"timestamp": 1704472448.715851,
|
||||
"x_max": 640.0,
|
||||
"y_max": 480.0,
|
||||
"objetos": []
|
||||
},
|
||||
{
|
||||
"timestamp": 1703261256.88373,
|
||||
"timestamp": 1704472448.747849,
|
||||
"x_max": 640.0,
|
||||
"y_max": 480.0,
|
||||
"objetos": []
|
||||
},
|
||||
{
|
||||
"timestamp": 1703261257.8879297,
|
||||
"timestamp": 1704472448.7808487,
|
||||
"x_max": 640.0,
|
||||
"y_max": 480.0,
|
||||
"objetos": []
|
||||
},
|
||||
{
|
||||
"timestamp": 1703261258.7623699,
|
||||
"timestamp": 1704472448.8118489,
|
||||
"x_max": 640.0,
|
||||
"y_max": 480.0,
|
||||
"objetos": [
|
||||
{
|
||||
"id": 0,
|
||||
"descricao": "Green",
|
||||
"x": 86,
|
||||
"y": 341,
|
||||
"largura": 49,
|
||||
"altura": 58,
|
||||
"confianca": 1.0
|
||||
}
|
||||
]
|
||||
"objetos": []
|
||||
}
|
||||
]
|
||||
|
|
@ -1,69 +0,0 @@
|
|||
import cv2
|
||||
import mediapipe as mp
|
||||
import json
|
||||
import time
|
||||
from flask import Flask, Response
|
||||
import sys
|
||||
|
||||
max_readings = 10
|
||||
cameraIndex = sys.argv[1]
|
||||
porta = sys.argv[2]
|
||||
url = sys.argv[3]
|
||||
arquivoSaida = sys.argv[4]
|
||||
|
||||
app = Flask(__name__)
|
||||
cap = cv2.VideoCapture(cameraIndex)
|
||||
|
||||
mp_face_detection = mp.solutions.face_detection
|
||||
face_detection = mp_face_detection.FaceDetection(min_detection_confidence=0.5)
|
||||
|
||||
readings = []
|
||||
|
||||
def generate_frames():
|
||||
while True:
|
||||
ret, frame = cap.read()
|
||||
frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
|
||||
results = face_detection.process(frame_rgb)
|
||||
current_readings = []
|
||||
|
||||
if results.detections:
|
||||
for idx, detection in enumerate(results.detections):
|
||||
bboxC = detection.location_data.relative_bounding_box
|
||||
ih, iw, _ = frame.shape
|
||||
x, y, w, h = int(bboxC.xmin * iw), int(bboxC.ymin * ih), int(bboxC.width * iw), int(bboxC.height * ih)
|
||||
current_readings.append({'id': idx, 'x': x, 'y': y, 'largura': w, 'altura': h})
|
||||
|
||||
cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)
|
||||
cv2.putText(frame, f'Rosto {idx}', (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (255, 0, 0), 2)
|
||||
|
||||
timestamp = time.time()
|
||||
readings.append({'timestamp': timestamp, 'rostos': current_readings})
|
||||
|
||||
if len(readings) > max_readings:
|
||||
readings.pop(0)
|
||||
|
||||
if len(readings) == max_readings:
|
||||
try:
|
||||
with open('Python/Output/' + arquivoSaida, 'w') as file:
|
||||
json.dump({'frames': readings}, file)
|
||||
except Exception as e:
|
||||
print(f"Erro ao escrever no arquivo: {e}")
|
||||
|
||||
ret, buffer = cv2.imencode('.jpg', frame)
|
||||
frame = buffer.tobytes()
|
||||
yield (b'--frame\r\n'
|
||||
b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n')
|
||||
|
||||
|
||||
@app.route('/' + url)
|
||||
def video_feed():
|
||||
return Response(generate_frames(), mimetype='multipart/x-mixed-replace; boundary=frame')
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Acessando os argumentos passados na linha de comando
|
||||
if len(sys.argv) != 4:
|
||||
print("Usage: python script.py <porta> <URL> <arquivoSaida>")
|
||||
sys.exit(1)
|
||||
|
||||
app.run(host='0.0.0.0', port=int(porta))
|
||||
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
from flask import Flask, jsonify, request
|
||||
import folium
|
||||
import sys
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
# Armazena a última localização conhecida
|
||||
last_known_location = (-22.1839247, -47.3824123)
|
||||
|
||||
# Rota para renderizar o mapa inicial
|
||||
@app.route('/')
|
||||
def index():
|
||||
global last_known_location
|
||||
folium_map = folium.Map(location=last_known_location, zoom_start=20)
|
||||
folium.Marker(last_known_location, tooltip='Ponto GPS').add_to(folium_map)
|
||||
return folium_map._repr_html_()
|
||||
|
||||
# Rota para atualizar as coordenadas do marcador
|
||||
@app.route('/update_marker', methods=['POST'])
|
||||
def update_marker():
|
||||
global last_known_location
|
||||
data = request.json
|
||||
last_known_location = (data['lat'], data['lon'])
|
||||
return jsonify({'message': 'Coordenadas atualizadas com sucesso!'}), 200
|
||||
|
||||
if __name__ == '__main__':
|
||||
port = 5000 # Porta padrão
|
||||
if len(sys.argv) > 1:
|
||||
try:
|
||||
port = int(sys.argv[1])
|
||||
except ValueError:
|
||||
print("Por favor forneça um número de porta válido.")
|
||||
sys.exit(1)
|
||||
app.run(debug=True, port=port)
|
||||
|
|
@ -1,151 +0,0 @@
|
|||
import cv2
|
||||
import numpy as np
|
||||
from flask import Flask, Response, request
|
||||
import json
|
||||
import time
|
||||
import sys
|
||||
import os
|
||||
|
||||
|
||||
max_readings = int(sys.argv[1])
|
||||
porta = sys.argv[2]
|
||||
url = sys.argv[3]
|
||||
arquivoSaida = sys.argv[4]
|
||||
|
||||
app = Flask(__name__)
|
||||
# Função para detecção de objetos usando YOLO e salvar as coordenadas em um arquivo JSON
|
||||
def detect_objects(conf_threshold, nms_threshold, _camera_index):
|
||||
# Carregar o modelo YOLO e os arquivos de configuração
|
||||
model_config = 'Python/Models/yolo/yolov3.cfg'
|
||||
model_weights = 'Python/Models/yolo/crop_weed_detection.weights'
|
||||
|
||||
# Carregar as classes que o modelo pode detectar
|
||||
with open('Python/Models/yolo/coco.names', 'rt') as f:
|
||||
classes = f.read().rstrip('\n').split('\n')
|
||||
print(classes)
|
||||
|
||||
net = cv2.dnn.readNetFromDarknet(model_config, model_weights)
|
||||
net.setPreferableBackend(cv2.dnn.DNN_BACKEND_OPENCV)
|
||||
net.setPreferableTarget(cv2.dnn.DNN_TARGET_CPU)
|
||||
|
||||
cap = cv2.VideoCapture(_camera_index, cv2.CAP_DSHOW)
|
||||
readings = []
|
||||
|
||||
while True:
|
||||
ret, frame = cap.read()
|
||||
if not ret:
|
||||
break
|
||||
|
||||
# Detecção de Objetos usando YOLO
|
||||
blob = cv2.dnn.blobFromImage(frame, 0.00392, (416, 416), (0, 0, 0), True, crop=False)
|
||||
net.setInput(blob)
|
||||
outs = net.forward(net.getUnconnectedOutLayersNames())
|
||||
|
||||
# Obter as camadas de saída do modelo YOLO
|
||||
output_layers_names = net.getUnconnectedOutLayersNames()
|
||||
|
||||
# Verificar se há saída válida
|
||||
if not output_layers_names:
|
||||
print("Nenhuma camada de saída encontrada. Verifique se o modelo foi carregado corretamente.")
|
||||
break
|
||||
|
||||
# Fazer a detecção de objetos no frame
|
||||
blob = cv2.dnn.blobFromImage(frame, 0.00392, (416, 416), (0, 0, 0), True, crop=False)
|
||||
net.setInput(blob)
|
||||
outs = net.forward(output_layers_names)
|
||||
|
||||
# Mostrar as detecções no frame
|
||||
class_ids = []
|
||||
confidences = []
|
||||
boxes = []
|
||||
|
||||
for out in outs:
|
||||
for detection in out:
|
||||
scores = detection[5:]
|
||||
class_id = np.argmax(scores)
|
||||
confidence = scores[class_id]
|
||||
|
||||
if confidence > conf_threshold:
|
||||
# Obter informações do objeto detectado
|
||||
center_x = int(detection[0] * frame.shape[1])
|
||||
center_y = int(detection[1] * frame.shape[0])
|
||||
w = int(detection[2] * frame.shape[1])
|
||||
h = int(detection[3] * frame.shape[0])
|
||||
|
||||
# Coordenadas do retângulo
|
||||
x = int(center_x - w / 2)
|
||||
y = int(center_y - h / 2)
|
||||
|
||||
boxes.append([x, y, w, h])
|
||||
confidences.append(float(confidence))
|
||||
class_ids.append(class_id)
|
||||
|
||||
# Aplicar Non-Max Suppression
|
||||
indices = cv2.dnn.NMSBoxes(boxes, confidences, conf_threshold, nms_threshold)
|
||||
|
||||
# Mostrar as detecções no frame após o NMS
|
||||
current_readings = []
|
||||
for i in indices:
|
||||
box = boxes[i]
|
||||
x, y, w, h = box[0], box[1], box[2], box[3]
|
||||
class_id = class_ids[i]
|
||||
class_name = classes[class_id]
|
||||
confidence = confidences[i]
|
||||
cv2.rectangle(frame, (x, y), (x + w, y + h), (255, 0, 0), 2)
|
||||
cv2.putText(frame, class_name, (x, y - 5), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 2)
|
||||
|
||||
|
||||
|
||||
# Salvar as detecções em um formato desejado
|
||||
detection_info = {
|
||||
'id': int(i),
|
||||
'descricao': class_name,
|
||||
'x': int(x),
|
||||
'y': int(y),
|
||||
'largura': int(w),
|
||||
'altura': int(h),
|
||||
'confianca': float(confidence)
|
||||
}
|
||||
#print(detection_info)
|
||||
current_readings.append(detection_info)
|
||||
|
||||
timestamp = time.time()
|
||||
readings.append({'timestamp': timestamp, 'objetos': current_readings})
|
||||
|
||||
# Salvar as detecções em um arquivo JSON
|
||||
if len(readings) > max_readings:
|
||||
readings.pop(0)
|
||||
|
||||
output_folder = 'Python/Output/'
|
||||
|
||||
if not os.path.exists(output_folder):
|
||||
os.makedirs(output_folder)
|
||||
|
||||
if len(readings) == max_readings:
|
||||
try:
|
||||
with open(output_folder + arquivoSaida, 'w') as file:
|
||||
json.dump({'frames': readings}, file)
|
||||
except Exception as e:
|
||||
print(f"Erro ao escrever no arquivo: {e}")
|
||||
|
||||
cv2.imshow('Deteccao de Objetos YOLO', frame)
|
||||
if cv2.waitKey(1) & 0xFF == ord('q'):
|
||||
break
|
||||
|
||||
|
||||
|
||||
# Convertendo frame para JPEG e enviando via Flask
|
||||
ret, buffer = cv2.imencode('.jpg', frame)
|
||||
frame = buffer.tobytes()
|
||||
yield (b'--frame\r\n'
|
||||
b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n')
|
||||
|
||||
@app.route('/' + url, methods=['GET'])
|
||||
def video_feed():
|
||||
conf_threshold = float(request.args.get('conf_threshold'))
|
||||
nms_threshold = float(request.args.get('nms_threshold'))
|
||||
camera_index = int(request.args.get('camera_index'))
|
||||
return Response(detect_objects(conf_threshold, nms_threshold, camera_index), mimetype='multipart/x-mixed-replace; boundary=frame')
|
||||
|
||||
if __name__ == "__main__":
|
||||
app.run(host='0.0.0.0', port=porta)
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
|||
{"Conectado":false,"Sensores":[{"LogGrafico":[],"ID":"VBAT","Prioridade":0,"Descricao":"Tensão da bateria","Componente":6,"Aferir":true,"DelayAmostragem":500,"Inicializado":false,"Testando":false,"Funcoes":[21],"UnidadeMedida":null,"Leituras":null,"ValorMinimo":0.0,"ValorMaximo":0.0},{"LogGrafico":[],"ID":"ABAT","Prioridade":0,"Descricao":"Corrente da bateria","Componente":5,"Aferir":true,"DelayAmostragem":500,"Inicializado":false,"Testando":false,"Funcoes":[21],"UnidadeMedida":null,"Leituras":null,"ValorMinimo":0.0,"ValorMaximo":0.0}]}
|
||||
{"Conectado":false,"Sensores":[{"LogGrafico":[],"ID":"TMVET","Prioridade":0,"Descricao":"Temperatura Motor Esquerdo Trás","Componente":411,"Aferir":true,"DelayAmostragem":200,"Inicializado":false,"Testando":false,"Funcoes":[12],"UnidadeMedida":null,"Leituras":[2716.0],"ValorMinimo":0.0,"ValorMaximo":23935.0},{"LogGrafico":[],"ID":"TMVEF","Prioridade":0,"Descricao":"Temperatura Motor Esquerdo Frente","Componente":411,"Aferir":true,"DelayAmostragem":200,"Inicializado":false,"Testando":false,"Funcoes":[12],"UnidadeMedida":null,"Leituras":[-27315.0],"ValorMinimo":-27315.0,"ValorMaximo":0.0},{"LogGrafico":[],"ID":"TMVDT","Prioridade":0,"Descricao":"Temperatura Motor Direito Trás","Componente":411,"Aferir":true,"DelayAmostragem":200,"Inicializado":false,"Testando":false,"Funcoes":[12],"UnidadeMedida":null,"Leituras":[-27315.0],"ValorMinimo":-27315.0,"ValorMaximo":0.0},{"LogGrafico":[],"ID":"TMVDF","Prioridade":0,"Descricao":"Temperatura Motor Direito Frente","Componente":411,"Aferir":true,"DelayAmostragem":200,"Inicializado":false,"Testando":false,"Funcoes":[12],"UnidadeMedida":null,"Leituras":[-27315.0],"ValorMinimo":-27315.0,"ValorMaximo":0.0},{"LogGrafico":[],"ID":"VBAT ","Prioridade":20,"Descricao":"Tensão da bateria","Componente":112,"Aferir":false,"DelayAmostragem":1000,"Inicializado":false,"Testando":false,"Funcoes":[23],"UnidadeMedida":null,"Leituras":null,"ValorMinimo":0.0,"ValorMaximo":0.0},{"LogGrafico":[],"ID":"ABAT ","Prioridade":10,"Descricao":"Corrente da bateria","Componente":322,"Aferir":false,"DelayAmostragem":950,"Inicializado":false,"Testando":false,"Funcoes":[23],"UnidadeMedida":null,"Leituras":null,"ValorMinimo":0.0,"ValorMaximo":0.0}]}
|
||||
|
|
@ -1 +1 @@
|
|||
[{"Pino":99,"Descricao":"3V3_1","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":98,"Descricao":"3V3_2","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":97,"Descricao":"RST","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":4,"Descricao":"GPIO4","Funcao":13,"Habilitado":true,"ComponenteID":"DF"},{"Pino":5,"Descricao":"GPIO5","Funcao":9,"Habilitado":true,"ComponenteID":"DF"},{"Pino":6,"Descricao":"GPIO6","Funcao":14,"Habilitado":true,"ComponenteID":"DF"},{"Pino":7,"Descricao":"GPIO7","Funcao":15,"Habilitado":true,"ComponenteID":"DF"},{"Pino":15,"Descricao":"GPIO15","Funcao":16,"Habilitado":true,"ComponenteID":"DF"},{"Pino":16,"Descricao":"GPIO16","Funcao":17,"Habilitado":true,"ComponenteID":"DF"},{"Pino":17,"Descricao":"GPIO17","Funcao":20,"Habilitado":true,"ComponenteID":"DF"},{"Pino":18,"Descricao":"GPIO18","Funcao":18,"Habilitado":true,"ComponenteID":"DF"},{"Pino":8,"Descricao":"GPIO8","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":3,"Descricao":"GPIO3","Funcao":20,"Habilitado":true,"ComponenteID":"DT"},{"Pino":46,"Descricao":"GPIO46","Funcao":18,"Habilitado":true,"ComponenteID":"DT"},{"Pino":9,"Descricao":"GPIO9","Funcao":17,"Habilitado":true,"ComponenteID":"DT"},{"Pino":10,"Descricao":"GPIO10","Funcao":15,"Habilitado":true,"ComponenteID":"DT"},{"Pino":11,"Descricao":"GPIO11","Funcao":16,"Habilitado":true,"ComponenteID":"DT"},{"Pino":12,"Descricao":"GPIO12","Funcao":14,"Habilitado":true,"ComponenteID":"DT"},{"Pino":13,"Descricao":"GPIO13","Funcao":9,"Habilitado":true,"ComponenteID":"DT"},{"Pino":14,"Descricao":"GPIO14","Funcao":13,"Habilitado":true,"ComponenteID":"DT"},{"Pino":96,"Descricao":"5V","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":95,"Descricao":"GND_1","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":94,"Descricao":"GND_2","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":93,"Descricao":"GND_3","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":19,"Descricao":"GPIO19","Funcao":13,"Habilitado":true,"ComponenteID":"ET"},{"Pino":20,"Descricao":"GPIO20","Funcao":9,"Habilitado":true,"ComponenteID":"ET"},{"Pino":21,"Descricao":"GPIO21","Funcao":14,"Habilitado":true,"ComponenteID":"ET"},{"Pino":47,"Descricao":"GPIO47","Funcao":15,"Habilitado":true,"ComponenteID":"ET"},{"Pino":48,"Descricao":"GPIO48","Funcao":16,"Habilitado":true,"ComponenteID":"ET"},{"Pino":45,"Descricao":"GPIO45","Funcao":17,"Habilitado":true,"ComponenteID":"ET"},{"Pino":0,"Descricao":"GPIO0","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":35,"Descricao":"GPIO35","Funcao":20,"Habilitado":true,"ComponenteID":"ET"},{"Pino":36,"Descricao":"GPIO36","Funcao":18,"Habilitado":true,"ComponenteID":"ET"},{"Pino":37,"Descricao":"GPIO37","Funcao":20,"Habilitado":true,"ComponenteID":"EF"},{"Pino":38,"Descricao":"GPIO38","Funcao":18,"Habilitado":true,"ComponenteID":"EF"},{"Pino":39,"Descricao":"GPIO39","Funcao":17,"Habilitado":true,"ComponenteID":"EF"},{"Pino":40,"Descricao":"GPIO40","Funcao":15,"Habilitado":true,"ComponenteID":"EF"},{"Pino":41,"Descricao":"GPIO41","Funcao":16,"Habilitado":true,"ComponenteID":"EF"},{"Pino":42,"Descricao":"GPIO42","Funcao":14,"Habilitado":true,"ComponenteID":"EF"},{"Pino":2,"Descricao":"GPIO2","Funcao":9,"Habilitado":true,"ComponenteID":"EF"},{"Pino":1,"Descricao":"GPIO1","Funcao":13,"Habilitado":true,"ComponenteID":"EF"},{"Pino":44,"Descricao":"RX","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":43,"Descricao":"TX","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":92,"Descricao":"GND_4","Funcao":0,"Habilitado":false,"ComponenteID":""}]
|
||||
[{"Pino":99,"Descricao":"3V3_1","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":98,"Descricao":"3V3_2","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":97,"Descricao":"RST","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":4,"Descricao":"GPIO4","Funcao":14,"Habilitado":true,"ComponenteID":"ET"},{"Pino":5,"Descricao":"GPIO5","Funcao":9,"Habilitado":true,"ComponenteID":"ET"},{"Pino":6,"Descricao":"GPIO6","Funcao":13,"Habilitado":true,"ComponenteID":"ET"},{"Pino":7,"Descricao":"GPIO7","Funcao":16,"Habilitado":true,"ComponenteID":"ET"},{"Pino":15,"Descricao":"GPIO15","Funcao":15,"Habilitado":true,"ComponenteID":"ET"},{"Pino":16,"Descricao":"GPIO16","Funcao":17,"Habilitado":true,"ComponenteID":"ET"},{"Pino":17,"Descricao":"GPIO17","Funcao":20,"Habilitado":true,"ComponenteID":"ET"},{"Pino":18,"Descricao":"GPIO18","Funcao":18,"Habilitado":true,"ComponenteID":"ET"},{"Pino":8,"Descricao":"GPIO8","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":3,"Descricao":"GPIO3","Funcao":20,"Habilitado":true,"ComponenteID":"DT"},{"Pino":46,"Descricao":"GPIO46","Funcao":18,"Habilitado":true,"ComponenteID":"DT"},{"Pino":9,"Descricao":"GPIO9","Funcao":17,"Habilitado":true,"ComponenteID":"DT"},{"Pino":10,"Descricao":"GPIO10","Funcao":16,"Habilitado":true,"ComponenteID":"DT"},{"Pino":11,"Descricao":"GPIO11","Funcao":15,"Habilitado":true,"ComponenteID":"DT"},{"Pino":12,"Descricao":"GPIO12","Funcao":13,"Habilitado":true,"ComponenteID":"DT"},{"Pino":13,"Descricao":"GPIO13","Funcao":9,"Habilitado":true,"ComponenteID":"DT"},{"Pino":14,"Descricao":"GPIO14","Funcao":14,"Habilitado":true,"ComponenteID":"DT"},{"Pino":96,"Descricao":"5V","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":95,"Descricao":"GND_1","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":94,"Descricao":"GND_2","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":93,"Descricao":"GND_3","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":19,"Descricao":"GPIO19","Funcao":14,"Habilitado":true,"ComponenteID":"DF"},{"Pino":20,"Descricao":"GPIO20","Funcao":9,"Habilitado":true,"ComponenteID":"DF"},{"Pino":21,"Descricao":"GPIO21","Funcao":13,"Habilitado":true,"ComponenteID":"DF"},{"Pino":47,"Descricao":"GPIO47","Funcao":15,"Habilitado":true,"ComponenteID":"DF"},{"Pino":48,"Descricao":"GPIO48","Funcao":16,"Habilitado":true,"ComponenteID":"DF"},{"Pino":45,"Descricao":"GPIO45","Funcao":17,"Habilitado":true,"ComponenteID":"DF"},{"Pino":0,"Descricao":"GPIO0","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":35,"Descricao":"GPIO35","Funcao":20,"Habilitado":true,"ComponenteID":"DF"},{"Pino":36,"Descricao":"GPIO36","Funcao":18,"Habilitado":true,"ComponenteID":"DF"},{"Pino":37,"Descricao":"GPIO37","Funcao":20,"Habilitado":true,"ComponenteID":"EF"},{"Pino":38,"Descricao":"GPIO38","Funcao":18,"Habilitado":true,"ComponenteID":"EF"},{"Pino":39,"Descricao":"GPIO39","Funcao":17,"Habilitado":true,"ComponenteID":"EF"},{"Pino":40,"Descricao":"GPIO40","Funcao":16,"Habilitado":true,"ComponenteID":"EF"},{"Pino":41,"Descricao":"GPIO41","Funcao":15,"Habilitado":true,"ComponenteID":"EF"},{"Pino":42,"Descricao":"GPIO42","Funcao":13,"Habilitado":true,"ComponenteID":"EF"},{"Pino":2,"Descricao":"GPIO2","Funcao":9,"Habilitado":true,"ComponenteID":"EF"},{"Pino":1,"Descricao":"GPIO1","Funcao":14,"Habilitado":true,"ComponenteID":"EF"},{"Pino":44,"Descricao":"RX","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":43,"Descricao":"TX","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":92,"Descricao":"GND_4","Funcao":0,"Habilitado":false,"ComponenteID":""}]
|
||||
|
|
@ -1 +1 @@
|
|||
[{"Pino":99,"Descricao":"3V3_1","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":98,"Descricao":"3V3_2","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":97,"Descricao":"RST","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":4,"Descricao":"GPIO4","Funcao":5,"Habilitado":true,"ComponenteID":"DF"},{"Pino":5,"Descricao":"GPIO5","Funcao":9,"Habilitado":true,"ComponenteID":"DF"},{"Pino":6,"Descricao":"GPIO6","Funcao":10,"Habilitado":true,"ComponenteID":"DF"},{"Pino":7,"Descricao":"GPIO7","Funcao":11,"Habilitado":true,"ComponenteID":"DF"},{"Pino":15,"Descricao":"GPIO15","Funcao":6,"Habilitado":true,"ComponenteID":"DF"},{"Pino":16,"Descricao":"GPIO16","Funcao":7,"Habilitado":true,"ComponenteID":"DF"},{"Pino":17,"Descricao":"GPIO17","Funcao":8,"Habilitado":true,"ComponenteID":"DF"},{"Pino":18,"Descricao":"GPIO18","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":8,"Descricao":"GPIO8","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":3,"Descricao":"GPIO3","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":46,"Descricao":"GPIO46","Funcao":8,"Habilitado":true,"ComponenteID":"DT"},{"Pino":9,"Descricao":"GPIO9","Funcao":7,"Habilitado":true,"ComponenteID":"DT"},{"Pino":10,"Descricao":"GPIO10","Funcao":6,"Habilitado":true,"ComponenteID":"DT"},{"Pino":11,"Descricao":"GPIO11","Funcao":11,"Habilitado":true,"ComponenteID":"DT"},{"Pino":12,"Descricao":"GPIO12","Funcao":10,"Habilitado":true,"ComponenteID":"DT"},{"Pino":13,"Descricao":"GPIO13","Funcao":9,"Habilitado":true,"ComponenteID":"DT"},{"Pino":14,"Descricao":"GPIO14","Funcao":5,"Habilitado":true,"ComponenteID":"DT"},{"Pino":96,"Descricao":"5V","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":95,"Descricao":"GND_1","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":94,"Descricao":"GND_2","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":93,"Descricao":"GND_3","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":19,"Descricao":"GPIO19","Funcao":5,"Habilitado":true,"ComponenteID":"ET"},{"Pino":20,"Descricao":"GPIO20","Funcao":9,"Habilitado":true,"ComponenteID":"ET"},{"Pino":21,"Descricao":"GPIO21","Funcao":10,"Habilitado":true,"ComponenteID":"ET"},{"Pino":47,"Descricao":"GPIO47","Funcao":11,"Habilitado":true,"ComponenteID":"ET"},{"Pino":48,"Descricao":"GPIO48","Funcao":6,"Habilitado":true,"ComponenteID":"ET"},{"Pino":45,"Descricao":"GPIO45","Funcao":7,"Habilitado":true,"ComponenteID":"ET"},{"Pino":0,"Descricao":"GPIO0","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":35,"Descricao":"GPIO35","Funcao":8,"Habilitado":true,"ComponenteID":"ET"},{"Pino":36,"Descricao":"GPIO36","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":37,"Descricao":"GPIO37","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":38,"Descricao":"GPIO38","Funcao":8,"Habilitado":true,"ComponenteID":"EF"},{"Pino":39,"Descricao":"GPIO39","Funcao":7,"Habilitado":true,"ComponenteID":"EF"},{"Pino":40,"Descricao":"GPIO40","Funcao":6,"Habilitado":true,"ComponenteID":"EF"},{"Pino":41,"Descricao":"GPIO41","Funcao":11,"Habilitado":true,"ComponenteID":"EF"},{"Pino":42,"Descricao":"GPIO42","Funcao":10,"Habilitado":true,"ComponenteID":"EF"},{"Pino":2,"Descricao":"GPIO2","Funcao":9,"Habilitado":true,"ComponenteID":"EF"},{"Pino":1,"Descricao":"GPIO1","Funcao":5,"Habilitado":true,"ComponenteID":"EF"},{"Pino":44,"Descricao":"RX","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":43,"Descricao":"TX","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":92,"Descricao":"GND_4","Funcao":0,"Habilitado":false,"ComponenteID":""}]
|
||||
[{"Pino":99,"Descricao":"3V3_1","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":98,"Descricao":"3V3_2","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":97,"Descricao":"RST","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":4,"Descricao":"GPIO4","Funcao":5,"Habilitado":true,"ComponenteID":"ET"},{"Pino":5,"Descricao":"GPIO5","Funcao":9,"Habilitado":true,"ComponenteID":"ET"},{"Pino":6,"Descricao":"GPIO6","Funcao":10,"Habilitado":true,"ComponenteID":"ET"},{"Pino":7,"Descricao":"GPIO7","Funcao":11,"Habilitado":true,"ComponenteID":"ET"},{"Pino":15,"Descricao":"GPIO15","Funcao":6,"Habilitado":true,"ComponenteID":"ET"},{"Pino":16,"Descricao":"GPIO16","Funcao":7,"Habilitado":true,"ComponenteID":"ET"},{"Pino":17,"Descricao":"GPIO17","Funcao":8,"Habilitado":true,"ComponenteID":"ET"},{"Pino":18,"Descricao":"GPIO18","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":8,"Descricao":"GPIO8","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":3,"Descricao":"GPIO3","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":46,"Descricao":"GPIO46","Funcao":7,"Habilitado":true,"ComponenteID":"DT"},{"Pino":9,"Descricao":"GPIO9","Funcao":8,"Habilitado":true,"ComponenteID":"DT"},{"Pino":10,"Descricao":"GPIO10","Funcao":6,"Habilitado":true,"ComponenteID":"DT"},{"Pino":11,"Descricao":"GPIO11","Funcao":11,"Habilitado":true,"ComponenteID":"DT"},{"Pino":12,"Descricao":"GPIO12","Funcao":10,"Habilitado":true,"ComponenteID":"DT"},{"Pino":13,"Descricao":"GPIO13","Funcao":9,"Habilitado":true,"ComponenteID":"DT"},{"Pino":14,"Descricao":"GPIO14","Funcao":5,"Habilitado":true,"ComponenteID":"DT"},{"Pino":96,"Descricao":"5V","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":95,"Descricao":"GND_1","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":94,"Descricao":"GND_2","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":93,"Descricao":"GND_3","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":19,"Descricao":"GPIO19","Funcao":5,"Habilitado":true,"ComponenteID":"DF"},{"Pino":20,"Descricao":"GPIO20","Funcao":9,"Habilitado":true,"ComponenteID":"DF"},{"Pino":21,"Descricao":"GPIO21","Funcao":10,"Habilitado":true,"ComponenteID":"DF"},{"Pino":47,"Descricao":"GPIO47","Funcao":11,"Habilitado":true,"ComponenteID":"DF"},{"Pino":48,"Descricao":"GPIO48","Funcao":6,"Habilitado":true,"ComponenteID":"DF"},{"Pino":45,"Descricao":"GPIO45","Funcao":8,"Habilitado":true,"ComponenteID":"DF"},{"Pino":0,"Descricao":"GPIO0","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":35,"Descricao":"GPIO35","Funcao":7,"Habilitado":true,"ComponenteID":"DF"},{"Pino":36,"Descricao":"GPIO36","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":37,"Descricao":"GPIO37","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":38,"Descricao":"GPIO38","Funcao":7,"Habilitado":true,"ComponenteID":"EF"},{"Pino":39,"Descricao":"GPIO39","Funcao":8,"Habilitado":true,"ComponenteID":"EF"},{"Pino":40,"Descricao":"GPIO40","Funcao":6,"Habilitado":true,"ComponenteID":"EF"},{"Pino":41,"Descricao":"GPIO41","Funcao":11,"Habilitado":true,"ComponenteID":"EF"},{"Pino":42,"Descricao":"GPIO42","Funcao":10,"Habilitado":true,"ComponenteID":"EF"},{"Pino":2,"Descricao":"GPIO2","Funcao":9,"Habilitado":true,"ComponenteID":"EF"},{"Pino":1,"Descricao":"GPIO1","Funcao":5,"Habilitado":true,"ComponenteID":"EF"},{"Pino":44,"Descricao":"RX","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":43,"Descricao":"TX","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":92,"Descricao":"GND_4","Funcao":0,"Habilitado":false,"ComponenteID":""}]
|
||||
|
|
@ -1 +1 @@
|
|||
[{"Pino":99,"Descricao":"3V3_1","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":98,"Descricao":"3V3_2","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":97,"Descricao":"RST","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":4,"Descricao":"GPIO4","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":5,"Descricao":"GPIO5","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":6,"Descricao":"GPIO6","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":7,"Descricao":"GPIO7","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":15,"Descricao":"GPIO15","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":16,"Descricao":"GPIO16","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":17,"Descricao":"GPIO17","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":18,"Descricao":"GPIO18","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":8,"Descricao":"GPIO8","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":3,"Descricao":"GPIO3","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":46,"Descricao":"GPIO46","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":9,"Descricao":"GPIO9","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":10,"Descricao":"GPIO10","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":11,"Descricao":"GPIO11","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":12,"Descricao":"GPIO12","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":13,"Descricao":"GPIO13","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":14,"Descricao":"GPIO14","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":96,"Descricao":"5V","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":95,"Descricao":"GND_1","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":94,"Descricao":"GND_2","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":93,"Descricao":"GND_3","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":19,"Descricao":"GPIO19","Funcao":21,"Habilitado":true,"ComponenteID":"VBAT"},{"Pino":20,"Descricao":"GPIO20","Funcao":21,"Habilitado":true,"ComponenteID":"ABAT"},{"Pino":21,"Descricao":"GPIO21","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":47,"Descricao":"GPIO47","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":48,"Descricao":"GPIO48","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":45,"Descricao":"GPIO45","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":0,"Descricao":"GPIO0","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":35,"Descricao":"GPIO35","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":36,"Descricao":"GPIO36","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":37,"Descricao":"GPIO37","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":38,"Descricao":"GPIO38","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":39,"Descricao":"GPIO39","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":40,"Descricao":"GPIO40","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":41,"Descricao":"GPIO41","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":42,"Descricao":"GPIO42","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":2,"Descricao":"GPIO2","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":1,"Descricao":"GPIO1","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":44,"Descricao":"RX","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":43,"Descricao":"TX","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":92,"Descricao":"GND_4","Funcao":0,"Habilitado":false,"ComponenteID":""}]
|
||||
[{"Pino":99,"Descricao":"3V3_1","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":98,"Descricao":"3V3_2","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":97,"Descricao":"RST","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":4,"Descricao":"GPIO4","Funcao":12,"Habilitado":true,"ComponenteID":"TMVET"},{"Pino":5,"Descricao":"GPIO5","Funcao":12,"Habilitado":true,"ComponenteID":"TMVEF"},{"Pino":6,"Descricao":"GPIO6","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":7,"Descricao":"GPIO7","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":15,"Descricao":"GPIO15","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":16,"Descricao":"GPIO16","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":17,"Descricao":"GPIO17","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":18,"Descricao":"GPIO18","Funcao":12,"Habilitado":true,"ComponenteID":"TMVDT"},{"Pino":8,"Descricao":"GPIO8","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":3,"Descricao":"GPIO3","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":46,"Descricao":"GPIO46","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":9,"Descricao":"GPIO9","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":10,"Descricao":"GPIO10","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":11,"Descricao":"GPIO11","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":12,"Descricao":"GPIO12","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":13,"Descricao":"GPIO13","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":14,"Descricao":"GPIO14","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":96,"Descricao":"5V","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":95,"Descricao":"GND_1","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":94,"Descricao":"GND_2","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":93,"Descricao":"GND_3","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":19,"Descricao":"GPIO19","Funcao":12,"Habilitado":true,"ComponenteID":"TMVDF"},{"Pino":20,"Descricao":"GPIO20","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":21,"Descricao":"GPIO21","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":47,"Descricao":"GPIO47","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":48,"Descricao":"GPIO48","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":45,"Descricao":"GPIO45","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":0,"Descricao":"GPIO0","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":35,"Descricao":"GPIO35","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":36,"Descricao":"GPIO36","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":37,"Descricao":"GPIO37","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":38,"Descricao":"GPIO38","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":39,"Descricao":"GPIO39","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":40,"Descricao":"GPIO40","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":41,"Descricao":"GPIO41","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":42,"Descricao":"GPIO42","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":2,"Descricao":"GPIO2","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":1,"Descricao":"GPIO1","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Pino":44,"Descricao":"RX","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":43,"Descricao":"TX","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Pino":92,"Descricao":"GND_4","Funcao":0,"Habilitado":false,"ComponenteID":""}]
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -1 +1 @@
|
|||
908a685e8becb0dd9bec840937514641f5a9adbd
|
||||
9ea427b4d2d26368941e1cb4449fcfcce5ce6bc4b961432a39239bab4ca7dc9e
|
||||
|
|
|
|||
|
|
@ -188,3 +188,180 @@ C:\Zendion Inc\agrobot_base\AgroBase\AgroBase\bin\Debug\Python\Scripts\line-angl
|
|||
C:\Zendion Inc\agrobot_base\AgroBase\AgroBase\bin\Debug\Python\Scripts\line-angle2.py
|
||||
C:\Zendion Inc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.Forms.Operacoes.frmOperacaoSeguidorLinha.resources
|
||||
C:\Zendion Inc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.Forms.Atuador.frmAtuConfig.resources
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\Python\Models\yolo\coco.names
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\Python\Models\yolo\yolov3.cfg
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\Python\Models\yolo\yolov3.weights
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\CefSharp.Core.Runtime.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\CefSharp.Core.Runtime.pdb
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\CefSharp.Core.Runtime.xml
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\chrome_100_percent.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\chrome_200_percent.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\chrome_elf.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\d3dcompiler_47.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\icudtl.dat
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\libcef.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\libEGL.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\libGLESv2.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\LICENSE.txt
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\af.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\am.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\ar.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\bg.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\bn.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\ca.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\cs.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\da.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\de.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\el.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\en-GB.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\en-US.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\es-419.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\es.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\et.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\fa.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\fi.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\fil.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\fr.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\gu.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\he.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\hi.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\hr.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\hu.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\id.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\it.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\ja.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\kn.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\ko.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\lt.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\lv.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\ml.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\mr.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\ms.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\nb.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\nl.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\pl.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\pt-BR.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\pt-PT.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\ro.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\ru.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\sk.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\sl.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\sr.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\sv.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\sw.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\ta.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\te.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\th.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\tr.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\uk.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\ur.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\vi.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\zh-CN.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\locales\zh-TW.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\README.txt
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\resources.pak
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\snapshot_blob.bin
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\v8_context_snapshot.bin
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\vk_swiftshader.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\vk_swiftshader_icd.json
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\vulkan-1.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\CefSharp.BrowserSubprocess.Core.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\CefSharp.BrowserSubprocess.Core.pdb
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\CefSharp.BrowserSubprocess.pdb
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\Python\Models\yolo\coco-tiny.names
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\Python\Models\yolo\yolov3-tiny.cfg
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\Python\Models\yolo\yolov3-tiny.weights
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\Python\Models\yolo\yolov3-weed.weights
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\Python\Models\yolo\crop_weed_detection.weights
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\Python\Scripts\green-detector.py
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\Python\Scripts\line-angle.py
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\Python\Scripts\line-angle2.py
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\Python\Scripts\map-load.py
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\AgroBase.exe.config
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\AgroBase.exe
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\AgroBase.pdb
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\CefSharp.Core.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\CefSharp.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\CefSharp.WinForms.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\Emgu.CV.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\Microsoft.Bcl.AsyncInterfaces.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\Microsoft.DirectX.DirectInput.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\Microsoft.DirectX.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\Newtonsoft.Json.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\OpenTK.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\OpenTK.GLControl.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\SharpDX.DirectInput.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\SharpDX.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\System.Buffers.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\System.CodeDom.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\System.Memory.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\System.Numerics.Vectors.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\System.Text.Encodings.Web.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\System.Text.Json.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\System.Threading.Tasks.Extensions.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\System.ValueTuple.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\ZedGraph.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\CefSharp.pdb
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\CefSharp.xml
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\CefSharp.Core.pdb
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\CefSharp.Core.xml
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\CefSharp.WinForms.pdb
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\CefSharp.WinForms.xml
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\Emgu.CV.xml
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\Microsoft.Bcl.AsyncInterfaces.xml
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\Microsoft.DirectX.xml
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\Newtonsoft.Json.xml
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\OpenTK.xml
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\OpenTK.GLControl.xml
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\SharpDX.pdb
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\SharpDX.DirectInput.pdb
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\SharpDX.DirectInput.xml
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\System.Buffers.xml
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\System.CodeDom.xml
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\System.Memory.xml
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\System.Numerics.Vectors.xml
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\System.Text.Encodings.Web.xml
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\System.Text.Json.xml
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\System.Threading.Tasks.Extensions.xml
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\System.ValueTuple.xml
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\ZedGraph.xml
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\de\ZedGraph.resources.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\es\ZedGraph.resources.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\fr\ZedGraph.resources.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\hu\ZedGraph.resources.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\it\ZedGraph.resources.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\ja\ZedGraph.resources.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\pt\ZedGraph.resources.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\ru\ZedGraph.resources.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\sk\ZedGraph.resources.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\sv\ZedGraph.resources.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\tr\ZedGraph.resources.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\zh-cn\ZedGraph.resources.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\zh-tw\ZedGraph.resources.dll
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.csproj.AssemblyReference.cache
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.Forms.Atuador.frmAtuConfig.resources
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.Forms.Direcional.frmDirConfig.resources
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.Forms.Direcional.frmDirPlot.resources
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.Forms.frmAcompanhamento.resources
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.Forms.frmAtuCamera.resources
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.Forms.frmMapa.resources
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.Forms.Movimentacao.frmMovConfig.resources
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.Forms.frmMovDiagnosticos.resources
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.Forms.frmMovPlot.resources
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.frmPrincipal.resources
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.Forms.frmInstancial.resources
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.Forms.frmJoystick.resources
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.Forms.Operacoes.frmOperacaoSeguidorLinha.resources
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.Forms.Sensoriamento.frmSenCamera.resources
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.Forms.Sensoriamento.frmSenConfig.resources
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.Properties.Resources.resources
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.csproj.GenerateResource.cache
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.csproj.CoreCompileInputs.cache
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.csproj.CopyComplete
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.exe
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.pdb
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\Python\Scripts\gps-viewer.py
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.Forms.frmGPS.resources
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.Forms.Sensoriamento.frmSenConfig2.resources
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -1,4 +1,4 @@
|
|||
#include "C:\Zendion Inc\agrobot_base\Firmware\Modulos\SerialService.h"
|
||||
#include "C:\ZendionInc\agrobot_base\Firmware\Modulos\SerialService.h"
|
||||
#define D_Code Dir
|
||||
|
||||
#define _pinoLED RGB_BUILTIN
|
||||
|
|
|
|||
|
|
@ -18,14 +18,14 @@ enum F_Code {
|
|||
};
|
||||
|
||||
enum S_Code {
|
||||
sRPM,
|
||||
sTST,
|
||||
sCFG,
|
||||
sTMP,
|
||||
sENC,
|
||||
sCOR,
|
||||
sTEN,
|
||||
sFLX,
|
||||
sRPM = 133,
|
||||
sTST = 154,
|
||||
sCFG = 211,
|
||||
sTMP = 411,
|
||||
sENC = 111,
|
||||
sCOR = 322,
|
||||
sTEN = 112,
|
||||
sFLX = 198,
|
||||
};
|
||||
|
||||
enum Sentido {
|
||||
|
|
|
|||
|
|
@ -2,9 +2,9 @@
|
|||
// Versão Firmware: 9
|
||||
// Ultima atualização: 21/11/2023
|
||||
|
||||
#include "C:\Zendion Inc\agrobot_base\Firmware\Modulos\SerialService.h"
|
||||
#include "C:\Zendion Inc\agrobot_base\Firmware\Modulos\MemoryService.h"
|
||||
#include "C:\Zendion Inc\agrobot_base\Firmware\Modulos\utils.h"
|
||||
#include "C:\ZendionInc\agrobot_base\Firmware\Modulos\SerialService.h"
|
||||
#include "C:\ZendionInc\agrobot_base\Firmware\Modulos\MemoryService.h"
|
||||
#include "C:\ZendionInc\agrobot_base\Firmware\Modulos\utils.h"
|
||||
#include <PID_v1.h>
|
||||
#include "DHT.h"
|
||||
#define D_Code Mov
|
||||
|
|
|
|||
|
|
@ -87,4 +87,10 @@ String MontarDadosProtocoloSensorGenerico(String dados1, String dados2 = "", Str
|
|||
return Protocolo;
|
||||
}
|
||||
|
||||
String MontarDadosProtocoloNTC10K(float temperatura) {
|
||||
String Protocolo =
|
||||
(String)temperatura;
|
||||
return Protocolo;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
#include "C:\Zendion Inc\agrobot_base\Firmware\Modulos\SerialService.h"
|
||||
#include "C:\Zendion Inc\agrobot_base\Firmware\Modulos\utils.h"
|
||||
#include "C:\ZendionInc\agrobot_base\Firmware\Modulos\SerialService.h"
|
||||
#include "C:\ZendionInc\agrobot_base\Firmware\Modulos\utils.h"
|
||||
#include <PID_v1.h>
|
||||
#include "DHT.h"
|
||||
#define D_Code Mov
|
||||
|
|
@ -308,10 +308,10 @@ private:
|
|||
|
||||
// Comparação das leituras atuais com as leituras anteriores
|
||||
if (LeituraHa == LeituraAnteriorHc && LeituraHc == LeituraAnteriorHa) {
|
||||
_Sentido = Horario;
|
||||
_Sentido = Antihorario;
|
||||
}
|
||||
else if (LeituraHa == LeituraAnteriorHb && LeituraHb == LeituraAnteriorHa) {
|
||||
_Sentido = Antihorario;
|
||||
_Sentido = Horario;
|
||||
}
|
||||
else {
|
||||
// Outros casos (não determinados)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,603 @@
|
|||
#include "C:\ZendionInc\agrobot_base\Firmware\Modulos\SerialService.h"
|
||||
#include "C:\ZendionInc\agrobot_base\Firmware\Modulos\utils.h"
|
||||
#include <PID_v1.h>
|
||||
#include <SimpleKalmanFilter.h>
|
||||
#define D_Code Mov
|
||||
|
||||
#define _pinoLED RGB_BUILTIN
|
||||
int _pinoReleGeral = -1;
|
||||
|
||||
long _baudRate = 115200;
|
||||
|
||||
bool Conectado = false;
|
||||
|
||||
int _TaxaAmostragem = 500;
|
||||
const int PPR = 22; // Pulsos por revolução
|
||||
|
||||
int RampaMin = 0;
|
||||
int ZeroRampa = 0;
|
||||
int RampaMax = 1023;
|
||||
|
||||
// Temperatura NTC 10K
|
||||
double Vs = 3.3; // TENSÃO DE SAIDA DO ESP32
|
||||
double R1 = 10000; //RESISTOR UTILIZADO NO DIVISOR DE TENSÃO
|
||||
double Beta = 3950; // VALOR DE BETA
|
||||
double To = 298.15; // VALOR EM KELVIN REFERENTE A 25° CELSIUS
|
||||
double Ro = 10000;
|
||||
double adcMax = 4095.0;
|
||||
|
||||
class Motor {
|
||||
public:
|
||||
// Construtor
|
||||
Motor(String desc) {
|
||||
_ID = desc;
|
||||
}
|
||||
|
||||
// Definições
|
||||
String _ID;
|
||||
int _canal;
|
||||
int _pinoPWM;
|
||||
int _pinoDIR;
|
||||
int _pinoBRK;
|
||||
int _pinoSTP;
|
||||
int _pinoHLA;
|
||||
int _pinoHLB;
|
||||
int _pinoHLC;
|
||||
int _pinoTMP;
|
||||
|
||||
double _Kp;
|
||||
double _Ki;
|
||||
double _Kd;
|
||||
PID* _PID = nullptr;
|
||||
|
||||
bool Iniciado = false;
|
||||
bool Testando = false;
|
||||
bool Revertendo = false;
|
||||
bool SentidoContrario = false;
|
||||
StatusMotor Aceleracao = Estavel;
|
||||
StatusMotor AceleracaoA = Estavel;
|
||||
|
||||
// Consumo
|
||||
const int leituras = 5;
|
||||
volatile float RPM_arr[5];
|
||||
volatile bool Hall_arr[5][3];
|
||||
double RPM;
|
||||
double PotenciaAtual;
|
||||
volatile int ultimaLeituraHallA = 0;
|
||||
volatile unsigned int tempoAnterior = 0;
|
||||
volatile float periodo = 0;
|
||||
double temperatura = 0.0;
|
||||
SimpleKalmanFilter* tempKalman;
|
||||
|
||||
// Entrada de dados
|
||||
bool _MalhaFechada;
|
||||
int _PotMap;
|
||||
double _RPM_SP;
|
||||
Sentido _SentidoSP = Parado;
|
||||
Sentido _SentidoM = Parado;
|
||||
Sentido _Sentido = Parado;
|
||||
int _US_Addr;
|
||||
bool _Freio = false;
|
||||
int _Margem = 2;
|
||||
|
||||
void Inicializar() {
|
||||
if (Iniciado) {
|
||||
EnviarDadosSerial(_ID + " ja inicializado");
|
||||
EnviarDadosSerial(MontarProtocoloSensor(sCFG, _ID, Iniciado ? "1" : "0"));
|
||||
return;
|
||||
}
|
||||
|
||||
if (_pinoPWM > -1) {
|
||||
ledcSetup(_canal, 1000, 10);
|
||||
ledcAttachPin(_pinoPWM, _canal);
|
||||
PotenciaAtual = ZeroRampa;
|
||||
_PotMap = PotenciaAtual;
|
||||
_RPM_SP = 0;
|
||||
ledcWrite(_canal, _PotMap);
|
||||
}
|
||||
if (_pinoDIR > -1) {
|
||||
pinMode(_pinoDIR, OUTPUT);
|
||||
digitalWrite(_pinoDIR, LOW);
|
||||
|
||||
_SentidoM = Parado;
|
||||
}
|
||||
if (_pinoBRK > -1) {
|
||||
pinMode(_pinoBRK, OUTPUT);
|
||||
digitalWrite(_pinoBRK, LOW);
|
||||
}
|
||||
if (_pinoSTP > -1) {
|
||||
pinMode(_pinoSTP, OUTPUT);
|
||||
digitalWrite(_pinoSTP, HIGH);
|
||||
}
|
||||
if (_pinoHLA > -1) {
|
||||
pinMode(_pinoHLA, INPUT);
|
||||
ultimaLeituraHallA = digitalRead(_pinoHLA);
|
||||
RPM = 0;
|
||||
periodo = 0;
|
||||
tempoAnterior = 0;
|
||||
|
||||
xTaskCreatePinnedToCore(&Motor::RPMTaskWrapper, "RPMTask", 15000, this, 25 - _canal, &RPMTaskHandle, tskNO_AFFINITY);
|
||||
|
||||
ReiniciarAceleracaoArr();
|
||||
ReiniciarHallArr();
|
||||
|
||||
_PID = new PID(&RPM, &PotenciaAtual, &_RPM_SP, _Kp, _Ki, _Kd, DIRECT);
|
||||
_PID->SetOutputLimits(RampaMin, RampaMax);
|
||||
_PID->SetMode(AUTOMATIC);
|
||||
}
|
||||
if (_pinoHLB > -1) {
|
||||
pinMode(_pinoHLB, INPUT);
|
||||
}
|
||||
if (_pinoHLC > -1) {
|
||||
pinMode(_pinoHLC, INPUT);
|
||||
}
|
||||
if (_pinoTMP > -1) {
|
||||
pinMode(_pinoTMP, INPUT);
|
||||
tempKalman = new SimpleKalmanFilter(2, 2, 0.01);
|
||||
}
|
||||
|
||||
|
||||
xTaskCreatePinnedToCore(&Motor::RampaTaskWrapper, "RampaTask", 5000, this, 21 - _canal + 4, &RampaTaskHandle, tskNO_AFFINITY);
|
||||
|
||||
EnviarDadosSerial(_ID + " Iniciado");
|
||||
|
||||
Iniciado = true;
|
||||
|
||||
EnviarDadosSerial(MontarProtocoloSensor(sCFG, _ID, Iniciado ? "1" : "0"));
|
||||
}
|
||||
|
||||
void Desligar() {
|
||||
if (!Iniciado) {
|
||||
EnviarDadosSerial(_ID + " nao esta inicializado");
|
||||
EnviarDadosSerial(MontarProtocoloSensor(sCFG, _ID, Iniciado ? "1" : "0"));
|
||||
return;
|
||||
}
|
||||
|
||||
// Parar a execução das tarefas
|
||||
vTaskDelete(RampaTaskHandle);
|
||||
if (_pinoHLA > -1) {
|
||||
vTaskDelete(RPMTaskHandle);
|
||||
}
|
||||
if (_pinoTMP > -1) {
|
||||
delete tempKalman;
|
||||
}
|
||||
|
||||
// Desanexar o canal PWM
|
||||
if (_pinoPWM > -1) {
|
||||
ledcDetachPin(_pinoPWM);
|
||||
}
|
||||
|
||||
// Redefinir as configurações para os valores iniciais
|
||||
pinMode(_pinoPWM, INPUT);
|
||||
pinMode(_pinoDIR, INPUT);
|
||||
pinMode(_pinoBRK, INPUT);
|
||||
pinMode(_pinoSTP, INPUT);
|
||||
pinMode(_pinoHLA, INPUT);
|
||||
pinMode(_pinoHLB, INPUT);
|
||||
pinMode(_pinoHLC, INPUT);
|
||||
pinMode(_pinoTMP, INPUT);
|
||||
|
||||
// Outras redefinições de variáveis de estado, se necessário
|
||||
delete _PID;
|
||||
|
||||
EnviarDadosSerial(_ID + " Desligado");
|
||||
|
||||
Iniciado = false;
|
||||
|
||||
EnviarDadosSerial(MontarProtocoloSensor(sCFG, _ID, Iniciado ? "1" : "0"));
|
||||
}
|
||||
|
||||
void ReiniciarAceleracaoArr() {
|
||||
for (int i = 0; i < leituras; i++) {
|
||||
RPM_arr[i] = -1.0;
|
||||
}
|
||||
}
|
||||
|
||||
void ReiniciarHallArr() {
|
||||
for (int i = 0; i < leituras; i++) {
|
||||
Hall_arr[i][0] = false;
|
||||
Hall_arr[i][1] = false;
|
||||
Hall_arr[i][2] = false;
|
||||
}
|
||||
}
|
||||
|
||||
void ReverterSentidoGiro() {
|
||||
_SentidoM = _SentidoM == Horario ? Antihorario : Horario;
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
TaskHandle_t RPMTaskHandle = NULL;
|
||||
static void RPMTaskWrapper(void *pvParameters) {
|
||||
Motor *motor = static_cast<Motor*>(pvParameters);
|
||||
motor->RPMTask();
|
||||
}
|
||||
|
||||
void RPMTask() {
|
||||
const int RpmMax = 650; // RPM Máximo aferir
|
||||
const float RelacaoPPR = (60 / PPR) * 1000; // Multiplicador do cálculo de RPM (período em ms)
|
||||
const float MenorPeriodo = RelacaoPPR / RpmMax; // Tempo mínimo de leitura
|
||||
unsigned long firstMilis = millis();
|
||||
int pulsos = 0;
|
||||
while (1)
|
||||
{
|
||||
if (!Conectado) {
|
||||
// Caso não esteja conectado, aguarda 1 segundo até a próxima verificação, liberando uso de CPU
|
||||
vTaskDelay(1000);
|
||||
continue;
|
||||
}
|
||||
|
||||
// Medir RPM apenas quando ocorrer um pulso no sensor HALL
|
||||
int LeituraHa = digitalRead(_pinoHLA);
|
||||
if (LeituraHa != ultimaLeituraHallA) {
|
||||
ultimaLeituraHallA = LeituraHa;
|
||||
pulsos++;
|
||||
|
||||
// Calcular o período em microssegundos
|
||||
unsigned long tempoAtual = micros();
|
||||
unsigned long periodoUs = tempoAtual - tempoAnterior;
|
||||
periodo = periodoUs / 1000.0; // Converte de us para ms (2300 us para 2,3 ms)
|
||||
|
||||
// Salva o valor do RPM anterior
|
||||
double RPM_A = RPM;
|
||||
|
||||
// Se o período entre pulsos for menor que o tempo mínimo entre pulsos em ms, significa que o sensor está em uma posição em que existe oscilação de leitura,
|
||||
// pois o RPM estaria acima do máximo, logo, assumir o valor de RPM aferido anteriormente
|
||||
if (periodo < MenorPeriodo) {
|
||||
RPM = RPM_A;
|
||||
}
|
||||
// Calcular RPM se houve variação de tempo entre o pulso atual e o pulso anterior
|
||||
else if (periodo != 0) {
|
||||
// RPM = 60 / (Pulsos por Revolução * Período em segundos)
|
||||
// A fórmula foi adaptada para otimizar processamento
|
||||
RPM = RelacaoPPR / periodo;
|
||||
}
|
||||
// Se não houve alteração no período, então o motor não se moveu
|
||||
else {
|
||||
RPM = 0;
|
||||
}
|
||||
|
||||
CalcularSentidoGiro(RPM);
|
||||
|
||||
// Reiniciar variáveis
|
||||
tempoAnterior = tempoAtual;
|
||||
}
|
||||
|
||||
CorrigirPotenciaMotor();
|
||||
|
||||
long intMillis = (millis() - firstMilis);
|
||||
|
||||
// A cada _TaxaAmostragem, enviar os dados para o software
|
||||
if (intMillis >= _TaxaAmostragem) {
|
||||
if (pulsos == 0) {
|
||||
RPM = 0;
|
||||
periodo = 0;
|
||||
CalcularSentidoGiro(RPM);
|
||||
}
|
||||
pulsos = 0;
|
||||
|
||||
double PotAtual = fmap(PotenciaAtual, RampaMin, RampaMax, 0.0, 100.0);
|
||||
EnviarDadosSerial(MontarProtocoloSensor(sRPM, _ID, MontarDadosProtocoloRPM(RPM, PotAtual, Aceleracao, _Sentido, Revertendo)));
|
||||
firstMilis = millis();
|
||||
}
|
||||
|
||||
// Aguarda metade do menor período possível entre leituras
|
||||
vTaskDelay(1);
|
||||
}
|
||||
}
|
||||
|
||||
void CalcularSentidoGiro(float _RPM) {
|
||||
if (_pinoHLA == -1 || _pinoHLB == -1 || _pinoHLC == -1) {
|
||||
CalculaAceleracao(_RPM);
|
||||
return;
|
||||
}
|
||||
|
||||
bool LeituraHa = ultimaLeituraHallA == 1;
|
||||
bool LeituraHb = digitalRead(_pinoHLB) == 1;
|
||||
bool LeituraHc = digitalRead(_pinoHLC) == 1;
|
||||
|
||||
for (int i = 1; i < leituras; i++) {
|
||||
Hall_arr[i - 1][0] = Hall_arr[i][0];
|
||||
Hall_arr[i - 1][1] = Hall_arr[i][1];
|
||||
Hall_arr[i - 1][2] = Hall_arr[i][2];
|
||||
}
|
||||
|
||||
Hall_arr[leituras - 1][0] = LeituraHa;
|
||||
Hall_arr[leituras - 1][1] = LeituraHb;
|
||||
Hall_arr[leituras - 1][2] = LeituraHc;
|
||||
|
||||
// Leituras dos sensores Hall nas leituras anteriores
|
||||
bool LeituraAnteriorHa = Hall_arr[leituras - 2][0];
|
||||
bool LeituraAnteriorHb = Hall_arr[leituras - 2][1];
|
||||
bool LeituraAnteriorHc = Hall_arr[leituras - 2][2];
|
||||
|
||||
|
||||
// Comparação das leituras atuais com as leituras anteriores
|
||||
if (LeituraHa == LeituraAnteriorHc && LeituraHc == LeituraAnteriorHa) {
|
||||
_Sentido = Antihorario;
|
||||
}
|
||||
else if (LeituraHa == LeituraAnteriorHb && LeituraHb == LeituraAnteriorHa) {
|
||||
_Sentido = Horario;
|
||||
}
|
||||
else {
|
||||
// Outros casos (não determinados)
|
||||
}
|
||||
|
||||
CalculaAceleracao(_RPM);
|
||||
|
||||
}
|
||||
|
||||
void CalculaAceleracao(float _RPM) {
|
||||
float RPM_total = _RPM;
|
||||
int Desconsiderar = 0;
|
||||
// Salvar as ultimas leituras
|
||||
for (int i = 1; i < leituras; i++) {
|
||||
RPM_arr[i - 1] = RPM_arr[i];
|
||||
|
||||
RPM_total += RPM_arr[i - 1] < 0 ? 0 : RPM_arr[i - 1];
|
||||
Desconsiderar += RPM_arr[i - 1] < 0 ? 1 : 0;
|
||||
}
|
||||
RPM_arr[leituras - 1] = _RPM;
|
||||
|
||||
float RPM_medio = RPM_total / (leituras - Desconsiderar);
|
||||
|
||||
AceleracaoA = Aceleracao;
|
||||
|
||||
if (_SentidoSP == Parado && _RPM == 0) {
|
||||
Aceleracao = Estavel;
|
||||
} else if (RPM_arr[leituras - 3] < (RPM_arr[leituras - 2] - _Margem) && RPM_arr[leituras - 2] < (_RPM - _Margem)) {
|
||||
Aceleracao = Acelerando;
|
||||
} else if (RPM_arr[leituras - 3] > (RPM_arr[leituras - 2] + _Margem) && RPM_arr[leituras - 2] > (_RPM + _Margem)) {
|
||||
Aceleracao = Desacelerando;
|
||||
} else {
|
||||
Aceleracao = Estavel;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void CorrigirPotenciaMotor() {
|
||||
if (_MalhaFechada && !Revertendo && _SentidoSP != Parado) {
|
||||
if (_pinoHLA > -1 && _pinoHLB > -1 && _pinoHLC > -1) {
|
||||
SentidoContrario = _Sentido != _SentidoSP;
|
||||
}
|
||||
|
||||
float _rpmA = RPM;
|
||||
if (SentidoContrario) {
|
||||
RPM = RPM * -1;
|
||||
}
|
||||
/*else if (Aceleracao == Desacelerando && AceleracaoA == Estavel) {
|
||||
RPM = 0;
|
||||
}*/
|
||||
_PID->Compute();
|
||||
//RPM = _rpmA;
|
||||
}
|
||||
}
|
||||
|
||||
TaskHandle_t RampaTaskHandle = NULL;
|
||||
static void RampaTaskWrapper(void *pvParameters) {
|
||||
Motor *motor = static_cast<Motor*>(pvParameters);
|
||||
motor->RampaTask();
|
||||
}
|
||||
|
||||
void RampaTask() {
|
||||
unsigned long firstMilis = millis();
|
||||
while (1)
|
||||
{
|
||||
if (!Conectado) {
|
||||
// Caso não esteja conectado, aguarda 1 segundo até a próxima verificação, liberando uso de CPU
|
||||
vTaskDelay(1000);
|
||||
continue;
|
||||
}
|
||||
|
||||
Atualizar();
|
||||
|
||||
long intMillis = (millis() - firstMilis);
|
||||
if (intMillis >= _TaxaAmostragem) {
|
||||
AferirTemperatura();
|
||||
firstMilis = millis();
|
||||
}
|
||||
|
||||
vTaskDelay(1);
|
||||
}
|
||||
}
|
||||
|
||||
void Atualizar() {
|
||||
|
||||
bool Travado = _PotMap > ZeroRampa && RPM_arr[leituras - 1] == 0 && RPM_arr[leituras - 2] > 0 && RPM_arr[leituras - 3] > 0 && _Sentido != Parado;
|
||||
|
||||
if (_pinoPWM > -1 && Travado) {
|
||||
_PotMap = ZeroRampa;
|
||||
ledcWrite(_canal, _PotMap);
|
||||
vTaskDelay(400);
|
||||
_PotMap = PotenciaAtual;
|
||||
}
|
||||
|
||||
if (_pinoDIR > -1) {
|
||||
Revertendo = _SentidoSP != Parado && _SentidoSP != _SentidoM;
|
||||
|
||||
if (Revertendo) {
|
||||
ledcWrite(_canal, ZeroRampa);
|
||||
vTaskDelay(400);
|
||||
|
||||
_SentidoM = _SentidoSP;
|
||||
|
||||
Revertendo = false;
|
||||
}
|
||||
|
||||
digitalWrite(_pinoDIR, _SentidoSP == Horario);
|
||||
|
||||
}
|
||||
if (_pinoBRK > -1) {
|
||||
digitalWrite(_pinoBRK, _Freio);
|
||||
}
|
||||
if (_pinoSTP > -1) {
|
||||
//digitalWrite(_pinoSTP, HIGH);
|
||||
}
|
||||
if (_pinoPWM > -1) {
|
||||
if (_SentidoSP == Parado) {
|
||||
_PotMap = ZeroRampa;
|
||||
}
|
||||
else {
|
||||
_PotMap = PotenciaAtual;
|
||||
}
|
||||
ledcWrite(_canal, _PotMap);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// TEMPERATURA E UMIDADE
|
||||
void AferirTemperatura() {
|
||||
if (_pinoTMP > -1) {
|
||||
double Vout, Rt = 0;
|
||||
double T, Tc, Tf, adc = 0;
|
||||
adc = analogRead(_pinoTMP);// VARIÁVEL QUE RECEBE A LEITURA DO NTC10K
|
||||
float adcValue = tempKalman->updateEstimate(adc);
|
||||
//CALCULOS PARA CONVERSÃO DA LEITURA RECEBIDA PELO ESP32 EM TEMPERATURA EM °C
|
||||
Vout = adcValue * Vs/adcMax;
|
||||
Rt = R1 * Vout / (Vs - Vout);
|
||||
T = 1/(1/To + log(Rt/Ro)/Beta);
|
||||
Tc = T - 273.15;
|
||||
Tf = Tc * 9 / 5 + 32;
|
||||
|
||||
EnviarDadosSerial(MontarProtocoloSensor(sTMP, _ID, MontarDadosProtocoloNTC10K(Tc)));
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
Motor M1("ET");
|
||||
Motor M2("EF");
|
||||
Motor M3("DT");
|
||||
Motor M4("DF");
|
||||
|
||||
void setup() {
|
||||
Serial.begin(_baudRate);
|
||||
|
||||
delay(10);
|
||||
|
||||
if (_pinoReleGeral > -1) {
|
||||
pinMode(_pinoReleGeral, OUTPUT);
|
||||
digitalWrite(_pinoReleGeral, LOW);
|
||||
}
|
||||
}
|
||||
|
||||
void loop() {
|
||||
if (Serial.available() > 3) {
|
||||
String Protocolo = "";
|
||||
F_Code _funcao = Nda;
|
||||
while (Serial.available()) {
|
||||
char Entrada = (char)Serial.read();
|
||||
if (Entrada == EndLine) {
|
||||
break;
|
||||
}
|
||||
Protocolo += Entrada;
|
||||
if (Protocolo.length() == 3) {
|
||||
if (_funcao == Nda) {
|
||||
_funcao = (F_Code)((String)Protocolo[0] + (String)Protocolo[1] + (String)Protocolo[2]).toInt();
|
||||
Protocolo = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
EnviarDadosSerial("OK");
|
||||
|
||||
if (_funcao == Chk) {
|
||||
EnviarDadosSerial(MontarProtocoloVerificacao(D_Code));
|
||||
}
|
||||
else if (_funcao == Cfg) {
|
||||
String ID = ((String)Protocolo[0] + (String)Protocolo[1]);
|
||||
bool Conectar = (String)Protocolo[3] == "1";
|
||||
if (ID == "MD") {
|
||||
_TaxaAmostragem = ((String)Protocolo[5] + (String)Protocolo[6] + (String)Protocolo[7] + (String)Protocolo[8] + (String)Protocolo[9]).toInt();
|
||||
int pinoReleGeral = ((String)Protocolo[11] + (String)Protocolo[12]).toInt();
|
||||
int _RampaMin = ((String)Protocolo[14] + (String)Protocolo[15] + (String)Protocolo[16] + (String)Protocolo[17]).toInt();
|
||||
int _RampaMax = ((String)Protocolo[19] + (String)Protocolo[20] + (String)Protocolo[21] + (String)Protocolo[22]).toInt();
|
||||
int _PPR = ((String)Protocolo[24] + (String)Protocolo[25] + (String)Protocolo[26]).toInt();
|
||||
|
||||
RampaMin = _RampaMin;
|
||||
RampaMax = _RampaMax;
|
||||
//PPR = _PPR;
|
||||
|
||||
if (pinoReleGeral > -1) {
|
||||
pinMode(_pinoReleGeral, INPUT);
|
||||
_pinoReleGeral = pinoReleGeral;
|
||||
pinMode(_pinoReleGeral, OUTPUT);
|
||||
digitalWrite(_pinoReleGeral, Conectar);
|
||||
}
|
||||
|
||||
vTaskDelay(pdMS_TO_TICKS(100));
|
||||
Conectado = Conectar;
|
||||
EnviarDadosSerial(MontarProtocoloSensor(sCFG, "MD", Conectado ? "1" : "0"));
|
||||
}
|
||||
else {
|
||||
int canal = ((String)Protocolo[5]).toInt();
|
||||
bool _foc = (String)Protocolo[7] == "1";
|
||||
bool motor_ativado = (String)Protocolo[9] == "1";
|
||||
double _Kp = ((String)Protocolo[11] + (String)Protocolo[12] + (String)Protocolo[13] + (String)Protocolo[14] + (String)Protocolo[15]).toDouble();
|
||||
double _Ki = ((String)Protocolo[17] + (String)Protocolo[18] + (String)Protocolo[19] + (String)Protocolo[20] + (String)Protocolo[21]).toDouble();
|
||||
double _Kd = ((String)Protocolo[23] + (String)Protocolo[24] + (String)Protocolo[25] + (String)Protocolo[26] + (String)Protocolo[27]).toDouble();
|
||||
int pwm = ((String)Protocolo[29] + (String)Protocolo[30]).toInt();
|
||||
int dir = ((String)Protocolo[32] + (String)Protocolo[33]).toInt();
|
||||
int brk = ((String)Protocolo[35] + (String)Protocolo[36]).toInt();
|
||||
int stp = ((String)Protocolo[38] + (String)Protocolo[39]).toInt();
|
||||
int hallA = ((String)Protocolo[41] + (String)Protocolo[42]).toInt();
|
||||
int hallB = ((String)Protocolo[44] + (String)Protocolo[45]).toInt();
|
||||
int hallC = ((String)Protocolo[47] + (String)Protocolo[48]).toInt();
|
||||
int tmp = ((String)Protocolo[50] + (String)Protocolo[51]).toInt();
|
||||
|
||||
Motor* _motor = ID == "ET" ? &M1 : ID == "EF" ? &M2 : ID == "DT" ? &M3 : &M4;
|
||||
if (motor_ativado) {
|
||||
if (Conectar) {
|
||||
_motor->_canal = canal;
|
||||
_motor->_pinoPWM = pwm;
|
||||
_motor->_pinoDIR = dir;
|
||||
_motor->_pinoBRK = brk;
|
||||
_motor->_pinoSTP = stp;
|
||||
_motor->_pinoHLA = hallA;
|
||||
_motor->_pinoHLB = hallB;
|
||||
_motor->_pinoHLC = hallC;
|
||||
_motor->_pinoTMP = tmp;
|
||||
_motor->_MalhaFechada = _foc;
|
||||
_motor->_Kp = _Kp;
|
||||
_motor->_Ki = _Ki;
|
||||
_motor->_Kd = _Kd;
|
||||
|
||||
_motor->Inicializar();
|
||||
}
|
||||
else {
|
||||
_motor->Desligar();
|
||||
}
|
||||
vTaskDelay(pdMS_TO_TICKS(500));
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (_funcao == Cmd) {
|
||||
//canal;potencia;sentido;rampa;precisao;rpm
|
||||
//0;000;0;000;000;000
|
||||
String ID = ((String)Protocolo[0] + (String)Protocolo[1]);
|
||||
|
||||
Motor* _motor = ID == "ET" ? &M1 : ID == "EF" ? &M2 : ID == "DT" ? &M3 : &M4;
|
||||
|
||||
_motor->_SentidoSP = (Sentido)((String)Protocolo[3]).toInt();
|
||||
_motor->_RPM_SP = ((String)Protocolo[5] + (String)Protocolo[6] + (String)Protocolo[7]).toInt();
|
||||
_motor->_MalhaFechada = (String)Protocolo[9] == "1";
|
||||
_motor->ReiniciarAceleracaoArr();
|
||||
|
||||
bool reverter = ((String)Protocolo[11]) == "1";
|
||||
if (reverter) {
|
||||
_motor->ReverterSentidoGiro();
|
||||
}
|
||||
}
|
||||
else if (_funcao == Tst) {
|
||||
String ID = ((String)Protocolo[0] +(String)Protocolo[1]);
|
||||
|
||||
Motor* _motor = ID == "ET" ? &M1 : ID == "EF" ? &M2 : ID == "DT" ? &M3 : &M4;
|
||||
|
||||
bool EmTeste = _motor->Testando;
|
||||
if (!EmTeste) {
|
||||
//_motor->Testar();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
// Use IntelliSense to learn about possible attributes.
|
||||
// Hover to view descriptions of existing attributes.
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,560 @@
|
|||
#include "C:\ZendionInc\agrobot_base\Firmware\Modulos\SerialService.h"
|
||||
#include "C:\ZendionInc\agrobot_base\Firmware\Modulos\utils.h"
|
||||
#include <PID_v1.h>
|
||||
#define D_Code Mov
|
||||
|
||||
#define _pinoLED RGB_BUILTIN
|
||||
int _pinoReleGeral = -1;
|
||||
|
||||
long _baudRate = 115200;
|
||||
|
||||
bool Conectado = false;
|
||||
|
||||
int _TaxaAmostragem = 500;
|
||||
const int PPR = 22; // Pulsos por revolução
|
||||
|
||||
int RampaMin = 0;
|
||||
int ZeroRampa = 0;
|
||||
int RampaMax = 1023;
|
||||
|
||||
class Motor {
|
||||
public:
|
||||
// Construtor
|
||||
Motor(String desc) {
|
||||
_ID = desc;
|
||||
}
|
||||
|
||||
// Definições
|
||||
String _ID;
|
||||
int _canal;
|
||||
int _pinoPWM;
|
||||
int _pinoDIR;
|
||||
int _pinoBRK;
|
||||
int _pinoSTP;
|
||||
int _pinoHLA;
|
||||
int _pinoHLB;
|
||||
int _pinoHLC;
|
||||
|
||||
double _Kp;
|
||||
double _Ki;
|
||||
double _Kd;
|
||||
PID* _PID = nullptr;
|
||||
|
||||
bool Iniciado = false;
|
||||
bool Testando = false;
|
||||
bool Revertendo = false;
|
||||
bool SentidoContrario = false;
|
||||
StatusMotor Aceleracao = Estavel;
|
||||
StatusMotor AceleracaoA = Estavel;
|
||||
|
||||
// Consumo
|
||||
const int leituras = 5;
|
||||
volatile float RPM_arr[5];
|
||||
volatile bool Hall_arr[5][3];
|
||||
double RPM;
|
||||
double PotenciaAtual;
|
||||
volatile int ultimaLeituraHallA = 0;
|
||||
volatile int ultimaLeituraHallB = 0;
|
||||
volatile int ultimaLeituraHallC = 0;
|
||||
volatile unsigned int tempoAnterior = 0;
|
||||
volatile float periodo = 0;
|
||||
|
||||
// Entrada de dados
|
||||
bool _MalhaFechada;
|
||||
int _PotMap;
|
||||
double _RPM_SP;
|
||||
Sentido _SentidoSP = Parado;
|
||||
Sentido _SentidoM = Parado;
|
||||
Sentido _Sentido = Parado;
|
||||
int _US_Addr;
|
||||
bool _Freio = false;
|
||||
int _Margem = 2;
|
||||
|
||||
void Inicializar() {
|
||||
if (Iniciado) {
|
||||
EnviarDadosSerial(_ID + " ja inicializado");
|
||||
EnviarDadosSerial(MontarProtocoloSensor(sCFG, _ID, Iniciado ? "1" : "0"));
|
||||
return;
|
||||
}
|
||||
|
||||
if (_pinoPWM > -1) {
|
||||
ledcSetup(_canal, 1000, 10);
|
||||
ledcAttachPin(_pinoPWM, _canal);
|
||||
PotenciaAtual = ZeroRampa;
|
||||
_PotMap = PotenciaAtual;
|
||||
_RPM_SP = 0;
|
||||
ledcWrite(_canal, _PotMap);
|
||||
}
|
||||
if (_pinoDIR > -1) {
|
||||
pinMode(_pinoDIR, OUTPUT);
|
||||
digitalWrite(_pinoDIR, LOW);
|
||||
|
||||
_SentidoM = Parado;
|
||||
}
|
||||
if (_pinoBRK > -1) {
|
||||
pinMode(_pinoBRK, OUTPUT);
|
||||
digitalWrite(_pinoBRK, LOW);
|
||||
}
|
||||
if (_pinoSTP > -1) {
|
||||
pinMode(_pinoSTP, OUTPUT);
|
||||
digitalWrite(_pinoSTP, HIGH);
|
||||
}
|
||||
if (_pinoHLA > -1) {
|
||||
pinMode(_pinoHLA, INPUT);
|
||||
ultimaLeituraHallA = digitalRead(_pinoHLA);
|
||||
RPM = 0;
|
||||
periodo = 0;
|
||||
tempoAnterior = 0;
|
||||
|
||||
xTaskCreatePinnedToCore(&Motor::RPMTaskWrapper, "RPMTask", 15000, this, 25 - _canal, &RPMTaskHandle, tskNO_AFFINITY);
|
||||
|
||||
ReiniciarAceleracaoArr();
|
||||
ReiniciarHallArr();
|
||||
|
||||
_PID = new PID(&RPM, &PotenciaAtual, &_RPM_SP, _Kp, _Ki, _Kd, DIRECT);
|
||||
_PID->SetOutputLimits(RampaMin, RampaMax);
|
||||
_PID->SetMode(AUTOMATIC);
|
||||
}
|
||||
if (_pinoHLB > -1) {
|
||||
pinMode(_pinoHLB, INPUT);
|
||||
ultimaLeituraHallB = digitalRead(_pinoHLB);
|
||||
}
|
||||
if (_pinoHLC > -1) {
|
||||
pinMode(_pinoHLC, INPUT);
|
||||
ultimaLeituraHallC = digitalRead(_pinoHLC);
|
||||
}
|
||||
|
||||
|
||||
xTaskCreatePinnedToCore(&Motor::RampaTaskWrapper, "RampaTask", 5000, this, 21 - _canal + 4, &RampaTaskHandle, tskNO_AFFINITY);
|
||||
|
||||
EnviarDadosSerial(_ID + " Iniciado");
|
||||
|
||||
Iniciado = true;
|
||||
|
||||
EnviarDadosSerial(MontarProtocoloSensor(sCFG, _ID, Iniciado ? "1" : "0"));
|
||||
}
|
||||
|
||||
void Desligar() {
|
||||
if (!Iniciado) {
|
||||
EnviarDadosSerial(_ID + " nao esta inicializado");
|
||||
EnviarDadosSerial(MontarProtocoloSensor(sCFG, _ID, Iniciado ? "1" : "0"));
|
||||
return;
|
||||
}
|
||||
|
||||
// Parar a execução das tarefas
|
||||
vTaskDelete(RampaTaskHandle);
|
||||
if (_pinoHLA > -1) {
|
||||
vTaskDelete(RPMTaskHandle);
|
||||
}
|
||||
|
||||
// Desanexar o canal PWM
|
||||
if (_pinoPWM > -1) {
|
||||
ledcDetachPin(_pinoPWM);
|
||||
}
|
||||
|
||||
// Redefinir as configurações para os valores iniciais
|
||||
pinMode(_pinoPWM, INPUT);
|
||||
pinMode(_pinoDIR, INPUT);
|
||||
pinMode(_pinoBRK, INPUT);
|
||||
pinMode(_pinoSTP, INPUT);
|
||||
pinMode(_pinoHLA, INPUT);
|
||||
pinMode(_pinoHLB, INPUT);
|
||||
pinMode(_pinoHLC, INPUT);
|
||||
|
||||
// Outras redefinições de variáveis de estado, se necessário
|
||||
delete _PID;
|
||||
|
||||
EnviarDadosSerial(_ID + " Desligado");
|
||||
|
||||
Iniciado = false;
|
||||
|
||||
EnviarDadosSerial(MontarProtocoloSensor(sCFG, _ID, Iniciado ? "1" : "0"));
|
||||
}
|
||||
|
||||
void ReiniciarAceleracaoArr() {
|
||||
for (int i = 0; i < leituras; i++) {
|
||||
RPM_arr[i] = -1.0;
|
||||
}
|
||||
}
|
||||
|
||||
void ReiniciarHallArr() {
|
||||
for (int i = 0; i < leituras; i++) {
|
||||
Hall_arr[i][0] = false;
|
||||
Hall_arr[i][1] = false;
|
||||
Hall_arr[i][2] = false;
|
||||
}
|
||||
}
|
||||
|
||||
void ReverterSentidoGiro() {
|
||||
_SentidoM = _SentidoM == Horario ? Antihorario : Horario;
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
TaskHandle_t RPMTaskHandle = NULL;
|
||||
static void RPMTaskWrapper(void *pvParameters) {
|
||||
Motor *motor = static_cast<Motor*>(pvParameters);
|
||||
motor->RPMTask();
|
||||
}
|
||||
|
||||
void RPMTask() {
|
||||
const int RpmMax = 650; // RPM Máximo aferir
|
||||
const float RelacaoPPR = (60 / PPR) * 1000; // Multiplicador do cálculo de RPM (período em ms)
|
||||
const float MenorPeriodo = RelacaoPPR / RpmMax; // Tempo mínimo de leitura
|
||||
unsigned long firstMilis = millis();
|
||||
int pulsos = 0;
|
||||
while (1)
|
||||
{
|
||||
if (!Conectado) {
|
||||
// Caso não esteja conectado, aguarda 1 segundo até a próxima verificação, liberando uso de CPU
|
||||
vTaskDelay(1000);
|
||||
continue;
|
||||
}
|
||||
|
||||
// Medir RPM apenas quando ocorrer um pulso no sensor HALL
|
||||
bool LeituraHa = digitalRead(_pinoHLA) == 1;
|
||||
if (LeituraHa != ultimaLeituraHallA) {
|
||||
ultimaLeituraHallA = LeituraHa;
|
||||
pulsos++;
|
||||
|
||||
// Calcular o período em microssegundos
|
||||
unsigned long tempoAtual = micros();
|
||||
unsigned long periodoUs = tempoAtual - tempoAnterior;
|
||||
periodo = periodoUs / 1000.0; // Converte de us para ms (2300 us para 2,3 ms)
|
||||
|
||||
// Salva o valor do RPM anterior
|
||||
double RPM_A = RPM;
|
||||
|
||||
// Se o período entre pulsos for menor que o tempo mínimo entre pulsos em ms, significa que o sensor está em uma posição em que existe oscilação de leitura,
|
||||
// pois o RPM estaria acima do máximo, logo, assumir o valor de RPM aferido anteriormente
|
||||
if (periodo < MenorPeriodo) {
|
||||
RPM = RPM_A;
|
||||
}
|
||||
// Calcular RPM se houve variação de tempo entre o pulso atual e o pulso anterior
|
||||
else if (periodo != 0) {
|
||||
// RPM = 60 / (Pulsos por Revolução * Período em segundos)
|
||||
// A fórmula foi adaptada para otimizar processamento
|
||||
RPM = RelacaoPPR / periodo;
|
||||
}
|
||||
// Se não houve alteração no período, então o motor não se moveu
|
||||
else {
|
||||
RPM = 0;
|
||||
}
|
||||
|
||||
CalcularSentidoGiro(RPM);
|
||||
|
||||
// Reiniciar variáveis
|
||||
tempoAnterior = tempoAtual;
|
||||
}
|
||||
|
||||
CorrigirPotenciaMotor();
|
||||
|
||||
long intMillis = (millis() - firstMilis);
|
||||
|
||||
// A cada _TaxaAmostragem, enviar os dados para o software
|
||||
if (intMillis >= _TaxaAmostragem) {
|
||||
if (pulsos == 0) {
|
||||
RPM = 0;
|
||||
periodo = 0;
|
||||
CalcularSentidoGiro(RPM);
|
||||
}
|
||||
pulsos = 0;
|
||||
|
||||
double PotAtual = fmap(PotenciaAtual, RampaMin, RampaMax, 0.0, 100.0);
|
||||
EnviarDadosSerial(MontarProtocoloSensor(sRPM, _ID, MontarDadosProtocoloRPM(RPM, PotAtual, Aceleracao, _Sentido, Revertendo)));
|
||||
firstMilis = millis();
|
||||
}
|
||||
|
||||
// Aguarda metade do menor período possível entre leituras
|
||||
vTaskDelay(1);
|
||||
}
|
||||
}
|
||||
|
||||
void CalcularSentidoGiro(float _RPM) {
|
||||
if (_pinoHLA == -1 || _pinoHLB == -1 || _pinoHLC == -1) {
|
||||
CalculaAceleracao(_RPM);
|
||||
return;
|
||||
}
|
||||
|
||||
bool LeituraHa = ultimaLeituraHallA == 1;
|
||||
bool LeituraHb = digitalRead(_pinoHLB) == 1;
|
||||
bool LeituraHc = digitalRead(_pinoHLC) == 1;
|
||||
|
||||
for (int i = 1; i < leituras; i++) {
|
||||
Hall_arr[i - 1][0] = Hall_arr[i][0];
|
||||
Hall_arr[i - 1][1] = Hall_arr[i][1];
|
||||
Hall_arr[i - 1][2] = Hall_arr[i][2];
|
||||
}
|
||||
|
||||
Hall_arr[leituras - 1][0] = LeituraHa;
|
||||
Hall_arr[leituras - 1][1] = LeituraHb;
|
||||
Hall_arr[leituras - 1][2] = LeituraHc;
|
||||
|
||||
// Leituras dos sensores Hall nas leituras anteriores
|
||||
bool LeituraAnteriorHa = Hall_arr[leituras - 2][0];
|
||||
bool LeituraAnteriorHb = Hall_arr[leituras - 2][1];
|
||||
bool LeituraAnteriorHc = Hall_arr[leituras - 2][2];
|
||||
|
||||
|
||||
// Comparação das leituras atuais com as leituras anteriores
|
||||
if (LeituraHa == LeituraAnteriorHc && LeituraHc == LeituraAnteriorHa) {
|
||||
_Sentido = Antihorario;
|
||||
}
|
||||
else if (LeituraHa == LeituraAnteriorHb && LeituraHb == LeituraAnteriorHa) {
|
||||
_Sentido = Horario;
|
||||
}
|
||||
else {
|
||||
// Outros casos (não determinados)
|
||||
}
|
||||
|
||||
CalculaAceleracao(_RPM);
|
||||
|
||||
}
|
||||
|
||||
void CalculaAceleracao(float _RPM) {
|
||||
float RPM_total = _RPM;
|
||||
int Desconsiderar = 0;
|
||||
// Salvar as ultimas leituras
|
||||
for (int i = 1; i < leituras; i++) {
|
||||
RPM_arr[i - 1] = RPM_arr[i];
|
||||
|
||||
RPM_total += RPM_arr[i - 1] < 0 ? 0 : RPM_arr[i - 1];
|
||||
Desconsiderar += RPM_arr[i - 1] < 0 ? 1 : 0;
|
||||
}
|
||||
RPM_arr[leituras - 1] = _RPM;
|
||||
|
||||
float RPM_medio = RPM_total / (leituras - Desconsiderar);
|
||||
|
||||
AceleracaoA = Aceleracao;
|
||||
|
||||
if (_SentidoSP == Parado && _RPM == 0) {
|
||||
Aceleracao = Estavel;
|
||||
} else if (RPM_arr[leituras - 3] < (RPM_arr[leituras - 2] - _Margem) && RPM_arr[leituras - 2] < (_RPM - _Margem)) {
|
||||
Aceleracao = Acelerando;
|
||||
} else if (RPM_arr[leituras - 3] > (RPM_arr[leituras - 2] + _Margem) && RPM_arr[leituras - 2] > (_RPM + _Margem)) {
|
||||
Aceleracao = Desacelerando;
|
||||
} else {
|
||||
Aceleracao = Estavel;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void CorrigirPotenciaMotor() {
|
||||
if (_MalhaFechada && !Revertendo && _SentidoSP != Parado) {
|
||||
if (_pinoHLA > -1 && _pinoHLB > -1 && _pinoHLC > -1) {
|
||||
SentidoContrario = _Sentido != _SentidoSP;
|
||||
}
|
||||
|
||||
float _rpmA = RPM;
|
||||
if (SentidoContrario) {
|
||||
RPM = RPM * -1;
|
||||
}
|
||||
/*else if (Aceleracao == Desacelerando && AceleracaoA == Estavel) {
|
||||
RPM = 0;
|
||||
}*/
|
||||
_PID->Compute();
|
||||
//RPM = _rpmA;
|
||||
}
|
||||
}
|
||||
|
||||
TaskHandle_t RampaTaskHandle = NULL;
|
||||
static void RampaTaskWrapper(void *pvParameters) {
|
||||
Motor *motor = static_cast<Motor*>(pvParameters);
|
||||
motor->RampaTask();
|
||||
}
|
||||
|
||||
void RampaTask() {
|
||||
unsigned long firstMilis = millis();
|
||||
while (1)
|
||||
{
|
||||
if (!Conectado) {
|
||||
// Caso não esteja conectado, aguarda 1 segundo até a próxima verificação, liberando uso de CPU
|
||||
vTaskDelay(1000);
|
||||
continue;
|
||||
}
|
||||
|
||||
Atualizar();
|
||||
|
||||
vTaskDelay(1);
|
||||
}
|
||||
}
|
||||
|
||||
void Atualizar() {
|
||||
|
||||
bool Travado = _PotMap > ZeroRampa && RPM_arr[leituras - 1] == 0 && RPM_arr[leituras - 2] > 0 && RPM_arr[leituras - 3] > 0 && _Sentido != Parado;
|
||||
|
||||
if (_pinoPWM > -1 && Travado) {
|
||||
_PotMap = ZeroRampa;
|
||||
ledcWrite(_canal, _PotMap);
|
||||
vTaskDelay(400);
|
||||
_PotMap = PotenciaAtual;
|
||||
}
|
||||
|
||||
if (_pinoDIR > -1) {
|
||||
Revertendo = _SentidoSP != Parado && _SentidoSP != _SentidoM;
|
||||
|
||||
if (Revertendo) {
|
||||
ledcWrite(_canal, ZeroRampa);
|
||||
vTaskDelay(400);
|
||||
|
||||
_SentidoM = _SentidoSP;
|
||||
|
||||
Revertendo = false;
|
||||
}
|
||||
|
||||
digitalWrite(_pinoDIR, _SentidoSP == Horario);
|
||||
|
||||
}
|
||||
if (_pinoBRK > -1) {
|
||||
digitalWrite(_pinoBRK, _Freio);
|
||||
}
|
||||
if (_pinoSTP > -1) {
|
||||
//digitalWrite(_pinoSTP, HIGH);
|
||||
}
|
||||
if (_pinoPWM > -1) {
|
||||
if (_SentidoSP == Parado) {
|
||||
_PotMap = ZeroRampa;
|
||||
}
|
||||
else {
|
||||
_PotMap = PotenciaAtual;
|
||||
}
|
||||
ledcWrite(_canal, _PotMap);
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
Motor M1("ET");
|
||||
Motor M2("EF");
|
||||
Motor M3("DT");
|
||||
Motor M4("DF");
|
||||
|
||||
void setup() {
|
||||
Serial.begin(_baudRate);
|
||||
|
||||
delay(10);
|
||||
|
||||
if (_pinoReleGeral > -1) {
|
||||
pinMode(_pinoReleGeral, OUTPUT);
|
||||
digitalWrite(_pinoReleGeral, LOW);
|
||||
}
|
||||
}
|
||||
|
||||
void loop() {
|
||||
if (Serial.available() > 3) {
|
||||
String Protocolo = "";
|
||||
F_Code _funcao = Nda;
|
||||
while (Serial.available()) {
|
||||
char Entrada = (char)Serial.read();
|
||||
if (Entrada == EndLine) {
|
||||
break;
|
||||
}
|
||||
Protocolo += Entrada;
|
||||
if (Protocolo.length() == 3) {
|
||||
if (_funcao == Nda) {
|
||||
_funcao = (F_Code)((String)Protocolo[0] + (String)Protocolo[1] + (String)Protocolo[2]).toInt();
|
||||
Protocolo = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
EnviarDadosSerial("OK");
|
||||
|
||||
if (_funcao == Chk) {
|
||||
EnviarDadosSerial(MontarProtocoloVerificacao(D_Code));
|
||||
}
|
||||
else if (_funcao == Cfg) {
|
||||
String ID = ((String)Protocolo[0] + (String)Protocolo[1]);
|
||||
bool Conectar = (String)Protocolo[3] == "1";
|
||||
if (ID == "MD") {
|
||||
_TaxaAmostragem = ((String)Protocolo[5] + (String)Protocolo[6] + (String)Protocolo[7] + (String)Protocolo[8] + (String)Protocolo[9]).toInt();
|
||||
int pinoReleGeral = ((String)Protocolo[11] + (String)Protocolo[12]).toInt();
|
||||
int _RampaMin = ((String)Protocolo[14] + (String)Protocolo[15] + (String)Protocolo[16] + (String)Protocolo[17]).toInt();
|
||||
int _RampaMax = ((String)Protocolo[19] + (String)Protocolo[20] + (String)Protocolo[21] + (String)Protocolo[22]).toInt();
|
||||
int _PPR = ((String)Protocolo[24] + (String)Protocolo[25] + (String)Protocolo[26]).toInt();
|
||||
|
||||
RampaMin = _RampaMin;
|
||||
RampaMax = _RampaMax;
|
||||
//PPR = _PPR;
|
||||
|
||||
if (pinoReleGeral > -1) {
|
||||
pinMode(_pinoReleGeral, INPUT);
|
||||
_pinoReleGeral = pinoReleGeral;
|
||||
pinMode(_pinoReleGeral, OUTPUT);
|
||||
digitalWrite(_pinoReleGeral, Conectar);
|
||||
}
|
||||
|
||||
vTaskDelay(pdMS_TO_TICKS(100));
|
||||
Conectado = Conectar;
|
||||
EnviarDadosSerial(MontarProtocoloSensor(sCFG, "MD", Conectado ? "1" : "0"));
|
||||
}
|
||||
else {
|
||||
int canal = ((String)Protocolo[5]).toInt();
|
||||
bool _foc = (String)Protocolo[7] == "1";
|
||||
bool motor_ativado = (String)Protocolo[9] == "1";
|
||||
double _Kp = ((String)Protocolo[11] + (String)Protocolo[12] + (String)Protocolo[13] + (String)Protocolo[14] + (String)Protocolo[15]).toDouble();
|
||||
double _Ki = ((String)Protocolo[17] + (String)Protocolo[18] + (String)Protocolo[19] + (String)Protocolo[20] + (String)Protocolo[21]).toDouble();
|
||||
double _Kd = ((String)Protocolo[23] + (String)Protocolo[24] + (String)Protocolo[25] + (String)Protocolo[26] + (String)Protocolo[27]).toDouble();
|
||||
int pwm = ((String)Protocolo[29] + (String)Protocolo[30]).toInt();
|
||||
int dir = ((String)Protocolo[32] + (String)Protocolo[33]).toInt();
|
||||
int brk = ((String)Protocolo[35] + (String)Protocolo[36]).toInt();
|
||||
int stp = ((String)Protocolo[38] + (String)Protocolo[39]).toInt();
|
||||
int hallA = ((String)Protocolo[41] + (String)Protocolo[42]).toInt();
|
||||
int hallB = ((String)Protocolo[44] + (String)Protocolo[45]).toInt();
|
||||
int hallC = ((String)Protocolo[47] + (String)Protocolo[48]).toInt();
|
||||
|
||||
Motor* _motor = ID == "ET" ? &M1 : ID == "EF" ? &M2 : ID == "DT" ? &M3 : &M4;
|
||||
if (motor_ativado) {
|
||||
if (Conectar) {
|
||||
_motor->_canal = canal;
|
||||
_motor->_pinoPWM = pwm;
|
||||
_motor->_pinoDIR = dir;
|
||||
_motor->_pinoBRK = brk;
|
||||
_motor->_pinoSTP = stp;
|
||||
_motor->_pinoHLA = hallA;
|
||||
_motor->_pinoHLB = hallB;
|
||||
_motor->_pinoHLC = hallC;
|
||||
_motor->_MalhaFechada = _foc;
|
||||
_motor->_Kp = _Kp;
|
||||
_motor->_Ki = _Ki;
|
||||
_motor->_Kd = _Kd;
|
||||
|
||||
_motor->Inicializar();
|
||||
}
|
||||
else {
|
||||
_motor->Desligar();
|
||||
}
|
||||
vTaskDelay(pdMS_TO_TICKS(500));
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (_funcao == Cmd) {
|
||||
//canal;potencia;sentido;rampa;precisao;rpm
|
||||
//0;000;0;000;000;000
|
||||
String ID = ((String)Protocolo[0] + (String)Protocolo[1]);
|
||||
|
||||
Motor* _motor = ID == "ET" ? &M1 : ID == "EF" ? &M2 : ID == "DT" ? &M3 : &M4;
|
||||
|
||||
_motor->_SentidoSP = (Sentido)((String)Protocolo[3]).toInt();
|
||||
_motor->_RPM_SP = ((String)Protocolo[5] + (String)Protocolo[6] + (String)Protocolo[7]).toInt();
|
||||
_motor->_MalhaFechada = (String)Protocolo[9] == "1";
|
||||
_motor->ReiniciarAceleracaoArr();
|
||||
|
||||
bool reverter = ((String)Protocolo[11]) == "1";
|
||||
if (reverter) {
|
||||
_motor->ReverterSentidoGiro();
|
||||
}
|
||||
}
|
||||
else if (_funcao == Tst) {
|
||||
String ID = ((String)Protocolo[0] +(String)Protocolo[1]);
|
||||
|
||||
Motor* _motor = ID == "ET" ? &M1 : ID == "EF" ? &M2 : ID == "DT" ? &M3 : &M4;
|
||||
|
||||
bool EmTeste = _motor->Testando;
|
||||
if (!EmTeste) {
|
||||
//_motor->Testar();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
// Use IntelliSense to learn about possible attributes.
|
||||
// Hover to view descriptions of existing attributes.
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,198 @@
|
|||
#include "C:\ZendionInc\agrobot_base\Firmware\Modulos\SerialService.h"
|
||||
#define D_Code Sen
|
||||
|
||||
#define _pinoLED RGB_BUILTIN
|
||||
|
||||
long _baudRate = 115200;
|
||||
|
||||
bool Conectado = false;
|
||||
|
||||
int _TaxaAmostragem;
|
||||
int FrequenciaMaxima = 10000;
|
||||
|
||||
|
||||
class SensorTemperatura {
|
||||
public:
|
||||
SensorTemperatura(String desc) {
|
||||
_ID = desc;
|
||||
}
|
||||
|
||||
// Definições
|
||||
String _ID;
|
||||
S_Code _componente = sTMP;
|
||||
int _pino;
|
||||
int _delayAmostragem;
|
||||
int _prioridade;
|
||||
|
||||
bool Iniciado = false;
|
||||
|
||||
void Inicializar() {
|
||||
if (Iniciado) {
|
||||
EnviarDadosSerial(_ID + " ja inicializado");
|
||||
EnviarDadosSerial(MontarProtocoloSensor(sCFG, _ID, Iniciado ? "1" : "0"));
|
||||
return;
|
||||
}
|
||||
|
||||
if (_pino > -1) {
|
||||
pinMode(_pino, INPUT);
|
||||
}
|
||||
|
||||
xTaskCreatePinnedToCore(&SensorTemperatura::STTaskWrapper, "STTask", 5000, this, _prioridade, &STTaskHandle, tskNO_AFFINITY);
|
||||
|
||||
EnviarDadosSerial(_ID + " Iniciado");
|
||||
|
||||
Iniciado = true;
|
||||
|
||||
EnviarDadosSerial(MontarProtocoloSensor(sCFG, _ID, Iniciado ? "1" : "0"));
|
||||
}
|
||||
|
||||
void Desligar() {
|
||||
if (!Iniciado) {
|
||||
EnviarDadosSerial(_ID + " nao esta inicializado");
|
||||
EnviarDadosSerial(MontarProtocoloSensor(sCFG, _ID, Iniciado ? "1" : "0"));
|
||||
return;
|
||||
}
|
||||
|
||||
// Parar a execução das tarefas
|
||||
vTaskDelete(STTaskHandle);
|
||||
|
||||
// Redefinir as configurações para os valores iniciais
|
||||
pinMode(_pino, INPUT);
|
||||
|
||||
EnviarDadosSerial(_ID + " Desligado");
|
||||
|
||||
Iniciado = false;
|
||||
|
||||
EnviarDadosSerial(MontarProtocoloSensor(sCFG, _ID, Iniciado ? "1" : "0"));
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
// Variáveis
|
||||
double Vs = 3.3; // TENSÃO DE SAIDA DO ESP32
|
||||
double R1 = 10000; //RESISTOR UTILIZADO NO DIVISOR DE TENSÃO
|
||||
double Beta = 3950; // VALOR DE BETA
|
||||
double To = 298.15; // VALOR EM KELVIN REFERENTE A 25° CELSIUS
|
||||
double Ro = 10000;
|
||||
double adcMax = 4095.0;
|
||||
|
||||
TaskHandle_t STTaskHandle = NULL;
|
||||
static void STTaskWrapper(void *pvParameters) {
|
||||
SensorTemperatura *sensor = static_cast<SensorTemperatura*>(pvParameters);
|
||||
sensor->STTask();
|
||||
}
|
||||
|
||||
void STTask() {
|
||||
unsigned long firstMilis = millis();
|
||||
while (1)
|
||||
{
|
||||
if (!Conectado) {
|
||||
// Caso não esteja conectado, aguarda 1 segundo até a próxima verificação, liberando uso de CPU
|
||||
vTaskDelay(1000);
|
||||
continue;
|
||||
}
|
||||
|
||||
long intMillis = (millis() - firstMilis);
|
||||
|
||||
// A cada _TaxaAmostragem, enviar os dados para o software
|
||||
if (intMillis >= (_TaxaAmostragem + _delayAmostragem)) {
|
||||
AferirTemperatura();
|
||||
|
||||
firstMilis = millis();
|
||||
}
|
||||
|
||||
// Aguarda metade do menor período possível entre leituras
|
||||
vTaskDelay(1);
|
||||
}
|
||||
}
|
||||
|
||||
void AferirTemperatura() {
|
||||
double Vout, Rt = 0;
|
||||
double T, Tc, Tf, adc = 0;
|
||||
adc = analogRead(_pino); // VARIÁVEL QUE RECEBE A LEITURA DO NTC10K
|
||||
//float adcValue = tempKalman->updateEstimate(adc);
|
||||
float adcValue = adc;
|
||||
//CALCULOS PARA CONVERSÃO DA LEITURA RECEBIDA PELO ESP32 EM TEMPERATURA EM °C
|
||||
Vout = adcValue * Vs / adcMax;
|
||||
Rt = R1 * Vout / (Vs - Vout);
|
||||
T = 1 / (1 / To + log(Rt / Ro) / Beta);
|
||||
Tc = T - 273.15;
|
||||
Tf = Tc * 9 / 5 + 32;
|
||||
|
||||
EnviarDadosSerial(MontarProtocoloSensor(sTMP, _ID, MontarDadosProtocoloNTC10K(Tc)));
|
||||
}
|
||||
};
|
||||
|
||||
SensorTemperatura TM1("TMVET");
|
||||
SensorTemperatura TM2("TMVEF");
|
||||
SensorTemperatura TM3("TMVDT");
|
||||
SensorTemperatura TM4("TMVDF");
|
||||
|
||||
void setup() {
|
||||
Serial.begin(_baudRate);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
if (Serial.available() > 3) {
|
||||
String Protocolo = "";
|
||||
F_Code _funcao = Nda;
|
||||
while (Serial.available()) {
|
||||
char Entrada = (char)Serial.read();
|
||||
if (Entrada == EndLine) {
|
||||
break;
|
||||
}
|
||||
Protocolo += Entrada;
|
||||
if (Protocolo.length() == 3) {
|
||||
if (_funcao == Nda) {
|
||||
_funcao = (F_Code)((String)Protocolo[0] + (String)Protocolo[1] + (String)Protocolo[2]).toInt();
|
||||
Protocolo = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
EnviarDadosSerial("OK");
|
||||
|
||||
if (_funcao == Chk) {
|
||||
EnviarDadosSerial(MontarProtocoloVerificacao(D_Code));
|
||||
} else if (_funcao == Cfg) {
|
||||
String ID = ((String)Protocolo[0] + (String)Protocolo[1] + (String)Protocolo[2] + (String)Protocolo[3] + (String)Protocolo[4]);
|
||||
bool Conectar = (String)Protocolo[6] == "1";
|
||||
if (ID == "MD ") {
|
||||
_TaxaAmostragem = ((String)Protocolo[8] + (String)Protocolo[9] + (String)Protocolo[10] + (String)Protocolo[11] + (String)Protocolo[12]).toInt();
|
||||
|
||||
vTaskDelay(pdMS_TO_TICKS(100));
|
||||
Conectado = Conectar;
|
||||
EnviarDadosSerial(MontarProtocoloSensor(sCFG, "MD", Conectado ? "1" : "0"));
|
||||
}
|
||||
else {
|
||||
S_Code componente = (S_Code)((String)Protocolo[8] + (String)Protocolo[9] + (String)Protocolo[10]).toInt();
|
||||
bool sensor_ativado = (String)Protocolo[12] == "1";
|
||||
int delayAmostragem = ((String)Protocolo[14] + (String)Protocolo[15] + (String)Protocolo[16] + (String)Protocolo[17] + (String)Protocolo[18]).toInt();
|
||||
int prioridade = ((String)Protocolo[20] + (String)Protocolo[21]).toInt();
|
||||
int pino = ((String)Protocolo[23] + (String)Protocolo[24]).toInt();
|
||||
|
||||
if (componente == sTMP) {
|
||||
SensorTemperatura* _sensor = ID == "TMVET" ? &TM1 : ID == "TMVEF" ? &TM2 : ID == "TMVDT" ? &TM3 : &TM4;
|
||||
if (sensor_ativado) {
|
||||
if (Conectar) {
|
||||
_sensor->_pino = pino;
|
||||
_sensor->_prioridade = prioridade;
|
||||
_sensor->_delayAmostragem = delayAmostragem;
|
||||
|
||||
_sensor->Inicializar();
|
||||
}
|
||||
else {
|
||||
_sensor->Desligar();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
} else if (_funcao == Cmd) {
|
||||
|
||||
} else if (_funcao == Tst) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
#include <SimpleKalmanFilter.h>
|
||||
|
||||
SimpleKalmanFilter simpleKalmanFilter(2, 2, 0.01);
|
||||
|
||||
#define _pinoCOR 4
|
||||
const float Vcc = 4.16; // Tensão de alimentação do ACS758
|
||||
const float Voffset = 0.502; // Tensão de offset do ACS758
|
||||
const float sensibilidade = 0.17; // Sensibilidade do ACS758 em V/A (40mV/A para este exemplo)
|
||||
|
||||
void setup() {
|
||||
Serial.begin(115200);
|
||||
pinMode(_pinoCOR, INPUT);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
int adcValueO = analogRead(_pinoCOR);
|
||||
float adcValue = simpleKalmanFilter.updateEstimate(adcValueO);
|
||||
|
||||
float voltage = adcValue * (Vcc / 4095.0); // Convertendo o valor ADC para tensão
|
||||
float current = (voltage - Voffset) / sensibilidade; // Calculando a corrente em A
|
||||
|
||||
Serial.print("ADC Value: ");
|
||||
Serial.print(adcValue);
|
||||
Serial.print(" Voltage: ");
|
||||
Serial.print(voltage, 3); // Mostra a tensão com 3 casas decimais
|
||||
Serial.print(" Current: ");
|
||||
Serial.println(current, 3); // Mostra a corrente com 3 casas decimais
|
||||
|
||||
delay(100);
|
||||
}
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
int PinoNTC = 1; // PINO DO NTC10K
|
||||
double Vs = 3.3; // TENSÃO DE SAIDA DO ESP32
|
||||
double R1 = 10000; //RESISTOR UTILIZADO NO DIVISOR DE TENSÃO
|
||||
double Beta = 3950; // VALOR DE BETA
|
||||
double To=298.15; // VALOR EM KELVIN REFERENTE A 25° CELSIUS
|
||||
double Ro=10000;
|
||||
double adcMax = 4095.0;
|
||||
void setup() {
|
||||
Serial.begin(115200); // INICIA O MONITOR SERIAL A UMA TAXA DE ATUALIZAÇÃO DE 9600
|
||||
}
|
||||
|
||||
void loop() {
|
||||
//GARANTE QUE AS INFORMAÇÕES SERÃO RESETADAS APÓS CADA LEITURA
|
||||
double Vout, Rt = 0;
|
||||
double T, Tc, Tf, adc = 0;
|
||||
adc = analogRead(PinoNTC);// VARIÁVEL QUE RECEBE A LEITURA DO NTC10K
|
||||
//CALCULOS PARA CONVERSÃO DA LEITURA RECEBIDA PELO ESP32 EM TEMPERATURA EM °C
|
||||
Vout = adc * Vs/adcMax;
|
||||
Rt = R1 * Vout / (Vs - Vout);
|
||||
T = 1/(1/To + log(Rt/Ro)/Beta);
|
||||
Tc = T - 273.15;
|
||||
Tf = Tc * 9 / 5 + 32;
|
||||
//Imprime no monitor serial o texto e a temperatura lida pelo sensor
|
||||
Serial.print("Temperatura: ");
|
||||
Serial.print(Tc);
|
||||
Serial.println(" °C");
|
||||
delay(500); // atraso entre as leituras
|
||||
}
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
from flask import Flask, jsonify, request
|
||||
import folium
|
||||
import sys
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
# Armazena a última localização conhecida
|
||||
last_known_location = (-22.1839247, -47.3824123)
|
||||
|
||||
# Rota para renderizar o mapa inicial
|
||||
@app.route('/')
|
||||
def index():
|
||||
global last_known_location
|
||||
folium_map = folium.Map(location=last_known_location, zoom_start=14)
|
||||
folium.Marker(last_known_location, tooltip='Ponto GPS').add_to(folium_map)
|
||||
return folium_map._repr_html_()
|
||||
|
||||
# Rota para atualizar as coordenadas do marcador
|
||||
@app.route('/update_marker', methods=['POST'])
|
||||
def update_marker():
|
||||
global last_known_location
|
||||
data = request.json
|
||||
last_known_location = (data['lat'], data['lon'])
|
||||
return jsonify({'message': 'Coordenadas atualizadas com sucesso!'}), 200
|
||||
|
||||
if __name__ == '__main__':
|
||||
port = 5000 # Porta padrão
|
||||
if len(sys.argv) > 1:
|
||||
try:
|
||||
port = int(sys.argv[1])
|
||||
except ValueError:
|
||||
print("Por favor forneça um número de porta válido.")
|
||||
sys.exit(1)
|
||||
app.run(debug=True, port=port)
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
from flask import Flask, jsonify, request
|
||||
import folium
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
# Armazena a última localização conhecida
|
||||
last_known_location = (-22.1839247, -47.3824123)
|
||||
|
||||
# Rota para renderizar o mapa inicial
|
||||
@app.route('/')
|
||||
def index():
|
||||
global last_known_location
|
||||
folium_map = folium.Map(location=last_known_location, zoom_start=14)
|
||||
folium.Marker(last_known_location, tooltip='Ponto GPS').add_to(folium_map)
|
||||
return folium_map._repr_html_()
|
||||
|
||||
# Rota para atualizar as coordenadas do marcador
|
||||
@app.route('/update_marker', methods=['POST'])
|
||||
def update_marker():
|
||||
global last_known_location
|
||||
data = request.json
|
||||
last_known_location = (data['lat'], data['lon'])
|
||||
return jsonify({'message': 'Coordenadas atualizadas com sucesso!'}), 200
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run(debug=True)
|
||||
Loading…
Reference in New Issue