hallo, ich bin neu mit glbasic beschäftigt. zur zeit noch in einer testphase.
wie kann ich die mit purebasic erstellte dll ansprechen. die musterdll die ich hier irgendwie einmal gelesen habe gibt noch nicht wesentliches her für eine anwendung.
diese dll unten ist für die com-schnittstelle.
Global HCom.l
Global Chaine.s
Global los.s
Global buffer.c
ProcedureDLL.l com_open()
If HCom=0
#BufferIn = 17000
#BufferOut = 17000
Chaine="COM1:19200,N,8,1"
HCom=ComOpen(Chaine,0 ,#BufferIn,#BufferOut)
ProcedureReturn Hcom.l
EndIf
EndProcedure
ProcedureDLL com_txd(text.s)
los.s = text +Chr(13)
ComWrite(HCom,@los,Len(los))
EndProcedure
ProcedureDLL.c com_rxd()
ComRead(HCom,@buffer,1)
ProcedureReturn buffer.c
EndProcedure
ProcedureDLL com_close()
If HCom <> 0
If ComClose(HCom)
HCom = 0
EndIf
EndIf
EndProcedure
danke für die hilfe.
mfg
Ich kann kein PureBasic. Kannst Du die .dll mal hochladen //www.zshare.com, dann schau ich mir die Parameter mal an un schreib Dir GLBasic code dafür.
wie kann ich die dll von dem obigen pure-sourcecode hochladen?
mfg
Oh zshare hat sich geändert...
Ist das so etwa:
com_open(), gibt 32bit integer zurück, keine Argumente.
com_txd(), gibt nichts zurück, erwartet Zeiger auf 8bit character string.
com_rxd(), gibt 8 bit character zurück, erwartet keine Argumente.
com_close(), nix zrück, keine Args.
Ja?
Jetzt ist noch wichtig, welche Aufrufkonvention gemacht wurde.
Das kann man einfach testen - wenn's scheppert, passt sie nicht ;)
// Damit schließt man die Main() ab
FUNCTION dummy:
ENDFUNCTION
INLINE
#define EXTC extern "C"
#define CALLCV __stdcall
// Wenn's nicht geht: probieren mit:
// #define EXTC
// #define CALLCV
// oder
// #define EXTC extern "C"
// #define CALLCV
EXTC {
int (CALLCV *xcom_open)()=0; DLLCALL("muster.dll", "com_open", (void**)&xcom_open);
void (CALLCV *xcom_txd )(const char*)=0; DLLCALL("muster.dll", "com_txd" , (void**)&xcom_txd );
char (CALLCV *xcom_rxd )()=0; DLLCALL("muster.dll", "com_rxd" , (void**)&xcom_rxd );
void (CALLCV *xcom_close)()=0; DLLCALL("muster.dll", "com_close",(void**)&xcom_close);
}
ENDINLINE
FUNCTION com_open:
INLINE
return xcom_open();
ENDINLINE
ENDFUNCTION
FUNCTION com_txd: text$
INLINE
xcom_txd(text_Str.c_str() );
ENDINLINE
ENDFUNCTION
FUNCTION com_rxd$:
INLINE
return CHR_Str(xcom_rxd());
ENDINLINE
ENDFUNCTION
FUNCTION com_close:
INLINE
xcom_close();
ENDINLINE
ENDFUNCTION
please can you translate to english :)