CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - 1wire/RS232 - Odczyt z czujnika DS18B20

1wire/RS232 - Odczyt z czujnika DS18B20

problemy z funkcjonowaniem bibliotek, komponentów itp.

1wire/RS232 - Odczyt z czujnika DS18B20

Nowy postprzez Yari27 » środa, 5 sierpnia 2015, 21:57

Po długich poszukiwaniach znalazłem bibliotekę obsługującą odczyt temperatury z czujnika na stronie http://ds18b20.friko.pl/program.html lecz nie działa pod c++ builder xe2. Zacząłem poprawiać go pod c++ builder, ale nie wiem czy dobrze bo nigdy tego nie robiłem. Jest ktoś kto się orientuje w obsłudze tego czujnika i sprawdził by czy dobrze zacząłem poprawiać, oraz pomógł mi jeszcze z paroma błędami (6) o ile reszta jest dobrze?
► 


A może ktoś wie gdzie znaleźć gotową bibliotekę pod C++ builder?
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
Avatar użytkownika
Yari27
Bladawiec
Bladawiec
 
Posty: 23
Dołączył(a): niedziela, 19 lipca 2015, 20:54
Podziękował : 6
Otrzymał podziękowań: 0
System operacyjny: Windows 7 64bit
Kompilator: C++ Builder XE2 Update4
Gadu Gadu: 10382601
    Windows 7Chrome

Re: 1wire/RS232 - Odczyt z czujnika DS18B20

Nowy postprzez polymorphism » czwartek, 6 sierpnia 2015, 13:06

W sumie ten kod (piszę o oryginalnej wersji) powinien się skompilować w builderze. Nie zauważyłem tam nic nietypowego, co mogłoby powodować problemy.

Dodałbym w 1WireBus.h:
KOD cpp:     UKRYJ  
#pragma once
#include <windows.h>  // <--- to

...
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows 7Firefox

Re: 1wire/RS232 - Odczyt z czujnika DS18B20

Nowy postprzez Yari27 » czwartek, 6 sierpnia 2015, 18:28

Trochę lepiej, ale musiałem dołączyć
#include <stdio.h>
#include <vcl.h>
i konwertować char na wchar_t.

Zostały jeszcze 3 błędy :
[BCC32 Error] 1WireBus.cpp(795): E2034 Cannot convert 'int' to 'const TVarRec *'
Full parser context
1WireBus.cpp(787): parsing: UnicodeString C1WireBus::GetRomCode(int)
[BCC32 Error] 1WireBus.cpp(795): E2342 Type mismatch in parameter 'args' (wanted 'const TVarRec *', got 'unsigned char')
Full parser context
1WireBus.cpp(787): parsing: UnicodeString C1WireBus::GetRomCode(int)
[BCC32 Error] 1WireBus.cpp(795): E2226 Extra parameter in call
Full parser context
1WireBus.cpp(787): parsing: UnicodeString C1WireBus::GetRomCode(int)

odnoszące się do linii 795:
Kod: Zaznacz cały
code.Format("%02X%02X%02X%02X%02X%02X%02X%02X",rom[0],rom[1],rom[2],rom[3],rom[4],rom[5],rom[6],rom[7]);


jest jeszcze parę ostrzeżeń:
[BCC32 Warning] 1wirebus.h(38): W8058 Cannot create pre-compiled header: initialized data in header
[BCC32 Warning] 1WireBus.cpp(238): W8004 'found_sensors' is assigned a value that is never used
Full parser context
1WireBus.cpp(50): parsing: int C1WireBus::InitBus()
[BCC32 Warning] 1WireBus.cpp(423): W8066 Unreachable code
Full parser context
1WireBus.cpp(337): parsing: int C1WireBus::owNext(int,int)
[BCC32 Warning] 1WireBus.cpp(522): W8004 'ret' is assigned a value that is never used
Full parser context
1WireBus.cpp(484): parsing: int C1WireBus::TouchReset()
[BCC32 Warning] 1WireBus.cpp(797): W8004 'rom' is assigned a value that is never used
Full parser context
1WireBus.cpp(787): parsing: UnicodeString C1WireBus::GetRomCode(int)
[BCC32 Warning] 1WireBus.cpp(993): W8004 'x' is assigned a value that is never used
Full parser context
1WireBus.cpp(801): parsing: double C1WireBus::GetTemperature(int)
Avatar użytkownika
Yari27
Bladawiec
Bladawiec
 
Posty: 23
Dołączył(a): niedziela, 19 lipca 2015, 20:54
Podziękował : 6
Otrzymał podziękowań: 0
System operacyjny: Windows 7 64bit
Kompilator: C++ Builder XE2 Update4
Gadu Gadu: 10382601
    Windows 7Chrome

Re: 1wire/RS232 - Odczyt z czujnika DS18B20

Nowy postprzez polymorphism » czwartek, 6 sierpnia 2015, 18:35

A po co zmieniasz coś w tej klasie? Daj mi błędy z kompilacji oryginalnych źródeł (tylko dodaj tę drobną zmianę, o której pisałem wcześniej).
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows 7Firefox

Re: 1wire/RS232 - Odczyt z czujnika DS18B20

Nowy postprzez Yari27 » czwartek, 6 sierpnia 2015, 18:59

[BCC32 Error] 1wirebus.h(103): E2303 Type name expected
Full parser context
Unit1.cpp(5): #include 1wirebus.h
1wirebus.h(61): class C1WireBus
[BCC32 Error] 1wirebus.h(103): E2139 Declaration missing ;
Full parser context
Unit1.cpp(5): #include 1wirebus.h
1wirebus.h(61): class C1WireBus
[BCC32 Error] 1wirebus.h(105): E2293 ) expected
Full parser context
Unit1.cpp(5): #include 1wirebus.h
1wirebus.h(61): class C1WireBus
[BCC32 Warning] 1wirebus.h(35): W8058 Cannot create pre-compiled header: initialized data in header
Avatar użytkownika
Yari27
Bladawiec
Bladawiec
 
Posty: 23
Dołączył(a): niedziela, 19 lipca 2015, 20:54
Podziękował : 6
Otrzymał podziękowań: 0
System operacyjny: Windows 7 64bit
Kompilator: C++ Builder XE2 Update4
Gadu Gadu: 10382601
    Windows 7Chrome

Re: 1wire/RS232 - Odczyt z czujnika DS18B20

Nowy postprzez polymorphism » czwartek, 6 sierpnia 2015, 19:37

Przeoczyłem CStringa ;) Tu masz wersję z std::stringiem:
KOD cpp:     UKRYJ  
std::string C1WireBus::GetRomCode(int sensor)
{
        if(sensor < 1 || sensor > sensor_list.max) return "";
        else
        {
                unsigned char *rom = &sensor_list.roms[sensor * 8];
                char str[15];
               
                sprintf(str, "%02X%02X%02X%02X%02X%02X%02X%02X", rom[0],rom[1],rom[2],rom[3],rom[4],rom[5],rom[6],rom[7]);
                return str;
        }
}

double C1WireBus::GetTemperature(const std::string &rom_code)
{
        for(int i = 0; i < sensor_list.max; i++)
                if(GetRomCode(i) == rom_code) return GetTemperature(i);
               
        return TEMPERATURE_READ_FAILED;
}

Nagłówek odpowiednio popraw i załącz plik <string>.
C++ Reference - opis wszystkich klas STL-a i funkcji C.

Za ten post autor polymorphism otrzymał podziękowanie od:
Yari27
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows 7Firefox

Re: 1wire/RS232 - Odczyt z czujnika DS18B20

Nowy postprzez Yari27 » czwartek, 6 sierpnia 2015, 20:09

Doszły nowe błędy:
► 


Bez tego jest trochę mniej, i tyczy się konwersji char na wchar_t
Kod: Zaznacz cały
#include "StdAfx.h"

► 
Avatar użytkownika
Yari27
Bladawiec
Bladawiec
 
Posty: 23
Dołączył(a): niedziela, 19 lipca 2015, 20:54
Podziękował : 6
Otrzymał podziękowań: 0
System operacyjny: Windows 7 64bit
Kompilator: C++ Builder XE2 Update4
Gadu Gadu: 10382601
    Windows 7Chrome

Re: 1wire/RS232 - Odczyt z czujnika DS18B20

Nowy postprzez polymorphism » czwartek, 6 sierpnia 2015, 20:20

StdAfx.h możesz wywalić, bo w builderze ten plik nie jest potrzebny.

Co do błędów. Musisz pokazać pliki po zmianie, bo nie wiem jak one teraz wyglądają.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows 7Firefox

Re: 1wire/RS232 - Odczyt z czujnika DS18B20

Nowy postprzez Yari27 » czwartek, 6 sierpnia 2015, 21:33

Oto pliki:
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
Avatar użytkownika
Yari27
Bladawiec
Bladawiec
 
Posty: 23
Dołączył(a): niedziela, 19 lipca 2015, 20:54
Podziękował : 6
Otrzymał podziękowań: 0
System operacyjny: Windows 7 64bit
Kompilator: C++ Builder XE2 Update4
Gadu Gadu: 10382601
    Windows 7Chrome

Re: 1wire/RS232 - Odczyt z czujnika DS18B20

Nowy postprzez polymorphism » czwartek, 6 sierpnia 2015, 22:07

OK, sprawa prosta. Do wszystkich funkcji systemowych, przy których jest błąd, takich jak np. CreateFile czy MessageBox, dodaj na koniec ich nazw literę A (CreateFileA). Kompilujesz w trybie unikodowym, więc funkcje WinAPI oczekują łańcuchów unikodowych. Ktoś, kto pisał tę klasę, pisał pod archaiczne kodowanie ANSI, i stąd te problemy.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows 7Firefox

Re: 1wire/RS232 - Odczyt z czujnika DS18B20

Nowy postprzez Yari27 » czwartek, 6 sierpnia 2015, 22:55

Ostatni błąd:
[BCC32 Error] 1WireBus.cpp(1082): E2316 'C1WireBus::GetTemperature(const std::string &)' is not a member of 'C1WireBus'


Dziwne, widzę tą funkcję w klasie C1WireBus
Avatar użytkownika
Yari27
Bladawiec
Bladawiec
 
Posty: 23
Dołączył(a): niedziela, 19 lipca 2015, 20:54
Podziękował : 6
Otrzymał podziękowań: 0
System operacyjny: Windows 7 64bit
Kompilator: C++ Builder XE2 Update4
Gadu Gadu: 10382601
    Windows 7Chrome

Re: 1wire/RS232 - Odczyt z czujnika DS18B20

Nowy postprzez polymorphism » piątek, 7 sierpnia 2015, 10:00

Zmieniles w pliku H deklaracje dwóch metod, które przerobiłem?
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    LinuxChrome

Re: 1wire/RS232 - Odczyt z czujnika DS18B20

Nowy postprzez Yari27 » piątek, 7 sierpnia 2015, 10:54

Tak, CString zamieniłem na std::string.
Możesz zobaczyć w pliku który ostatnio wysłałem.
Avatar użytkownika
Yari27
Bladawiec
Bladawiec
 
Posty: 23
Dołączył(a): niedziela, 19 lipca 2015, 20:54
Podziękował : 6
Otrzymał podziękowań: 0
System operacyjny: Windows 7 64bit
Kompilator: C++ Builder XE2 Update4
Gadu Gadu: 10382601
    LinuxChrome

Re: 1wire/RS232 - Odczyt z czujnika DS18B20

Nowy postprzez polymorphism » piątek, 7 sierpnia 2015, 12:32

Zmieniać zmieniałeś, ale coś niedokładnie:
KOD cpp:     UKRYJ  
/* w H */
double GetTemperature(std::string rom_code);

/* w CPP */
double C1WireBus::GetTemperature(const std::string &rom_code) { ... }

Widzisz błąd?
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows 7Firefox

Re: 1wire/RS232 - Odczyt z czujnika DS18B20

Nowy postprzez Yari27 » piątek, 7 sierpnia 2015, 17:24

Wielkie dzięki za pomoc i chęci :D
Avatar użytkownika
Yari27
Bladawiec
Bladawiec
 
Posty: 23
Dołączył(a): niedziela, 19 lipca 2015, 20:54
Podziękował : 6
Otrzymał podziękowań: 0
System operacyjny: Windows 7 64bit
Kompilator: C++ Builder XE2 Update4
Gadu Gadu: 10382601
    Windows 7Chrome

Następna strona

  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Biblioteki i komponenty

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 12 gości

cron