.[ ČeskéHry.cz ].
Spracovanie cidiel DS18B20 z Arduina do Visual basicu 6

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Visual Basic (6.0)
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Karya



Založen: 02. 02. 2015
Příspěvky: 2

PříspěvekZaslal: 2. únor 2015, 14:06:59    Předmět: Spracovanie cidiel DS18B20 z Arduina do Visual basicu 6 Odpovědět s citátem

Dobry den

Kdo by mi vedel poradit ako spracovat data z Arduina. Vo VB mam 2x Label a do toho by som potreboval dostat kazde cidlo zvlast.Pripojene mam 2xDS18B20.

Program pre Arduino:

kód:
//  This Arduino sketch reads DS18B20 "1-Wire" digital
//  temperature sensors.
//  Copyright (c) 2010 Mark McComb, hacktronics LLC
//  License: http://www.opensource.org/licenses/mit-license.php (Go crazy)
//  Tutorial:
//  http://www.hacktronics.com/Tutorials/arduino-1-wire-tutorial.html

#include <OneWire.h>
#include <DallasTemperature.h>

// Data wire is plugged into pin 3 on the Arduino
#define ONE_WIRE_BUS 6

// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);

// Assign the addresses of your 1-Wire temp sensors.
// See the tutorial on how to obtain these addresses:
// http://www.hacktronics.com/Tutorials/arduino-1-wire-address-finder.html

DeviceAddress devices[] = {{0x28, 0xFF, 0x43, 0x5F, 0x52, 0x14, 0x00, 0x4E}, {0x28, 0xFF, 0x1F, 0x13, 0x53, 0x14, 0x00, 0xA3}};

void setup(void)
{
  // start serial port
  Serial.begin(9600);
  // Start up the library
  sensors.begin();
  // set the resolution to 10 bit (good enough?);
}

void printTemperature(int deviceIndex)
{
  float tempC = sensors.getTempC(devices[deviceIndex]);
  if (tempC == -127.00)
  {
    Serial.print("error");
  }
  else
  {
    Serial.print(deviceIndex);
    Serial.print(":");
    Serial.print(tempC);
    Serial.print("\r\n");
  }
}

void loop(void)
{
  delay(1000);
   Serial.print("\n\r");

printTemperature(0);
printTemperature(1);
//printTemperature(2);
//Serial.print("\n\r\n\r");
}




Visual Basic 6

kód:
Dim Retezec, Retezec2 As String
Dim Minule As String




Private Sub MSComm1_OnComm()
Dim StrData As Variant 'define variable type as it is variant
StrData = MSComm1.Input
Buffer.Text = Buffer.Text + StrData


If StrData <> ":" Then
    Retezec = Retezec + StrData
End If

If StrData = ":" Then
    'Text3.Text = Retezec
    If Minule = "0" Then
        Label1.Caption = Retezec
    End If
    If Minule = "1" Then
        Label2.Caption = Retezec
    End If
    Retezec = ""
End If
Minule = StrData
       
       If StrData <> ":" Then
       Retezec2 = Retezec2 + StrData
       Else
       'Text4.Text = Retezec2
       Retezec2 = ""
       End If
       
End Sub

Private Sub Form_Load()
    If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
       MSComm1.Settings = "9600,N,8,1"
       MSComm1.CommPort = 4
       MSComm1.InputLen = 1
       MSComm1.PortOpen = True
       MSComm1.RThreshold = 1
End Sub


Vystup z arduina:

0:23.72
1:23.65

Nedari sa mi spravne spracovat prijaty retazec z arduina.Vedel by mi niekdo poradit ako to spravne upravit?Dakujem za kazdu pomoc
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Karya



Založen: 02. 02. 2015
Příspěvky: 2

PříspěvekZaslal: 3. únor 2015, 16:55:16    Předmět: Odpovědět s citátem

Dobry den

Nenasiel byx sa nik kdo by mi poradil.Dakujem Karol
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Mem



Založen: 28. 07. 2007
Příspěvky: 1959
Bydliště: Olomouc

PříspěvekZaslal: 3. únor 2015, 17:21:24    Předmět: Odpovědět s citátem

Na ten otevřený sériový port se z VB dostaneš a nenačítá ti to žádné znaky? Nebo načítá, ale nevyznáš se v tom? Nevím teď z hlavy, co v tom sketchi udělá print(float) do toho sériového portu, předpokládám, že tam nacpe přímo bajty toho datového typu a ne řetězec. Takže v tom VB musíš ty bajty taky přijmout a zpracovat, abys dostal to původní číslo. Anebo si ten float převést ještě ve sketchi na char* a poslat do sériového portu až řetězec s vypsaným číslem. Úplně nejlepší by pak bylo získat tu teplotu (nebo si ji vynásobit) jako int, ať nemusíš řešit převody datového typu nebo oddělovač desetin v řetězci.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Visual Basic (6.0) Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna