Коррекция по реперным точкам (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);