Readme: Updated string retrievement
This commit is contained in:
parent
d10654555a
commit
670c1f7ff4
25
README.md
25
README.md
@ -4,7 +4,6 @@ This is a DLL extension for [AutoHotkey](https://www.autohotkey.com/) that enabl
|
|||||||
|
|
||||||
## Work in progress
|
## Work in progress
|
||||||
Currently this project is unfinished, there may be missing functionality and errors may occur!
|
Currently this project is unfinished, there may be missing functionality and errors may occur!
|
||||||
* After multiple calls of [`getStringData()`](https://files.eleton-audio.de/gitea/Ludwig/OSC2AHK#get-string-data) a heap memory fault occurs. This could also be a error in the calling AHK script (see [`msghandlerString()` in the test script](https://files.eleton-audio.de/gitea/Ludwig/OSC2AHK/src/branch/master/msgtest.ahk#L41)).
|
|
||||||
* OSC address wildcards are not supported yet
|
* OSC address wildcards are not supported yet
|
||||||
* Documentation could be improved
|
* Documentation could be improved
|
||||||
|
|
||||||
@ -114,34 +113,20 @@ DllCall("OSC2AHK.dll\removeListener", AStr, "/test1")
|
|||||||
```
|
```
|
||||||
|
|
||||||
#### Get string data
|
#### Get string data
|
||||||
__Work in progress, this is not working properly for now__
|
As string data carried by OSC messages may be of varying length and cannot directly be passed by system messages. Therefore, the string is buffered in the DLL and the `data` variable of the callback function receives a unique identifier to the stored string. This string then can be retrieved later on from the AHK script by calling this function.
|
||||||
|
|
||||||
As string data carried by OSC messages may be of varying length, they cannot directly be passed by system messages. Therefore, the string is buffered in the DLL and the `data` variable of the callback function receives a unique identifier to the stored string. This string then can be retreived later on by the AHK script by calling this function.
|
|
||||||
```cpp
|
```cpp
|
||||||
char* getStringData(char* targetString, unsigned int targetSize, unsigned int StringID);
|
char* getStringData(char* targetString, unsigned int targetSize, unsigned int StringID);
|
||||||
```
|
```
|
||||||
This function writes the stored string to the `targetString` and also removes it from the buffer inside the DLL.
|
This function writes the stored string to the `targetString` and also removes it from the buffer inside the DLL.
|
||||||
|
|
||||||
A example AHK snippet could look like this:
|
A callback functin in AHK could look like this (also look at the [string example](https://files.eleton-audio.de/gitea/Ludwig/OSC2AHK/src/branch/master/examples/string_example.ahk)):
|
||||||
```
|
```
|
||||||
global oscTypeString := 8
|
|
||||||
|
|
||||||
DllCall("OSC2AHK.dll\addListener", AStr, "/test2", UInt, 0x1004, UInt, oscTypeString)
|
|
||||||
OnMessage(0x1004, "msghandlerString")
|
|
||||||
|
|
||||||
msghandlerString(oscType, data, msgID, hwnd)
|
msghandlerString(oscType, data, msgID, hwnd)
|
||||||
{
|
{
|
||||||
if (wParam != oscTypeString)
|
VarSetCapacity(theString, 20)
|
||||||
{ ; not a string!
|
theString := DllCall("OSC2AHK.dll\getStringData", str, theString, UInt, 20, UInt, data, AStr)
|
||||||
return
|
|
||||||
}
|
|
||||||
; We were notified that a OSC string message with the specified address was received
|
|
||||||
; and the string payload was stored with the ID passed by 'data'.
|
|
||||||
; Now we will retrieve this string from the DLL.
|
|
||||||
VarSetCapacity(theStr, 20)
|
|
||||||
theStr := DllCall("OSC2AHK.dll\getStringData", AStr, theStr, UInt, 20, UInt, lParam, "Cdecl AStr")
|
|
||||||
|
|
||||||
msgbox,%theStr%
|
msgbox,Got string: %theString%
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user