Коррекция по реперным точкам (KMotionCNC Fiducial Alignment)
Коррекция по реперным точкам из данного примера использует С# программу расположенную по адресу <Install>\PC VCS Example\MeasureFiducials
Видео:
Программа создает или перезаписывает файл геометрической коррекции с именем:
<Install Directory>\KMotion\Data\FiducialsMap.txt
Путь к этому файлу необходимо указать в KMotionCNC Tool Setup | Tool Setup Files configuration page как показано здесь:
Созданный файл геометрической коррекции точек размером 2x2, показан ниже. Таблица отображает скорректированные местоположения квадрата размером 1x1 дюйм с началом координат в центре.
2,2
1,1
-0.5,-0.5
0,0,-0.411272,-0.508541,0
0,1,0.598128,-0.507930,0
1,0,-0.411883,0.500859,0
1,1,0.597517,0.501470,0
Настройки приложения заграются из файла:
<Install>\\PC VCS Examples\\MeasureFiducials\\MeasureFiducialSettings.txt
Который имеет фиксированный формат (избегайте лишних пробелов). JogSpeed управляет скоростью кнопок Jog в единицах/дюймах для x и y. Разрешение должно быть установлено на то же значение, что и в KMotionCNC в единицах/дюймах. Если в вашей системе установлено более одного устройства видеозахвата, вы можете управлять тем, который выбран с помощью параметра VideoDevice. Нумерация начинается с нуля. MouseMag регулирует коэффициент между движением мыши и движением оси.
JogSpeed 600
Resolution 10000 10000
VideoDevice 0
MouseMag 0.25
KMotionCNC получает событие для повторной загрузки текущего файла геометрической коррекции. Пример на C# поиска и открытия окна KMotionCNC:
[
DllImport("User32.dll", SetLastError = true)] public static extern IntPtr FindWindow(String lpClassName, String lpWindowName);IntPtr KMotionCNCWindow = FindWindow("KMotionCNC", null);
и отправка события в KMotionCNC :
[
return: MarshalAs(UnmanagedType.Bool)][
DllImport("user32.dll", SetLastError = true)] public static extern bool PostMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);
uint WM_COMMAND = 0x0111;
int ID_ReloadGeoCorrection = 33016;
PostMessage(KMotionCNCWindow, WM_COMMAND, ID_ReloadGeoCorrection, 0);