Zewnętrzna biblioteka dll do komunikacjii

Wszelkie sprawy związane z LabVIEW i komunikacją ze sprzętem. Problemy i ciekawe rozwiązania.
Lukaszsz
Posty: 2
Rejestracja: 12 sie 2011 15:05
Wersja środowiska: LabVIEW 7.1

Zewnętrzna biblioteka dll do komunikacjii

Post autor: Lukaszsz »

Witam
mam następujacy problem : Posiadam układ pomiarowy z czujnikiem ciśnienia -razem z konverterem , łaczem rs232(rs485) oraz oprogramowanie do akwizycji (komunikacji) (firmy KELLER) , ale niestety zbierane dane są zaszumione i wymagaja obróbki - jednakze oprogramowanie (interface zbudowany w Labview) dostarczone przez producenta nie opcji filtrowania danych . Chciałbym wykorzystrać biblioteke dll do tego aby samemu zbudowac interface spełniający moje wymagania - problem w tym iż w internecie , książkach ktore posiadam nie ma takiego przykladu ktory obrazowałby wykorzystanie biblioteki zewnętrznej to komunikacji .
Jedyne informacje jakie znajduje to tworzenie dll w labview,itp. ale nic co by było przykladem o ktorym wspomniałem wyżej.

Czy ktoś z forumowiczów robił już cos kiedyc podobnego, lub ma informacje ktore pozoliły by mi przynajmniej na zbliczenie się do rozwiązania ? Za 'co kolwiek' z góry dziękuję .
smiglo
Posty: 110
Rejestracja: 18 sty 2006 00:00
Wersja środowiska: LabVIEW 2010
Lokalizacja: Bydgoszcz

Re: Zewnętrzna biblioteka dll do komunikacjii

Post autor: smiglo »

Chodzi Ci o możliwość skorzystania z funkcji .dll-ki stworzonej w innym środowisku w LabVIEW? Jeśli znasz prototypy funkcji użytych w dll to można to zrobić.

http://zone.ni.com/devzone/cda/epd/p/id/4489
http://www2.fz-juelich.de/zel/datapool/ ... abView.pdf
smiglo
Lukaszsz
Posty: 2
Rejestracja: 12 sie 2011 15:05
Wersja środowiska: LabVIEW 7.1

Re: Zewnętrzna biblioteka dll do komunikacjii

Post autor: Lukaszsz »

Witam
Czy mógłbym prosić o pomoc/ podpowiedz?
Problem dotyczy wywołania funkcji odczytu (zdefiniowanej w DLL )z wykorzystaniem bloczku Call Library Function Node .

A mianowicie nie wiem jak odczytać to co zwraca funkcja – wszelkie moje próby zakończyły się nie powodzeniem .

Opis mojego problemu

Chcąc odczytać dane z czujnika wywołuje funkcję z biblioteki o strukturze :
Function F73 ( arg1 , arg2 , var arg 3 , arg 4 ) : Smallint ;stdcall;export
Gdzie:

Arg1 jest adresem urządzenia typu byte (8-bit , no sign)
Arg2 jest numerem kanału urządzenia typu byte (8-bit , no sign)
Var Arg3 typu single przekazywane jako pointer
Var Arg4 - słowo statusowe typu single byte przekazywane jako pointer

Wszystkie te argumenty sa przekazywane do urządzenia w postaci ramki:
[ adres | numer funkcji| numer kanału| CRC16_H |CRC16_L]

To co po wywołaniu powinienem otrzymać to owczyt wartości z kanału (floating point) o strukturze ramki:
[( adres urzadzenia) |(numer funkcji)|B3 |B2 | B1 | B0 | STAT |CRC16_H |CRC_16_L]

Jest to ramka zawierająca adres, numer funkcji , dane 32 bitów (4x8bit => (B0..B4)) , 8 bitowe słowo statusowe oraz CRC 16 (CRC jest obliczane w funkcji )
Jednakże ze specyfikacji i opisu biblioteki i protokołu wynika ,że każda funkcja zwraca tylko wartość która informuje użytkownika czy wywołanie funkcji zakończyło się powodzeniem czy nie . oraz wszystkie dane są przekazywane i odbierane z wykorzystaniem stosu .

Nie wiem czy dobrze interpretuję – ale wynika z tego ze ja tylko wywołuję funkcję otrzymuję info czy wywołanie się powiodło i nic wiecej .
Czy to oznacza ze Dane (ramkę ) powinienem odczytać z rejestru portu RS232?
W dokumentacji protokołu komunikacyjnego czujnika (Keller bus functions) jest tylko przykład jak jest zbudowana ramka wychodządza , oraz ramka przychodząca .. oraz dobitnie napisane że każda funkcja w bibliotece zwraca jedynie info czy została z powodzeniem wywołana ale nie ma nic nt gdzie te dane są przechowywane.

Czu ktors z forumowiczów spotkał się lub rozwiązywał podobne problemy?
ODPOWIEDZ