Máš
KFLOP od Dynomotion, senzor/sondu na 3 osy (dotyková sonda / encoders) už je připojená, ale nechceš řídit motory, jen
odečítat aktuální polohy (pozice os) a poslat je do Visual Basicu (ať už VB6 nebo VB.NET), abys je dál zpracoval podle sebe.
Řešení je přímo v oficiálním balíčku KMotion – Dynomotion k tomu poskytuje hotové knihovny pro Visual Basic (i pro .NET). Není potřeba vymýšlet vlastní komunikaci přes USB/serial ani nic složitého.
Co udělat (krok za krokem):
1. Stáhni si
nejnovější KMotion software (zdarma):
http://dynomotion.com/Software/Download.html
(nebo přímo z
https://www.store.dynomotion.com/pages/download)
2. Nainstaluj ho. V instalačním adresáři (obvykle
C:\KMotion nebo podobně) najdeš složky:
- Visual Basic Interface Library + příklady (pro klasický VB)
- .NET Interface Library + C# / VB.NET examples (doporučuji, pokud používáš VB.NET – je modernější a stabilnější)
3. V balíčku je připravená
DLL (KMotionDLL.dll nebo podobná) a deklarace pro VB (soubor s Declare funkcemi nebo celý projekt jako template).
V balíčku je připravená DLL (KMotionDLL.dll nebo podobná) a deklarace pro VB (soubor s
Declare funkcemi nebo celý projekt jako template).
4. Klíčové funkce, které potřebuješ (jen pro čtení polohy):
- Připojíš se k KFLOP přes USB (KM_Connect() nebo podobné).
- Pak jednoduše voláš GetStatus() nebo GetAxisPosition(axis) / KM_Axis třídu – vrací ti aktuální encoder pozice na všech 3 osách (v reálném čase, thread-safe).
- Žádné řízení motorů, žádné G-code, jen čtení.
Příklad jednoduchého kódu (z oficiálních VB.NET examples):
Kód: Vybrat vše
' Deklarace (nebo přidej reference na KMotion DLL)
Dim KM As New KMotionLib.KMotion ' nebo podle názvu v examplech
If KM.Connect() Then
Dim status As KMotionLib.KMotionStatus
status = KM.GetStatus()
' Pozice os 0,1,2 (tvé 3 osy senzoru)
Dim posX As Double = status.Axis(0).Position
Dim posY As Double = status.Axis(1).Position
Dim posZ As Double = status.Axis(2).Position
' Tady už si data zpracuješ jak chceš (do tvého algoritmu, zvuku, obrazu atd.)
Console.WriteLine("X: " & posX & " Y: " & posY & " Z: " & posZ)
End If
Přesně tohle je v balíčku jako hotový příklad (je tam i plný VB.NET CNC program od Ricka Caddella, který můžeš rozsekat a použít jen čtecí část).
Pokud ti to pořád nejde (např. 32/64bit problém, deklarace apod.), napiš přesně:
1. Jestli používáš VB6 nebo VB.NET
2. Jakou verzi KMotion máš
3. Jak přesně máš sondu připojenou (na které kanály KFLOP – encoders? analog?).
Můžu ti pak poslat přesnější snippet nebo screeny z dokumentace.
Proč to předtím nefungovalo? Americká dokumentace je trochu rozházená – knihovny pro VB jsou schované v examples, nejsou v hlavním manuálu na první stránce. Proto to vypadalo, že „nespolupracuje“.
Pokud bys chtěl úplně jednodušší cestu (bez KFLOP), dalo by se to řešit i levněji přes Arduino + SerialPort v VB (jen čtení I2C/SPI senzoru), ale když už KFLOP máš a je připojený, tak ho využij – je to přesně na to stavěné.
Dej vědět, jak to dopadlo – rád pomůžu dál!
(a díky JPLABS za tipy, ale transputery jsou fakt overkill na pouhé čtení polohy

)