What is the Conversion for these CVF Array Vis calls

What is the Conversion for these CVF Array Vis calls

Hi,
I am trying to convert my CVF 6 project to IVF and need some help with the Array Visualizer Conversion


call favShowWindow(hv, AV_TRUE, status)

call favSetAxisAutoScale(hv, AV_FALSE,status)

call favSetShowPalette(hv,AV_TRUE,status)

call favSetAxisLabel (hv,X_Axis,"Width", status)

call favSetAxisLabel (hv,Y_Axis,"endcap_finish", status)

call favSetAxisLabel (hv,Z_Axis,"Temperature(C)", status)

call favSetZscale(hv,0.8,status)

call favSetZClamp(hv,zmin,zmax,status)

I get the following errors
c:calorimetry.f90(432): Error: This name does not have a type, and must have an explicit type. [AV_TRUE]
Same with AV_FALSE,X_AXIS,Y_AXIS,Z_AXIS

Can you please let me know what they should be renamed as.

Also, I use the AVISGRID ocx in a dialog box as shown below

! Set up a handler to handle Avis2D's rndrpass event

lret = DlgSetCtrlEventHandler( dlg, IDC_AVIS2DQUENCH, Avis2DRndrPassQ, 5, IID__DAvis2DEvents )

! Get a handle to the Avis2D1 IDispatch interface

lret = DlgGet( dlg, IDC_AVIS2DQUENCH, hAvis2DQ, DLG_IDISPATCH )

lret = DlgSetCtrlEventHandler( dlg, IDC_AVISGRIDQUENCH, AVISGRIDCTLDataChangedQ, 4, IID__IAvisGridCtlEvents )

! Get a handle to the Avis2D1 IDispatch interface

lret = DlgGet( dlg, IDC_AVISGRIDQUENCH, hAvisGRidQ, DLG_IDISPATCH )

if (lret == .FALSE.) return

sharename = GetShareNameQ()

! Setup the Avis2D properties

ret = AUTOSetProperty(hAvis2DQ, "FileName", sharename)

if (ret /= 0) return

ret = AUTOSetProperty(hAvis2DQ, "ShowPalette", .TRUE.)

if (ret /= 0) return

ret = AUTOSetProperty(hAvis2DQ, "PaletteAutoAdjust", .FALSE.)

I am getting the followingerrors
c:animwin32_qnch.f90(130): Error: The type of the actual argument differs from the type of the dummy argument. [IID__DAVIS2DEVENTS]
c:animwin32_qnch.f90(134): Error: The type of the actual argument differs from the type of the dummy argument. [IID__IAVISGRIDCTLEVENTS]
c:animwin32_qnch.f90(139): Error: This name doe
s not have a type, and must have an explicit type. [GETSHARENAMEQ]

c:animwin32_qnch.f90(122): Error: This name does not have a type, and must have an explicit type. [AV_SHARENAME_LEN]

Do I haveregenerate the Avis2d and Avisgrid modules that were automatically generated in CVF.

Thanks for your help

12 posts / novo 0
Último post
Para obter mais informações sobre otimizações de compiladores, consulte Aviso sobre otimizações.

Hi ,

Welcome to the forum! I'm afraidporting your application will be more work than you expected.The move from Compaq AV to Intel AV is actually pretty major, especially if you are using the ActiveX controls. Intel AV is not an update of Compaq AV, it's a totally new implementation.

One difference is that each Compaq AV controls had a long list of properties that completely defined how the data was displayed. The problem with this model is that its hard to extend in order to add new functionality (say a new plot type). Another problem is that programs that controlled the Array Viewer had a totally separate programming model.

With the Intel AV controls, the number of properties is much smaller. This is because most of what goes into the display is actually defined somewhere else, namely the AV Object Model. The object model is a hierarchal set of containers and objects that defines a collection of datasets, graphs, and plots. This model can be setup programmatically, loaded from a file, or via some combination. One advantage of this approach is that you could start writing a program that used the Array Viewer to display a graph, and if you later decided youd rather use the AvGraph control, most of your code would work equally well.

To get started first look at the sample: AV/Samples/Fortran/Sine2D. This is a console w/ Array Viewer app that uses the Object Model. Then compare this with the sample: Sine2DWin32. This uses the AvGraph control in a Win32 dialog app. Theres a lot of common code, whats different are the parts where the graph control is told where to find the graph to display.

Since the number of properties/methods in the control are fairly small, I havent created a module for the control interface, I just use AUTOSetProperty in the sample.

Besides the Sine2DWin32 sample, you might gain some insight from looking at some of the sample data files that use the AvPage object. For example: Samples/Data/HDF5/astrojet.h5. If you open this file up in Array Viewer and go to the astrojet object, youll see a 3D graph with orthogonal slices that you can move via sliders. The code for this interaction is actually part of the data file. Its basically an HTML page which contains the AV controls, plus some JavaScript to tie it all together. I know JavaScript is not Fortran, but youll be able to see control properties are set, events received, etc. You can examine/edit the code by right clicking on the page in the Viewer and selecting Edit. The code for the page should then show up in Visual Studio (or whatever your default HTML editor is).

Good luck! Give this a try and dont hesitate to ask questions as they come up.

John,
Thanks for the info. Looks like there will be a lot to do.
However for starters, I am getting the error IFDLGnnn.dll is missing.

I found it was in C:Program FilesIntelCompilerFortran9.0IA32Bin and added that to my lib settings and the Win32Sine program compiles but does not run. It says that the IFDLG100.dll is not registered. Whats a quick fix, right click....

Thanks

Sumit

You need to register the dll... Open a command window, go to C:Program FilesIntelCompilerFortran9.0IA32Bin and type: regsvr32 ifdlg100.dll.

That should fix the problem. I don't know why this file can't be registered by IVF setup; I've filed a bug report for this issue quite some time ago.

Thanks John,
I could get the dll registered and ran the exe. I am getting the following linker errors. Can you advice me what to fix. I did replace the CVF animfor.f90 with the new one from Sinewave as I do something similar. Thanks
Code:

B  error LNK2019: unresolved external symbol _AVBORDER referenced in function _ANIMFOR_mp_CREATEGRAPH
B  error LNK2019: unresolved external symbol _AVCAMERA referenced in function _ANIMFOR_mp_CREATEGRAPH
B  error LNK2019: unresolved external symbol _AVCOLOR referenced in function _ANIMFOR_mp_CREATEGRAPH
B  error LNK2019: unresolved external symbol _AVCONTEXT referenced in function _ANIMFOR_mp_GETFILENAME

You need to add avfrt.lib (avfrtd.lib for debug builds) in Project Settings, Linker, Input.

Hi ,
I was trying to get the AvGraph and AvGrid control to be displayed in my dialog as an active X

Anytime I add the statement

lret = DlgGet(gdlg, IDC_AVGRAPHCTL1, ghAvGraph, DLG_IDISPATCH )

I get an error

C:IVF_BANIMWIN32.F90(185): Error: There is no matching specific function for this generic function reference. [DLGGET]
C:IVF_BANIMWIN32.F90(185): Error: This name does not have a type, and must have an explicit type. [IDC_AVGRAPHCTL1]

In use section I have the same statements as your Sine32 sample


SUBROUTINE AnimWin32Sub( dlg, id, callbacktype )

use dfwin

use iflogm

use ifcom

use ifauto

use AnimWin32Globals

use AnimFor

use AvFRT

implicit none

type (dialog) dlg

integer id, callbacktype

integer*4 cref,status

integer*4 ret

logical*4 lret

character(80):: sharename

character(80):: graphname

character*(20) retstr

include 'resource.fd'

if (callbacktype == dlg_destroy) then

call PostQuitMessage(0)

else

The other problem, is that if I compile without that line I get a number of compiler errors associated with libcmt.lib (being already present). Like

B error LNK2005: ___argc already defined in LIBCMT.lib(crt0dat.obj)

If I ignore that specific library in Linker / Input me errors reduce to 4 but I have earlier found that I do not need to ignore that library (meaning without this Animwin32.f90 file) everything compiles well.

B error LNK2019: unresolved external symbol ___pxcptinfoptrs referenced in function _GETEXCEPTIONPTRSQQ
B error LNK2019: unresolved external symbol __beginthread referenced in function _for__access_threadstor_threads
B error LNK2019: unresolved external symbol __beginthreadex referenced in function __QWGraphWndProc@16
B error LNK2019: unresolved external symbol __begi
nthreadex referenced in function _WinMain@16

Why is the addition of this section of code screwing up things.

Thanks for your help.

Did you add the AvGrid/AvGraph controls to your dialog using the resource editor? The id for the control should show up automatically in the file resource.fd (though the name might be different than IDC_AVGRAPHCTL1). Also don't forget to add the line: include 'resource.fd' in your source file.

Regarding the link errors, it looks you are linking in multiple C runtime libraries. What value do you have in project settings, Fortran, Libraries? The Sine2DWin32 sample is using Single-Threaded.

What project type are you using? QuickWin?

John,
As the atteached screenshot would show, I am using Quickwin (as I was able to do the same in CVF). I am just trying to replace the Compaq AV control with the Intel AV Control.
I did add it from the Resource Editor (click on .rc file,click ondialogs, click onthe old CVFdialog box , deleted the CAV active X, added the Intel Active X).
The name IDC_AVGRAPHCTL1 automatically came up.
Resource .fd is already in the code as you can see in my post 2 blocks up.

Also where do I get IAV (Intel Array Vis) help on exact arguments for set AUTOSEPROPERTY axis etc . The online help does not list the values (if one is using it as an active X). Where should I be looking.

Thanks

So you're seeing IDC_AVGRAPHCTL1 in the resource.fd file, but still getting the "This name does not have a type error"? That's very odd. It would probably be best for you to contact Intel Premier Support about this issue. I'll make sure it gets handled promptly.

A description of the control property values are in the Visualizer help, "Intel Array Visualizer Controls" section.

Thanks John for your help.
I checked the resource.fd file and resource.h file. The .h file had the AVGRAPHCTL1 parameter in it while the .fd file did not (even if I saved/saved all)
So I manually added the control IDs and it compiled fine.
Now while linking, I get errors with libcmt.lib. If Iomit libcmt.lib from linker libraries I get a certain set of linker errors and if I include it I get another set of errors (as I stated two posts ago).
I will try to wade through it and if unable, I will contact Premier support.
By the way, The Intel Compiler Version I am using is Version 9.0.2713.2003. Is that the most current?
I also found the Control properties in help
Thanks

OK, great! It sounds like you are making progress.

Regarding the linker errors, problems with linking inmultiple C runtime libs comes up a lot in the Visual Fortran forum. See http://softwareforums.intel.com/ids/board/message?board.id=5&message.id=664&highlight=libcmt.lib#M664for example. Usually the problem is comes from linking in multiple libraries which do not use the same C runtime (i.e. Single Threaded vs. Multiple Threaded / dll vs. static). What do you have listed on in project properties, Linker, Input? AvFRT.lib (or AvFRTd.lib) was built not to pull in any C runtime libs, so there shouldn't be a problem with the AV libs.

The package ID of the most recent 9.0 compiler is W_FC_P_9.0.020. Package 021 will be out in the next week or so and will have a lot of AV fixes. I'll post a note in the forum when the update is available.

Deixar um comentário

Faça login para adicionar um comentário. Não é membro? Inscreva-se hoje mesmo!