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
=========
(https://www.planetsquires.com/protect/forum/proxy.php?request=http%3A%2F%2Fimg713.imageshack.us%2Fimg713%2F2529%2Fimage4vi.jpg&hash=ebbf047112a5027f553476902f14372d43595970) (http://imageshack.us/photo/my-images/713/image4vi.jpg/)
Best regards
Stephane
Attachment : MotoBox32.zip
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.