I can't call the export functions of motobox32.dll

Started by Stephane Fonteyne, October 22, 2011, 08:24:57 AM

Previous topic - Next topic

Stephane Fonteyne

Dear support,

When I try my dll function call will be generated an error. What is the solution because I have to use dll function without that error. I don't understand this error because I have correct declared all my variables en functions.

My code in Appendix

1. MotoBox32.inc
=============



'=====================================================================================================================
'Control Serialport Support
'=====================================================================================================================
DECLARE FUNCTION dll_Write          LIB "MotoBox32.dll" ALIAS "dll_write"(BYVAL waar_schrijven AS LONG, BYVAL weg_te_schrijven AS LONG) AS LONG
DECLARE FUNCTION dll_Read           LIB "MotoBox32.dll" ALIAS "dll_read"(BYVAL waar_schrijven AS LONG) AS LONG
DECLARE FUNCTION dll_Send_Post          LIB "MotoBox32.dll" ALIAS "dll_send_post"(BYVAL waar_schrijven AS LONG) AS LONG
DECLARE FUNCTION dll_Setup_Hardware LIB "MotoBox32.dll" ALIAS "dll_setup_hardware"(BYVAL waar_schrijven AS LONG, BYVAL baudrate AS LONG) AS LONG

'=====================================================================================================================
'Stepper Motor Support
'=====================================================================================================================
DECLARE FUNCTION dll_ST1FXX         LIB "MotoBox32.dll" ALIAS "dll_ST1FXX"(BYVAL adres AS LONG, BYVAL aantal AS LONG) AS LONG
DECLARE FUNCTION dll_ST2FXX         LIB "MotoBox32.dll" ALIAS "dll_ST2FXX"(BYVAL adres AS LONG, BYVAL aantal AS LONG) AS LONG
DECLARE FUNCTION dll_ST1FOR         LIB "MotoBox32.dll" ALIAS "dll_ST1FOR"(BYVAL adres AS LONG) AS LONG
DECLARE FUNCTION dll_ST2FOR         LIB "MotoBox32.dll" ALIAS "dll_ST2FOR"(BYVAL adres AS LONG) AS LONG
DECLARE FUNCTION dll_ST1BAK         LIB "MotoBox32.dll" ALIAS "dll_ST1BAK"(BYVAL adres AS LONG) AS LONG
DECLARE FUNCTION dll_ST2BAK         LIB "MotoBox32.dll" ALIAS "dll_ST2BAK"(BYVAL adres AS LONG) AS LONG
DECLARE FUNCTION dll_STBFOR         LIB "MotoBox32.dll" ALIAS "dll_STBFOR"(BYVAL adres AS LONG) AS LONG
DECLARE FUNCTION dll_STBBAK         LIB "MotoBox32.dll" ALIAS "dll_STBBAK"(BYVAL adres AS LONG) AS LONG
DECLARE FUNCTION dll_ST1BXX         LIB "MotoBox32.dll" ALIAS "dll_ST1BXX"(BYVAL adres AS LONG, BYVAL aantal AS LONG) AS LONG
DECLARE FUNCTION dll_ST2BXX         LIB "MotoBox32.dll" ALIAS "dll_ST2BXX"(BYVAL adres AS LONG, BYVAL aantal AS LONG) AS LONG
DECLARE FUNCTION dll_STSYNC         LIB "MotoBox32.dll" ALIAS "dll_STSYNC"(BYVAL adres AS LONG) AS LONG
'=====================================================================================================================

'=====================================================================================================================
'DC Motor Support
'=====================================================================================================================
DECLARE FUNCTION dll_DC2FOR         LIB "MotoBox32.dll" ALIAS "dll_DC2FOR"(BYVAL adres AS LONG) AS LONG
DECLARE FUNCTION dll_DC1FOR         LIB "MotoBox32.dll" ALIAS "dll_DC1FOR"(BYVAL adres AS LONG) AS LONG
DECLARE FUNCTION dll_DC2BAK         LIB "MotoBox32.dll" ALIAS "dll_DC2BAK"(BYVAL adres AS LONG) AS LONG
DECLARE FUNCTION dll_DC1BAK         LIB "MotoBox32.dll" ALIAS "dll_DC1BAK"(BYVAL adres AS LONG) AS LONG
DECLARE FUNCTION dll_DC1OFF         LIB "MotoBox32.dll" ALIAS "dll_DC1OFF"(BYVAL adres AS LONG) AS LONG
DECLARE FUNCTION dll_DC2OFF         LIB "MotoBox32.dll" ALIAS "dll_DC2OFF"(BYVAL adres AS LONG) AS LONG
DECLARE FUNCTION dll_DCBOFF         LIB "MotoBox32.dll" ALIAS "dll_DCBOFF"(BYVAL adres AS LONG) AS LONG
DECLARE FUNCTION dll_DCBFOR         LIB "MotoBox32.dll" ALIAS "dll_DCBFOR"(BYVAL adres AS LONG) AS LONG
DECLARE FUNCTION dll_DCBBAK         LIB "MotoBox32.dll" ALIAS "dll_DCBBAK"(BYVAL adres AS LONG) AS LONG
'======================================================================================================================

'======================================================================================================================
'Servo Motor Support
'======================================================================================================================
DECLARE FUNCTION dll_SV2FOR         LIB "MotoBox32.dll" ALIAS "dll_SV2FOR"(BYVAL adres AS LONG) AS LONG
DECLARE FUNCTION dll_SV2BAK         LIB "MotoBox32.dll" ALIAS "dll_SV2BAK"(BYVAL adres AS LONG) AS LONG
DECLARE FUNCTION dll_SV2MID         LIB "MotoBox32.dll" ALIAS "dll_SV2MID"(BYVAL adres AS LONG) AS LONG
DECLARE FUNCTION dll_SV2HLD         LIB "MotoBox32.dll" ALIAS "dll_SV2HLD"(BYVAL adres AS LONG) AS LONG
DECLARE FUNCTION dll_SV1FOR         LIB "MotoBox32.dll" ALIAS "dll_SV1FOR"(BYVAL adres AS LONG) AS LONG
DECLARE FUNCTION dll_SV1BAK         LIB "MotoBox32.dll" ALIAS "dll_SV1BAK"(BYVAL adres AS LONG) AS LONG
DECLARE FUNCTION dll_SV1MID         LIB "MotoBox32.dll" ALIAS "dll_SV1MID"(BYVAL adres AS LONG) AS LONG
DECLARE FUNCTION dll_SV1HLD         LIB "MotoBox32.dll" ALIAS "dll_SV1HLD"(BYVAL adres AS LONG) AS LONG
'======================================================================================================================

'======================================================================================================================
'Configuration Motors Support
'======================================================================================================================
DECLARE FUNCTION dll_AMSTOP         LIB "MotoBox32.dll" ALIAS "dll_AMSTOP"(BYVAL adres AS LONG) AS LONG
DECLARE FUNCTION dll_MTYPEX         LIB "MotoBox32.dll" ALIAS "dll_MTYPEX"(BYVAL adres AS LONG) AS LONG
DECLARE FUNCTION dll_STDELX         LIB "MotoBox32.dll" ALIAS "dll_STDELX"(BYVAL adres AS LONG) AS LONG
DECLARE FUNCTION dll_ECHOST         LIB "MotoBox32.dll" ALIAS "dll_ECHOST"(BYVAL adres AS LONG) AS LONG
DECLARE FUNCTION dll_AMONXX         LIB "MotoBox32.dll" ALIAS "dll_AMONXX"(BYVAL adres AS LONG) AS LONG
DECLARE FUNCTION dll_MONOFF         LIB "MotoBox32.dll" ALIAS "dll_MONOFF"(BYVAL adres AS LONG) AS LONG
DECLARE FUNCTION dll_COMMON         LIB "MotoBox32.dll" ALIAS "dll_COMMON"(BYVAL adres AS LONG) AS LONG
DECLARE FUNCTION dll_RESUME         LIB "MotoBox32.dll" ALIAS "dll_RESUME"(BYVAL adres AS LONG) AS LONG


2. FF_WinMain
===========


Function FF_WINMAIN( ByVal hInstance     As Dword, _
                     ByVal hPrevInstance As Dword, _
                     ByVal lpCmdLine     As Asciiz Ptr, _
                     ByVal iCmdShow      As Long ) As Long

   Init_App()
   ' If this function returns TRUE (non-zero) then the actual WinMain will exit
   ' thus ending the program. You can do program initialization in this function.

   Function = %FALSE    'return %TRUE if you want the program to end.

End Function



3. Init_App.inc
===========



Global g_Address   As Long
Global g_Baudrate  As Long
Global g_Init      As Long

Sub Init_App()
   g_Address   = &HFEE8
   g_Init      = %FALSE
End Sub



4. FF_AppStart
===========



#COMPILE Exe "//PROJECT_NAME//.exe"

' #BLOAT <num_expr>
' #COMPILER PBWIN
' #DEBUG ERROR ON|OFF
' #DIM ALL|NONE
' #OPTION {VERSION3 | VERSION4 | VERSION5}
' #REGISTER {ALL | DEFAULT | NONE}
' #TOOLS [ON|+ | OFF|-]
' #STACK <num_expr>

' FireFly will automatically replace the JOSEINCLUDES token based on the controls that are present
' in the project. If Jose Roca's includes are not specified in 'Environment Options' for the compiler
' then FireFly will simply use the default PowerBASIC Win32 API Include files that ship with the compiler.
//JOSEINCLUDES//
#If Not %DEF(%USE_JOSE_INCLUDES)
   #INCLUDE "WIN32API.INC"
   #INCLUDE "COMMCTRL.INC"  ' needed for WinXP Theme support
   #INCLUDE "COMDLG32.INC"
   #INCLUDE "RICHEDIT.INC"
   #INCLUDE "C:\MotoBox32.inc"
#EndIf



5. Form1.frm
==========



Function FORM1_BTNWRITE_BN_CLICKED ( _
                                   ControlIndex     As Long,  _  ' index in Control Array
                                   hWndForm         As Dword, _  ' handle of Form
                                   hWndControl      As Dword, _  ' handle of Control
                                   idButtonControl  As Long   _  ' identifier of button
                                   ) As Long
      Local temp As Long
     
      If(g_Init = %TRUE) Then
               
         temp = dll_write(g_Address, &h55) -> When I try to call it display the error!
         
         If(temp = 1) Then
            FF_ListBox_AddString(HWND_FORM1_LSTMOTORBOXSTATUS,"Succesfull executed" & $CrLf)
         Else
            FF_ListBox_AddString(HWND_FORM1_LSTMOTORBOXSTATUS,"Not Successfull executed" & $CrLf)
         End If
      Else
         FF_ListBox_AddString(HWND_FORM1_LSTMOTORBOXSTATUS,"First executed the init procedure" & $CrLf)
      End If
     
      'TestDone()
End Function



6. MotoBox32.bas (dll)
=================


FUNCTION dll_Write ALIAS "dll_write"(BYVAL waar_schrijven AS LONG, BYVAL weg_te_schrijven AS LONG) EXPORT AS LONG

...................

END FUNCTION


7. Error 516
=========



Best regards
Stephane

Attachment : MotoBox32.zip
Stephane Fonteyne
Ba. Elektronica - ICT
GSM : +32-xxxxxxxxxx
PowerBasic Developer & Hardware Support

Haakon Birkeland

As I wrote earlier;

Quote1) Move the include (#INCLUDE "MotorBox32.inc") to the bottom of FF_AppStart, and make sure the path to it is correct.

When I write bottom, I mean bottom â€" not inside a IF structure further up the file.

Reading the comments in FF_AppStart would be helpful to you;

' Place your user defined Declares, Constants, and #Include files below this line. FireFly will not
' parse any of your defined #Include files - it simply includes it in the final generated code.
' -------------------------------------------------------------------------------------------------

Once you put the declare in the correct place, PowerBasic will no longer be confused about what sort of value the function will return.
Haakon 8o)