Commit e90b5c6c 顾剑亮

upload

0 个父辈
正在显示 83 个修改的文件 包含 3965 行增加0 行删除
此文件类型无法预览
{
"ExpandedNodes": [
""
],
"PreviewInSolutionExplorer": false
}
\ No newline at end of file \ No newline at end of file
此文件类型无法预览

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30717.126
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Rmaxis", "Rmaxis\Rmaxis.csproj", "{C2340D11-8D0E-417D-94FE-F91D5D05B004}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test", "Test\Test.csproj", "{A367D23D-969F-4CD5-8073-25EBD2F2F422}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{C2340D11-8D0E-417D-94FE-F91D5D05B004}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C2340D11-8D0E-417D-94FE-F91D5D05B004}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C2340D11-8D0E-417D-94FE-F91D5D05B004}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C2340D11-8D0E-417D-94FE-F91D5D05B004}.Release|Any CPU.Build.0 = Release|Any CPU
{A367D23D-969F-4CD5-8073-25EBD2F2F422}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A367D23D-969F-4CD5-8073-25EBD2F2F422}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A367D23D-969F-4CD5-8073-25EBD2F2F422}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A367D23D-969F-4CD5-8073-25EBD2F2F422}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {02577B26-01E2-4DBF-A3F0-084CCAE7105A}
EndGlobalSection
EndGlobal
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Reflection;
namespace MotorMaster.Sdk
{
public class RMAxis
{
private static class Win32
{
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr LoadLibrary(string path);
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
public static extern bool FreeLibrary(IntPtr handle);
[DllImport("kernel32.dll", CharSet = CharSet.Ansi)]
public static extern IntPtr GetProcAddress(IntPtr handle, string method_name);
}
public static class Native
{
[StructLayout(LayoutKind.Sequential, Pack = 4)]
public struct EXCEPTION_POINTERS
{
public IntPtr pExceptionRecord;
public IntPtr pContext;
}
[StructLayout(LayoutKind.Sequential, Pack = 4)]
public struct EXCEPTION_RECORD
{
public UInt32 ExceptionCode;
public UInt32 ExceptionFlags;
public IntPtr pExceptionRecord;
public IntPtr ExceptionAddress;
public UInt32 NumberParameters;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 15)]
public UInt32[] ExceptionInformation;
}
[StructLayout(LayoutKind.Sequential, Pack = 4, CharSet = CharSet.Ansi)]
public struct RawException
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 0xFF)]
public string message;
[MarshalAs(UnmanagedType.I4)]
public int line_number;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 0xFF)]
public string src_file;
}
public static Exception ToManagedException(SEHException ex)
{
Exception result = new Exception("Unknown Error", ex);
int iExceptionCode = Marshal.GetExceptionCode();
IntPtr pExceptionPointers = Marshal.GetExceptionPointers();
EXCEPTION_POINTERS exception_pointers = (EXCEPTION_POINTERS)Marshal.PtrToStructure(pExceptionPointers, typeof(EXCEPTION_POINTERS));
EXCEPTION_RECORD exception_record = (EXCEPTION_RECORD)Marshal.PtrToStructure(exception_pointers.pExceptionRecord, typeof(EXCEPTION_RECORD));
if (((UInt32)iExceptionCode == 100) && (exception_record.NumberParameters > 0))
{
RawException native = (RawException)Marshal.PtrToStructure((IntPtr)(exception_record.ExceptionInformation[0]), typeof(RawException));
result = new Exception(native.message, ex);
result.Data["line_number"] = native.line_number;
result.Data["src_file"] = native.src_file;
Marshal.DestroyStructure((IntPtr)(exception_record.ExceptionInformation[0]), typeof(RawException));
Marshal.FreeCoTaskMem((IntPtr)(exception_record.ExceptionInformation[0]));
}
return result;
}
public enum PARAM_TYPE : uint
{
BOOLEAN = 0,
INT32 = 1,
FLOAT = 2,
ENUM = 3
}
public enum PARAM_EDIT : uint
{
NORMAL = 0,
FACTORY = 1,
FUNCTION = 2,
READYONLY = 3
}
public const int MAX_STRING_SIZE = 0xFF;
public const int MAX_ARRAY_SIZE = 0x03EB;
[StructLayout(LayoutKind.Sequential, Pack = 4, CharSet = CharSet.Ansi)]
public struct parameter_info_t
{
[MarshalAs(UnmanagedType.U4)]
public PARAM_TYPE type;
[MarshalAs(UnmanagedType.U4)]
public PARAM_EDIT editability;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = MAX_STRING_SIZE)]
public string description;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = MAX_STRING_SIZE)]
public string enum_type;
}
public enum MOTION_COMMAND : uint
{
NONE = 0,
GO_HOME = 1,
DELAY = 2,
MOVE_ABSOLUTE = 3,
PUSH = 4,
MOVE_RELATIVE = 5,
CLOSE_LOOP_PUSH = 6
};
[StructLayout(LayoutKind.Sequential, Pack = 4)]
public struct motion_command_t
{
public MOTION_COMMAND type;
public float position;
public float velocity;
public float acceleration;
public float deacceleration;
public float band;
public float push_force;
public float push_distance;
public int delay;
public int next_command_index;
}
[StructLayout(LayoutKind.Sequential, Pack = 4)]
public struct version_t
{
public int major;
public int minor;
public int build;
public int type;
}
public static List<string> ToStringArray(IntPtr array_ptr, int count)
{
var result = new List<string>(count);
for (int i = 0; i < count; i++)
{
var temp = Marshal.PtrToStringAnsi(array_ptr + Native.MAX_STRING_SIZE * i, Native.MAX_STRING_SIZE);
result.Add(temp.Substring(0, temp.IndexOf('\0')));
}
return result;
}
// Exception Settings
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate void rm_set_exception_throw_delegate([MarshalAs(UnmanagedType.U1)] bool enable);
public static rm_set_exception_throw_delegate rm_set_exception_throw;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate IntPtr rm_get_exception_delegate();
public static rm_get_exception_delegate rm_get_exception;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate void rm_set_config_path_delegate([MarshalAs(UnmanagedType.LPStr)]string path);
public static rm_set_config_path_delegate rm_set_config_path;
// Factroy Create
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate IntPtr rm_create_modbus_rtu_delegate([MarshalAs(UnmanagedType.LPStr)]string device, int baudrate, byte slave_id);
public static rm_create_modbus_rtu_delegate rm_create_modbus_rtu;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate IntPtr rm_create_modbus_tcp_delegate([MarshalAs(UnmanagedType.LPStr)]string address, int port);
public static rm_create_modbus_tcp_delegate rm_create_modbus_tcp;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate IntPtr rm_create_modbus_rtu_tcp_delegate([MarshalAs(UnmanagedType.LPStr)]string device, int baudrate, byte slave_id, int port);
public static rm_create_modbus_rtu_tcp_delegate rm_create_modbus_rtu_tcp;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate IntPtr rm_create_canopen_delegate([MarshalAs(UnmanagedType.LPStr)]string device, int bitrate, byte node_id);
public static rm_create_canopen_delegate rm_create_canopen;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate IntPtr rm_create_mock_delegate(version_t version);
public static rm_create_mock_delegate rm_create_mock;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate void rm_destroy_delegate(IntPtr handle);
public static rm_destroy_delegate rm_destroy;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate version_t rm_get_version_delegate(IntPtr handle);
public static rm_get_version_delegate rm_get_version;
// io
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate int rm_get_input_count_delegate(IntPtr handle);
public static rm_get_input_count_delegate rm_get_input_count;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate int rm_get_output_count_delegate(IntPtr handle);
public static rm_get_output_count_delegate rm_get_output_count;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate int rm_list_input_signal_delegate(IntPtr handle, IntPtr signal_out);
public static rm_list_input_signal_delegate rm_list_input_signal;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate int rm_list_output_signal_delegate(IntPtr handle, IntPtr signal_out);
public static rm_list_input_signal_delegate rm_list_output_signal;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi, ThrowOnUnmappableChar = true)]
public delegate void rm_set_input_signal_delegate(IntPtr handle, [MarshalAs(UnmanagedType.LPStr)]string signal, [MarshalAs(UnmanagedType.U1)]bool level);
public static rm_set_input_signal_delegate rm_set_input_signal;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi, ThrowOnUnmappableChar = true)]
[return: MarshalAs(UnmanagedType.U1)]
public delegate bool rm_get_input_signal_delegate(IntPtr handle, [MarshalAs(UnmanagedType.LPStr)]string signal);
public static rm_get_input_signal_delegate rm_get_input_signal;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi, ThrowOnUnmappableChar = true)]
[return: MarshalAs(UnmanagedType.U1)]
public delegate bool rm_get_output_signal_delegate(IntPtr handle, [MarshalAs(UnmanagedType.LPStr)]string signal);
public static rm_get_output_signal_delegate rm_get_output_signal;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate IntPtr rm_get_map_input_delegate(IntPtr handle, int port);
public static rm_get_map_input_delegate rm_get_map_input;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate IntPtr rm_get_map_output_delegate(IntPtr handle, int port);
public static rm_get_map_output_delegate rm_get_map_output;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi, ThrowOnUnmappableChar = true)]
public delegate void rm_set_map_input_delegate(IntPtr handle, [MarshalAs(UnmanagedType.LPStr)]string signal, int port);
public static rm_set_map_input_delegate rm_set_map_input;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi, ThrowOnUnmappableChar = true)]
public delegate void rm_set_map_output_delegate(IntPtr handle, [MarshalAs(UnmanagedType.LPStr)]string signal, int port);
public static rm_set_map_output_delegate rm_set_map_output;
// motion
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate void rm_config_motion_delegate(IntPtr handle, float velocity, float acceleration, float deacceleration);
public static rm_config_motion_delegate rm_config_motion;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate void rm_move_to_delegate(IntPtr handle, float position);
public static rm_move_to_delegate rm_move_to;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate void rm_go_home_delegate(IntPtr handle);
public static rm_go_home_delegate rm_go_home;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate void rm_move_absolute_delegate(IntPtr handle, float position, float velocity, float acceleration, float deacceleration, float band);
public static rm_move_absolute_delegate rm_move_absolute;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate void rm_push_delegate(IntPtr handle, float force, float distance, float velocity);
public static rm_push_delegate rm_push;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate void rm_precise_push_delegate(IntPtr handle, float force, float distance, float velocity, float force_band, uint force_check_time);
public static rm_precise_push_delegate rm_precise_push;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
[return: MarshalAs(UnmanagedType.U1)]
public delegate bool rm_wait_complete_delegate(IntPtr handle, uint timeout_ms);
public static rm_wait_complete_delegate rm_wait_complete;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
[return: MarshalAs(UnmanagedType.U1)]
public delegate bool rm_is_moving_delegate(IntPtr handle);
public static rm_is_moving_delegate rm_is_moving;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
[return: MarshalAs(UnmanagedType.U1)]
public delegate bool rm_is_reached_delegate(IntPtr handle);
public static rm_is_reached_delegate rm_is_reached;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
[return: MarshalAs(UnmanagedType.U1)]
public delegate bool rm_is_push_empty_delegate(IntPtr handle);
public static rm_is_push_empty_delegate rm_is_push_empty;
// command
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate void rm_set_command_delegate(IntPtr handle, int index, motion_command_t command);
public static rm_set_command_delegate rm_set_command;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate motion_command_t rm_get_command_delegate(IntPtr handle, int index);
public static rm_get_command_delegate rm_get_command;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate void rm_execute_command_delegate(IntPtr handle, motion_command_t command);
public static rm_execute_command_delegate rm_execute_command;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate void rm_trig_command_delegate(IntPtr handle, int index);
public static rm_trig_command_delegate rm_trig_command;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate void rm_load_commands_delegate(IntPtr handle);
public static rm_load_commands_delegate rm_load_commands;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate void rm_save_commands_delegate(IntPtr handle);
public static rm_save_commands_delegate rm_save_commands;
// property
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate float rm_position_delegate(IntPtr handle);
public static rm_position_delegate rm_position;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate float rm_velocity_delegate(IntPtr handle);
public static rm_velocity_delegate rm_velocity;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate float rm_torque_delegate(IntPtr handle);
public static rm_torque_delegate rm_torque;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate float rm_force_sensor_delegate(IntPtr handle);
public static rm_force_sensor_delegate rm_force_sensor;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate UInt32 rm_error_code_delegate(IntPtr handle);
public static rm_error_code_delegate rm_error_code;
// parameters
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate int rm_list_parameters_delegate(IntPtr handle, IntPtr param_name_out, IntPtr param_out);
public static rm_list_parameters_delegate rm_list_parameters;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate int rm_list_enum_types_delegate(IntPtr handle, IntPtr types_out);
public static rm_list_enum_types_delegate rm_list_enum_types;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi, ThrowOnUnmappableChar = true)]
public delegate int rm_list_enum_def_delegate(IntPtr handle, [MarshalAs(UnmanagedType.LPStr)]string enum_type, IntPtr keys_out, IntPtr values_out);
public static rm_list_enum_def_delegate rm_list_enum_def;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi, ThrowOnUnmappableChar = true)]
public delegate IntPtr rm_get_enum_type_string_delegate(IntPtr handle, [MarshalAs(UnmanagedType.LPStr)]string enum_type, int enum_value);
public static rm_get_enum_type_string_delegate rm_get_enum_type_string;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi, ThrowOnUnmappableChar = true)]
public delegate int rm_get_enum_type_value_delegate(IntPtr handle, [MarshalAs(UnmanagedType.LPStr)]string enum_type, [MarshalAs(UnmanagedType.LPStr)]string enum_type_string);
public static rm_get_enum_type_value_delegate rm_get_enum_type_value;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi, ThrowOnUnmappableChar = true)]
public delegate void rm_get_parameter_delegate(IntPtr handle, [MarshalAs(UnmanagedType.LPStr)]string name, IntPtr data);
public static rm_get_parameter_delegate rm_get_parameter;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi, ThrowOnUnmappableChar = true)]
public delegate void rm_set_parameter_delegate(IntPtr handle, [MarshalAs(UnmanagedType.LPStr)]string name, IntPtr data);
public static rm_set_parameter_delegate rm_set_parameter;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate void rm_load_parameters_delegate(IntPtr handle);
public static rm_load_parameters_delegate rm_load_parameters;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate void rm_save_parameters_delegate(IntPtr handle);
public static rm_save_parameters_delegate rm_save_parameters;
// misc
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate void rm_reset_error_delegate(IntPtr handle);
public static rm_reset_error_delegate rm_reset_error;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate void rm_set_servo_on_off_delegate(IntPtr handle, [MarshalAs(UnmanagedType.U1)]bool enable);
public static rm_set_servo_on_off_delegate rm_set_servo_on_off;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
[return: MarshalAs(UnmanagedType.U1)]
public delegate bool rm_get_servo_on_off_delegate(IntPtr handle);
public static rm_get_servo_on_off_delegate rm_get_servo_on_off;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate void rm_stop_delegate(IntPtr handle);
public static rm_stop_delegate rm_stop;
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public delegate void rm_debug_delegate(IntPtr handle, IntPtr info);
public static rm_debug_delegate rm_debug;
}
private static IntPtr handle = IntPtr.Zero;
public static void Initialize(string sdk_path)
{
handle = Win32.LoadLibrary(sdk_path);
if (handle != IntPtr.Zero)
{
FieldInfo[] fields = typeof(Native).GetFields(BindingFlags.Static | BindingFlags.Public);
foreach (FieldInfo field in fields)
if (field.FieldType != typeof(int))
field.SetValue(null, Marshal.GetDelegateForFunctionPointer(Win32.GetProcAddress(handle, field.Name), field.FieldType));
//Native.rm_set_exception_throw(true);
return;
}
throw new Exception($"{sdk_path} 无法加载");
}
private IntPtr instance = IntPtr.Zero;
public RMAxis(IntPtr instance)
{
this.instance = instance;
}
private T RunWithManaged<T>(Func<T> function)
{
if (disposed)
return default(T);
return StaticRunWithManaged(function);
}
private void RunWithManaged(Action function)
{
if (disposed)
return;
StaticRunWithManaged(function);
}
private static T StaticRunWithManaged<T>(Func<T> function)
{
var result = function();
var exception_ptr = Native.rm_get_exception();
if (exception_ptr == IntPtr.Zero)
return result;
else
{
Native.RawException native = (Native.RawException)Marshal.PtrToStructure(exception_ptr, typeof(Native.RawException));
var ex = new Exception(native.message);
ex.Data["line_number"] = native.line_number;
ex.Data["src_file"] = native.src_file;
throw ex;
}
}
private static void StaticRunWithManaged(Action function)
{
function();
var exception_ptr = Native.rm_get_exception();
if (exception_ptr == IntPtr.Zero)
return;
else
{
Native.RawException native = (Native.RawException)Marshal.PtrToStructure(exception_ptr, typeof(Native.RawException));
var ex = new Exception(native.message);
ex.Data["line_number"] = native.line_number;
ex.Data["src_file"] = native.src_file;
throw ex;
}
}
public static void SetConfigPath(string path)
{
StaticRunWithManaged(() => Native.rm_set_config_path(path));
}
public static RMAxis CreateModbus(string device, int baudrate, ushort slave_id)
{
return new RMAxis(StaticRunWithManaged(() => Native.rm_create_modbus_rtu(device, baudrate, (byte)slave_id)));
}
public static RMAxis CreateModbus(string device, int baudrate, ushort slave_id, int port)
{
return new RMAxis(StaticRunWithManaged(() => Native.rm_create_modbus_rtu_tcp(device, baudrate, (byte)slave_id, port)));
}
public static RMAxis CreateModbus(string address, int port)
{
return new RMAxis(StaticRunWithManaged(() => Native.rm_create_modbus_tcp(address, port)));
}
public static RMAxis CreateCanOpen(string device, int bitrate, ushort node_id)
{
return new RMAxis(StaticRunWithManaged(() => Native.rm_create_canopen(device, bitrate, (byte)node_id)));
}
public static RMAxis CreateMock(Native.version_t version)
{
return new RMAxis(StaticRunWithManaged(() => Native.rm_create_mock(version)));
}
public static void Destroy(RMAxis axis)
{
axis.disposed = true;
StaticRunWithManaged(() => Native.rm_destroy(axis.instance));
}
private bool disposed = false;
public Native.version_t Version
{
get
{
return RunWithManaged(() => Native.rm_get_version(this.instance));
}
}
public int InputCount
{
get
{
return RunWithManaged(() => Native.rm_get_input_count(this.instance));
}
}
public int OutputCount
{
get
{
return RunWithManaged(() => Native.rm_get_output_count(this.instance));
}
}
public List<string> InputSignal
{
get
{
return RunWithManaged(() =>
{
IntPtr data_out = Marshal.AllocHGlobal(Native.MAX_ARRAY_SIZE * Native.MAX_STRING_SIZE + 0x100);
var count = Native.rm_list_input_signal(this.instance, data_out);
var result = Native.ToStringArray(data_out, count);
Marshal.FreeHGlobal(data_out);
return result;
});
}
}
public List<string> OutputSignal
{
get
{
return RunWithManaged(() =>
{
IntPtr data_out = Marshal.AllocHGlobal(Native.MAX_ARRAY_SIZE * Native.MAX_STRING_SIZE + 0x100);
var count = Native.rm_list_output_signal(this.instance, data_out);
var result = Native.ToStringArray(data_out, count);
Marshal.FreeHGlobal(data_out);
return result;
});
}
}
public void SetInputSignal(string signal, bool level)
{
RunWithManaged(() => Native.rm_set_input_signal(this.instance, signal, level));
}
public bool GetInputSignal(string signal)
{
return RunWithManaged(() => Native.rm_get_input_signal(this.instance, signal));
}
public bool GetOutputSignal(string signal)
{
return RunWithManaged(() => Native.rm_get_output_signal(this.instance, signal));
}
public string GetInputMap(int port)
{
return RunWithManaged(() =>
{
var str_ptr = Native.rm_get_map_input(this.instance, port);
var temp = Marshal.PtrToStringAnsi(str_ptr, Native.MAX_STRING_SIZE);
temp = temp.Substring(0, temp.IndexOf('\0'));
return temp;
});
}
public string GetOutputMap(int port)
{
return RunWithManaged(() =>
{
var str_ptr = Native.rm_get_map_output(this.instance, port);
var temp = Marshal.PtrToStringAnsi(str_ptr, Native.MAX_STRING_SIZE);
temp = temp.Substring(0, temp.IndexOf('\0'));
return temp;
});
}
public void SetInputMap(string signal, int port)
{
RunWithManaged(() => Native.rm_set_map_input(this.instance, signal, port));
}
public void SetOutputMap(string signal, int port)
{
RunWithManaged(() => Native.rm_set_map_output(this.instance, signal, port));
}
public void ConfigMotion(float velocity, float acceleration, float deacceleration)
{
RunWithManaged(() => Native.rm_config_motion(this.instance, velocity, acceleration, deacceleration));
}
public void MoveTo(float position)
{
RunWithManaged(() => Native.rm_move_to(this.instance, position));
}
public void GoHome()
{
RunWithManaged(() => Native.rm_go_home(this.instance));
}
public void MoveAbsolute(
float position, float velocity,
float acceleration, float deacceleration, float band
)
{
RunWithManaged(() => Native.rm_move_absolute(this.instance, position, velocity, acceleration, deacceleration, band));
}
public void Push(
float force,
float distance, float velocity
)
{
RunWithManaged(() => Native.rm_push(this.instance, force, distance, velocity));
}
public void PrecisePush(
float force,
float distance, float velocity,
float force_band, uint force_check_time
)
{
RunWithManaged(() => Native.rm_precise_push(this.instance, force, distance, velocity, force_band, force_check_time));
}
public bool WaitComplete(uint timeout_ms)
{
return RunWithManaged(() => Native.rm_wait_complete(this.instance, timeout_ms));
}
public bool IsMoving()
{
return RunWithManaged(() => Native.rm_is_moving(this.instance));
}
public bool IsReached()
{
return RunWithManaged(() => Native.rm_is_reached(this.instance));
}
public bool IsPushEmpty()
{
return RunWithManaged(() => Native.rm_is_push_empty(this.instance));
}
public void SetCommand(int index, Native.motion_command_t command)
{
RunWithManaged(() => Native.rm_set_command(this.instance, index, command));
}
public Native.motion_command_t GetCommand(int index)
{
return RunWithManaged(() => Native.rm_get_command(this.instance, index));
}
public void ExecuteCommand(Native.motion_command_t command)
{
RunWithManaged(() => Native.rm_execute_command(this.instance, command));
}
public void TrigCommand(int index)
{
RunWithManaged(() => Native.rm_trig_command(this.instance, index));
}
public void LoadCommands()
{
RunWithManaged(() => Native.rm_load_commands(this.instance));
}
public void SaveCommands()
{
RunWithManaged(() => Native.rm_save_commands(this.instance));
}
public float Position
{
get
{
return RunWithManaged(() => Native.rm_position(this.instance));
}
}
public float Velocity
{
get
{
return RunWithManaged(() => Native.rm_velocity(this.instance));
}
}
public float Torque
{
get
{
return RunWithManaged(() => Native.rm_torque(this.instance));
}
}
public float ForceSensor
{
get
{
return RunWithManaged(() => Native.rm_force_sensor(this.instance));
}
}
public uint ErrorCode
{
get
{
return RunWithManaged(() => Native.rm_error_code(this.instance));
}
}
public Dictionary<string, Native.parameter_info_t> Parameters
{
get
{
return RunWithManaged(() =>
{
var result = new Dictionary<string, Native.parameter_info_t>();
int param_struct_size = Marshal.SizeOf(typeof(Native.parameter_info_t));
IntPtr param_name_out = Marshal.AllocHGlobal(Native.MAX_ARRAY_SIZE * Native.MAX_STRING_SIZE + 0x100);
IntPtr param_info_out = Marshal.AllocHGlobal(Native.MAX_ARRAY_SIZE * param_struct_size + 0x100);
var count = Native.rm_list_parameters(this.instance, param_name_out, param_info_out);
var names = Native.ToStringArray(param_name_out, count);
for (int i = 0; i < count; i++)
result[names[i]] =
(Native.parameter_info_t)Marshal.PtrToStructure(
param_info_out + param_struct_size * i,
typeof(Native.parameter_info_t));
Marshal.FreeHGlobal(param_name_out);
Marshal.FreeHGlobal(param_info_out);
return result;
});
}
}
public List<string> EnumTypes
{
get
{
return RunWithManaged(() =>
{
IntPtr types_out = Marshal.AllocHGlobal(Native.MAX_ARRAY_SIZE * Native.MAX_STRING_SIZE + 0x100);
var count = Native.rm_list_enum_types(this.instance, types_out);
var result = Native.ToStringArray(types_out, count);
Marshal.FreeHGlobal(types_out);
return result;
});
}
}
public Dictionary<string, Dictionary<string, int>> EnumDefs
{
get
{
return RunWithManaged(() =>
{
var result = new Dictionary<string, Dictionary<string, int>>();
var enum_types = this.EnumTypes;
foreach (var enum_type in enum_types)
{
IntPtr keys_out = Marshal.AllocHGlobal(Native.MAX_ARRAY_SIZE * Native.MAX_STRING_SIZE + 0x100);
IntPtr values_out = Marshal.AllocHGlobal(Native.MAX_ARRAY_SIZE * 4 + 0x100);
var count = Native.rm_list_enum_def(this.instance, enum_type, keys_out, values_out);
var keys = Native.ToStringArray(keys_out, count);
var typedef = new Dictionary<string, int>();
for (int i = 0; i < count; i++)
typedef[keys[i]] = Marshal.ReadInt32(values_out + 4 * i);
Marshal.FreeHGlobal(keys_out);
Marshal.FreeHGlobal(values_out);
result[enum_type] = typedef;
}
return result;
});
}
}
public T GetParameter<T>(string name)
{
return RunWithManaged(() =>
{
var data_ptr = Marshal.AllocHGlobal(4);
Native.rm_get_parameter(this.instance, name, data_ptr);
var result = new byte[4];
Marshal.Copy(data_ptr, result, 0, 4);
Marshal.FreeHGlobal(data_ptr);
if (typeof(T) == typeof(int))
return (T)(object)BitConverter.ToInt32(result, 0);
else if (typeof(T) == typeof(bool))
return (T)(object)BitConverter.ToBoolean(result, 0);
else if (typeof(T) == typeof(float))
return (T)(object)BitConverter.ToSingle(result, 0);
else
return (T)(object)BitConverter.ToInt16(result, 0);
});
}
public void SetParameter<T>(string name, T value)
{
RunWithManaged(() =>
{
var data_ptr = Marshal.AllocHGlobal(4);
var data = new byte[4];
if (typeof(T) == typeof(int))
data = BitConverter.GetBytes((int)(object)value);
else if (typeof(T) == typeof(bool))
data = BitConverter.GetBytes((bool)(object)value);
else if (typeof(T) == typeof(float))
data = BitConverter.GetBytes((float)(object)value);
else
data = BitConverter.GetBytes((ushort)(object)value);
Marshal.Copy(data, 0, data_ptr, data.Length);
Native.rm_set_parameter(this.instance, name, data_ptr);
Marshal.FreeHGlobal(data_ptr);
});
}
public void LoadParameters()
{
RunWithManaged(() => Native.rm_load_parameters(this.instance));
}
public void SaveParameters()
{
RunWithManaged(() => Native.rm_save_parameters(this.instance));
}
public void ResetError()
{
RunWithManaged(() => Native.rm_reset_error(this.instance));
}
public bool ServoOnOff
{
get
{
return RunWithManaged(() => Native.rm_get_servo_on_off(this.instance));
}
set
{
RunWithManaged(() => Native.rm_set_servo_on_off(this.instance, value));
}
}
public void Stop()
{
RunWithManaged(() => Native.rm_stop(this.instance));
}
public void Debug(IntPtr info)
{
RunWithManaged(() => Native.rm_debug(this.instance, info));
}
}
}
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("Rmaxis")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Rmaxis")]
[assembly: AssemblyCopyright("Copyright © 2021")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 会使此程序集中的类型
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
//请将此类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("c2340d11-8d0e-417d-94fe-f91d5d05b004")]
// 程序集的版本信息由下列四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MotorMaster.Sdk;
namespace Neotel
{
/// <summary>
/// 增广智能电动夹爪(RM-C控制器)
/// </summary>
public class Rmaxis
{
private RMAxis device;
private readonly log4net.ILog LOG;
private readonly bool initOK;
public readonly string[] ErrorString = new string[] { "正常", "通用错误", "电机失相", "位置超差", "速度超差", "电机堵转", "初相励磁错误" };
/// <summary>
/// 增广智能电动夹爪(RM-C控制器)
/// </summary>
/// <param name="logName">日志名</param>
public Rmaxis(string logName = "Rmaxis")
{
LOG = log4net.LogManager.GetLogger(logName);
try
{
//使用SDK前,动态加载DLL和Config
RMAxis.Initialize(Environment.CurrentDirectory + "\\SDK\\MotorMaster.Sdk.dll");
RMAxis.SetConfigPath(Environment.CurrentDirectory + "\\SDK\\MotorMaster.config");
LOG.Info("Rmaxis Init OK");
initOK = true;
}
catch (Exception ex)
{
LOG.Error("Rmaxis Init", ex);
initOK = false;
}
}
/// <summary>
/// 串口是否连接
/// </summary>
public bool IsPortOpen { private set; get; } = false;
///// <summary>
///// 伺服是否打开
///// </summary>
//public bool IsServoOn
//{
// get => device.ServoOnOff;
//}
/// <summary>
/// 轴是否在运动
/// </summary>
public bool IsMoving { get => device.IsMoving(); }
/// <summary>
/// 轴是否到达运动目标
/// </summary>
public bool IsReached { get => device.IsReached(); }
/// <summary>
/// 轴是否推空(可以在Push完成后检测是否推压/夹持为空)
/// </summary>
public bool IsPushEmpty { get => device.IsPushEmpty(); }
/// <summary>
/// 错误代码
/// </summary>
public int ErrorCode { get => (int)device.ErrorCode; }
//========================================
/// <summary>
/// 打开串口
/// </summary>
/// <param name="portName">串口名</param>
/// <param name="axisNo">轴号</param>
/// <returns></returns>
public bool OpenPort(string portName, ushort axisNo = 0)
{
if (initOK)
{
try
{
device = RMAxis.CreateModbus("\\\\.\\" + portName.ToUpper(), 115200, axisNo);
LOG.Info("OpenPort OK");
IsPortOpen = true;
}
catch (Exception ex)
{
LOG.Error("OpenPort", ex);
IsPortOpen = false;
}
}
else
{
IsPortOpen = false;
}
return IsPortOpen;
}
/// <summary>
/// 关闭串口
/// </summary>
public void ClosePort()
{
if (!initOK) return;
if (device == null) return;
IsPortOpen = false;
try
{
RMAxis.Destroy(device);
device = null;
LOG.Info("ClosePort OK");
}
catch (Exception ex)
{
LOG.Error("ClosePort", ex);
}
}
/// <summary>
/// 重置控制器错误
/// </summary>
public void ResetError()
{
if (!IsPortOpen) return;
try
{
device.ResetError();
LOG.Info("ResetError OK");
}
catch (Exception ex)
{
LOG.Error("ResetError", ex);
}
}
///// <summary>
///// 打开伺服
///// </summary>
//public void ServoOn()
//{
// if (!IsPortOpen) return;
// try
// {
// if (!device.ServoOnOff)
// device.ServoOnOff = true;
// LOG.Info("ServoOn OK");
// }
// catch (Exception ex)
// {
// LOG.Error("ServoOn", ex);
// }
//}
///// <summary>
///// 关闭伺服
///// </summary>
//public void ServoOff()
//{
// if (!IsPortOpen) return;
// try
// {
// if (device.ServoOnOff)
// device.ServoOnOff = false;
// LOG.Info("ServoOff OK");
// }
// catch (Exception ex)
// {
// LOG.Error("ServoOff", ex);
// }
//}
/// <summary>
/// 停止轴运动
/// </summary>
public void StopAxis()
{
if (!IsPortOpen) return;
try
{
device.Stop();
LOG.Info("StopAxis OK");
}
catch (Exception ex)
{
LOG.Error("StopAxis", ex);
}
}
//========================================
/// <summary>
/// 控制器版本号
/// </summary>
/// <returns></returns>
public string GetVersion()
{
RMAxis.Native.version_t version = device.Version;
return string.Format("{0}.{1}.{2}.{3}", version.major, version.minor, version.build, version.type);
}
/// <summary>
/// 获取当前设置的出力值
/// </summary>
/// <returns>出力,%</returns>
public float GetTorque()
{
float n = -1;
if (!IsPortOpen) return n;
try
{
n = device.Torque;
LOG.Info("GetTorque OK");
}
catch (Exception ex)
{
n = -1;
LOG.Error("GetTorque", ex);
}
return n;
}
///// <summary>
///// 获取电机运动中的出力
///// </summary>
///// <returns>出力,%</returns>
//public float GetForce()
//{
// float n = -1;
// if (!IsPortOpen) return n;
// try
// {
// n = device.ForceSensor;
// LOG.Info("GetForce OK");
// }
// catch (Exception ex)
// {
// n = -1;
// LOG.Error("GetForce", ex);
// }
// return n;
//}
/// <summary>
/// 获取当前电机速度
/// </summary>
/// <returns>速度,mm/s</returns>
public float GetVelocity()
{
float n = -1;
if (!IsPortOpen) return n;
try
{
n = device.Velocity;
LOG.Info("GetVelocity OK");
}
catch (Exception ex)
{
n = -1;
LOG.Error("GetVelocity", ex);
}
return n;
}
/// <summary>
/// 获取当前位置
/// </summary>
/// <returns>位置,mm</returns>
public float GetPosition()
{
float n = -1;
if (!IsPortOpen) return n;
try
{
n = device.Position;
LOG.Info("GetPosition OK");
}
catch (Exception ex)
{
n = -1;
LOG.Error("GetPosition", ex);
}
return n;
}
//========================================
/// <summary>
/// 回原点
/// </summary>
public void GoHome()
{
if (!IsPortOpen) return;
LOG.Info("GoHome Start");
try
{
device.GoHome();
LOG.Info("GoHome OK");
}
catch (Exception ex)
{
LOG.Error("GoHome", ex);
}
}
/// <summary>
/// 推压运动
/// </summary>
/// <param name="force">出力,%</param>
/// <param name="distance">距离,mm</param>
/// <param name="velocity">速度,mm/s</param>
public void Push(float force, float distance, float velocity)
{
if (!IsPortOpen) return;
LOG.Info("Push Start");
try
{
device.Push(force, distance, velocity);
LOG.Info("Push OK");
}
catch (Exception ex)
{
LOG.Error("Push", ex);
}
}
/// <summary>
/// 绝对运动
/// </summary>
/// <param name="position">位置,mm</param>
/// <param name="velocity">速度,mm/s</param>
/// <param name="acceleration">加速度,mm/s^2</param>
/// <param name="deacceleration">减速度,mm/s^2</param>
/// <param name="band">定位范围,mm</param>
public void MoveAbsolute(float position, float velocity, float acceleration, float deacceleration, float band)
{
if (!IsPortOpen) return;
LOG.Info("MoveAbsolute Start");
try
{
device.MoveAbsolute(position, velocity, acceleration, deacceleration, band);
LOG.Info("MoveAbsolute OK");
}
catch (Exception ex)
{
LOG.Error("MoveAbsolute", ex);
}
}
/// <summary>
/// 直接运动到指定位置
/// </summary>
/// <param name="position">位置,mm</param>
public void MoveTo(float position)
{
if (!IsPortOpen) return;
LOG.Info("MoveTo Start");
try
{
device.MoveTo(position);
LOG.Info("MoveTo OK");
}
catch (Exception ex)
{
LOG.Error("MoveTo", ex);
}
}
/// <summary>
/// 直接运动的参数
/// </summary>
/// <param name="velocity">速度,mm/s</param>
/// <param name="acceleration">加速度,mm/s^2</param>
/// <param name="deacceleration">减速度,mm/s^2</param>
public void MoveConfig(float velocity, float acceleration, float deacceleration)
{
if (!IsPortOpen) return;
try
{
device.ConfigMotion(velocity, acceleration, deacceleration);
LOG.Info("MoveConfig OK");
}
catch (Exception ex)
{
LOG.Error("MoveConfig", ex);
}
}
/// <summary>
/// 回原点,并等到到位
/// </summary>
/// <param name="timeout">超时时间,ms</param>
/// <returns></returns>
public bool GoHomeWait(int timeout)
{
if (!IsPortOpen) return false;
LOG.Info("GoHomeWait Start");
bool result;
try
{
device.GoHome();
//device.WaitComplete((uint)timeout);
//result = device.IsReached();
result = Wait(timeout);
if (result)
LOG.Info("GoHomeWait OK");
else
LOG.Info("GoHomeWait Timeout");
}
catch (Exception ex)
{
result = false;
LOG.Error("GoHomeWait", ex);
}
return result;
}
/// <summary>
/// 推压运动,并等到到位
/// </summary>
/// <param name="force">出力,%</param>
/// <param name="distance">距离,mm</param>
/// <param name="velocity">速度,mm/s</param>
/// <param name="timeout">超时时间,ms</param>
/// <returns></returns>
public bool PushWait(float force, float distance, float velocity, int timeout)
{
if (!IsPortOpen) return false;
LOG.Info("PushWait Start");
bool result;
try
{
device.Push(force, distance, velocity);
//device.WaitComplete((uint)timeout);
//result = device.IsReached();
result = Wait(timeout);
if (result)
LOG.Info("PushWait OK");
else
LOG.Info("PushWait Timeout");
}
catch (Exception ex)
{
result = false;
LOG.Error("PushWait", ex);
}
return result;
}
/// <summary>
/// 绝对运动,并等到到位
/// </summary>
/// <param name="position">位置,mm</param>
/// <param name="velocity">速度,mm/s</param>
/// <param name="acceleration">加速度,mm/s^2</param>
/// <param name="deacceleration">减速度,mm/s^2</param>
/// <param name="band">定位范围,mm</param>
/// <param name="timeout">超时时间,ms</param>
/// <returns></returns>
public bool MoveAbsoluteWait(float position, float velocity, float acceleration, float deacceleration, float band, int timeout)
{
if (!IsPortOpen) return false;
LOG.Info("MoveAbsoluteWait Start");
bool result;
try
{
device.MoveAbsolute(position, velocity, acceleration, deacceleration, band);
//device.WaitComplete((uint)timeout);
//result = device.IsReached();
result = Wait(timeout);
if (result)
LOG.Info("PushWait OK");
else
LOG.Info("PushWait Timeout");
}
catch (Exception ex)
{
result = false;
LOG.Error("MoveAbsoluteWait", ex);
}
return result;
}
/// <summary>
/// 直接运动到指定位置,并等到到位
/// </summary>
/// <param name="position">位置,mm</param>
/// <param name="timeout">超时时间,ms</param>
/// <returns></returns>
public bool MoveToWait(float position, int timeout)
{
if (!IsPortOpen) return false;
LOG.Info("MoveToWait Start");
bool result;
try
{
device.MoveTo(position);
//device.WaitComplete((uint)timeout);
//result = device.IsReached();
result = Wait(timeout);
if (result)
LOG.Info("PushWait OK");
else
LOG.Info("PushWait Timeout");
}
catch (Exception ex)
{
result = false;
LOG.Error("MoveToWait", ex);
}
return result;
}
private bool Wait(int timeout)
{
int n = 0;
int mm = 10;
bool result = true;
System.Threading.Thread.Sleep(mm);
while (!device.IsReached())
{
if (n >= timeout)
{
result = false;
break;
}
n += mm;
System.Threading.Thread.Sleep(mm);
System.Windows.Forms.Application.DoEvents();
}
return result;
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{C2340D11-8D0E-417D-94FE-F91D5D05B004}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Neotel</RootNamespace>
<AssemblyName>Neotel.Rmaxis</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>bin\Debug\Neotel.Rmaxis.xml</DocumentationFile>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="log4net, Version=2.0.12.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
<HintPath>..\packages\log4net.2.0.12\lib\net45\log4net.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Web" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Rmaxis.cs" />
<Compile Include="MotorMaster.Sdk.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
\ No newline at end of file \ No newline at end of file
此文件类型无法预览
此文件类型无法预览
<?xml version="1.0"?>
<doc>
<assembly>
<name>Neotel.Rmaxis</name>
</assembly>
<members>
<member name="T:Neotel.Rmaxis">
<summary>
增广智能电动夹爪(RM-C控制器)
</summary>
</member>
<member name="M:Neotel.Rmaxis.#ctor(System.String)">
<summary>
增广智能电动夹爪(RM-C控制器)
</summary>
<param name="logName">日志名</param>
</member>
<member name="P:Neotel.Rmaxis.IsPortOpen">
<summary>
串口是否连接
</summary>
</member>
<member name="P:Neotel.Rmaxis.IsMoving">
<summary>
轴是否在运动
</summary>
</member>
<member name="P:Neotel.Rmaxis.IsReached">
<summary>
轴是否到达运动目标
</summary>
</member>
<member name="P:Neotel.Rmaxis.IsPushEmpty">
<summary>
轴是否推空(可以在Push完成后检测是否推压/夹持为空)
</summary>
</member>
<member name="P:Neotel.Rmaxis.ErrorCode">
<summary>
错误代码
</summary>
</member>
<member name="M:Neotel.Rmaxis.OpenPort(System.String,System.UInt16)">
<summary>
打开串口
</summary>
<param name="portName">串口名</param>
<param name="axisNo">轴号</param>
<returns></returns>
</member>
<member name="M:Neotel.Rmaxis.ClosePort">
<summary>
关闭串口
</summary>
</member>
<member name="M:Neotel.Rmaxis.ResetError">
<summary>
重置控制器错误
</summary>
</member>
<member name="M:Neotel.Rmaxis.StopAxis">
<summary>
停止轴运动
</summary>
</member>
<member name="M:Neotel.Rmaxis.GetVersion">
<summary>
控制器版本号
</summary>
<returns></returns>
</member>
<member name="M:Neotel.Rmaxis.GetTorque">
<summary>
获取当前设置的出力值
</summary>
<returns>出力,%</returns>
</member>
<member name="M:Neotel.Rmaxis.GetVelocity">
<summary>
获取当前电机速度
</summary>
<returns>速度,mm/s</returns>
</member>
<member name="M:Neotel.Rmaxis.GetPosition">
<summary>
获取当前位置
</summary>
<returns>位置,mm</returns>
</member>
<member name="M:Neotel.Rmaxis.GoHome">
<summary>
回原点
</summary>
</member>
<member name="M:Neotel.Rmaxis.Push(System.Single,System.Single,System.Single)">
<summary>
推压运动
</summary>
<param name="force">出力,%</param>
<param name="distance">距离,mm</param>
<param name="velocity">速度,mm/s</param>
</member>
<member name="M:Neotel.Rmaxis.MoveAbsolute(System.Single,System.Single,System.Single,System.Single,System.Single)">
<summary>
绝对运动
</summary>
<param name="position">位置,mm</param>
<param name="velocity">速度,mm/s</param>
<param name="acceleration">加速度,mm/s^2</param>
<param name="deacceleration">减速度,mm/s^2</param>
<param name="band">定位范围,mm</param>
</member>
<member name="M:Neotel.Rmaxis.MoveTo(System.Single)">
<summary>
直接运动到指定位置
</summary>
<param name="position">位置,mm</param>
</member>
<member name="M:Neotel.Rmaxis.MoveConfig(System.Single,System.Single,System.Single)">
<summary>
直接运动的参数
</summary>
<param name="velocity">速度,mm/s</param>
<param name="acceleration">加速度,mm/s^2</param>
<param name="deacceleration">减速度,mm/s^2</param>
</member>
<member name="M:Neotel.Rmaxis.GoHomeWait(System.Int32)">
<summary>
回原点,并等到到位
</summary>
<param name="timeout">超时时间,ms</param>
<returns></returns>
</member>
<member name="M:Neotel.Rmaxis.PushWait(System.Single,System.Single,System.Single,System.Int32)">
<summary>
推压运动,并等到到位
</summary>
<param name="force">出力,%</param>
<param name="distance">距离,mm</param>
<param name="velocity">速度,mm/s</param>
<param name="timeout">超时时间,ms</param>
<returns></returns>
</member>
<member name="M:Neotel.Rmaxis.MoveAbsoluteWait(System.Single,System.Single,System.Single,System.Single,System.Single,System.Int32)">
<summary>
绝对运动,并等到到位
</summary>
<param name="position">位置,mm</param>
<param name="velocity">速度,mm/s</param>
<param name="acceleration">加速度,mm/s^2</param>
<param name="deacceleration">减速度,mm/s^2</param>
<param name="band">定位范围,mm</param>
<param name="timeout">超时时间,ms</param>
<returns></returns>
</member>
<member name="M:Neotel.Rmaxis.MoveToWait(System.Single,System.Int32)">
<summary>
直接运动到指定位置,并等到到位
</summary>
<param name="position">位置,mm</param>
<param name="timeout">超时时间,ms</param>
<returns></returns>
</member>
</members>
</doc>
此文件类型无法预览
此文件类型无法预览
此文件类型无法预览
此文件的差异太大,无法显示。
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.6.1", FrameworkDisplayName = ".NET Framework 4.6.1")]
此文件类型无法预览
此文件类型无法预览
c9564820a79ee9ecf18d331729e43a9bc2a948d1
C:\Neotel\Program_Beta\Rmaxis\Rmaxis\bin\Debug\Neotel.Rmaxis.dll
C:\Neotel\Program_Beta\Rmaxis\Rmaxis\bin\Debug\Neotel.Rmaxis.pdb
C:\Neotel\Program_Beta\Rmaxis\Rmaxis\bin\Debug\log4net.dll
C:\Neotel\Program_Beta\Rmaxis\Rmaxis\bin\Debug\log4net.xml
C:\Neotel\Program_Beta\Rmaxis\Rmaxis\obj\Debug\Rmaxis.csproj.CoreCompileInputs.cache
C:\Neotel\Program_Beta\Rmaxis\Rmaxis\obj\Debug\Rmaxis.csproj.CopyComplete
C:\Neotel\Program_Beta\Rmaxis\Rmaxis\obj\Debug\Neotel.Rmaxis.dll
C:\Neotel\Program_Beta\Rmaxis\Rmaxis\obj\Debug\Neotel.Rmaxis.pdb
C:\Neotel\Program_Beta\Rmaxis\Rmaxis\bin\Debug\Neotel.Rmaxis.xml
C:\Neotel\Program_Beta\Rmaxis\Rmaxis\obj\Debug\Rmaxis.csprojAssemblyReference.cache
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="log4net" version="2.0.12" targetFramework="net461" />
</packages>
\ No newline at end of file \ No newline at end of file
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
</configuration>
\ No newline at end of file \ No newline at end of file

namespace Test
{
partial class FrmMain
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要修改
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.CboPort = new System.Windows.Forms.ComboBox();
this.BtnOpenPort = new System.Windows.Forms.Button();
this.BtnGoHome = new System.Windows.Forms.Button();
this.BtnClosePort = new System.Windows.Forms.Button();
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
this.TsslStatus = new System.Windows.Forms.ToolStripStatusLabel();
this.BtnPush = new System.Windows.Forms.Button();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.NudVelocity1 = new System.Windows.Forms.NumericUpDown();
this.NudDistance1 = new System.Windows.Forms.NumericUpDown();
this.NudForce1 = new System.Windows.Forms.NumericUpDown();
this.label3 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
this.groupBox2 = new System.Windows.Forms.GroupBox();
this.NudBand = new System.Windows.Forms.NumericUpDown();
this.NudDeacceleration = new System.Windows.Forms.NumericUpDown();
this.label7 = new System.Windows.Forms.Label();
this.label8 = new System.Windows.Forms.Label();
this.NudVelocity2 = new System.Windows.Forms.NumericUpDown();
this.NudAcceleration = new System.Windows.Forms.NumericUpDown();
this.NudPosition = new System.Windows.Forms.NumericUpDown();
this.label4 = new System.Windows.Forms.Label();
this.label5 = new System.Windows.Forms.Label();
this.label6 = new System.Windows.Forms.Label();
this.BtnAbsolute = new System.Windows.Forms.Button();
this.groupBox3 = new System.Windows.Forms.GroupBox();
this.LblStatus = new System.Windows.Forms.Label();
this.BtnReset = new System.Windows.Forms.Button();
this.groupBox4 = new System.Windows.Forms.GroupBox();
this.NudVelocity3 = new System.Windows.Forms.NumericUpDown();
this.NudDistance2 = new System.Windows.Forms.NumericUpDown();
this.NudForce2 = new System.Windows.Forms.NumericUpDown();
this.label9 = new System.Windows.Forms.Label();
this.label10 = new System.Windows.Forms.Label();
this.label11 = new System.Windows.Forms.Label();
this.BtnStability = new System.Windows.Forms.Button();
this.NudInterval = new System.Windows.Forms.NumericUpDown();
this.NudTimes = new System.Windows.Forms.NumericUpDown();
this.label12 = new System.Windows.Forms.Label();
this.label13 = new System.Windows.Forms.Label();
this.LblVersion = new System.Windows.Forms.Label();
this.statusStrip1.SuspendLayout();
this.groupBox1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.NudVelocity1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NudDistance1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NudForce1)).BeginInit();
this.groupBox2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.NudBand)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NudDeacceleration)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NudVelocity2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NudAcceleration)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NudPosition)).BeginInit();
this.groupBox3.SuspendLayout();
this.groupBox4.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.NudVelocity3)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NudDistance2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NudForce2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NudInterval)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NudTimes)).BeginInit();
this.SuspendLayout();
//
// CboPort
//
this.CboPort.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.CboPort.FormattingEnabled = true;
this.CboPort.Location = new System.Drawing.Point(12, 12);
this.CboPort.Name = "CboPort";
this.CboPort.Size = new System.Drawing.Size(75, 20);
this.CboPort.TabIndex = 0;
//
// BtnOpenPort
//
this.BtnOpenPort.Location = new System.Drawing.Point(12, 38);
this.BtnOpenPort.Name = "BtnOpenPort";
this.BtnOpenPort.Size = new System.Drawing.Size(75, 23);
this.BtnOpenPort.TabIndex = 1;
this.BtnOpenPort.Text = "打开串口";
this.BtnOpenPort.UseVisualStyleBackColor = true;
this.BtnOpenPort.Click += new System.EventHandler(this.BtnOpenPort_Click);
//
// BtnGoHome
//
this.BtnGoHome.Location = new System.Drawing.Point(12, 125);
this.BtnGoHome.Name = "BtnGoHome";
this.BtnGoHome.Size = new System.Drawing.Size(75, 23);
this.BtnGoHome.TabIndex = 2;
this.BtnGoHome.Text = "回原点";
this.BtnGoHome.UseVisualStyleBackColor = true;
this.BtnGoHome.Click += new System.EventHandler(this.BtnGoHome_Click);
//
// BtnClosePort
//
this.BtnClosePort.Location = new System.Drawing.Point(12, 67);
this.BtnClosePort.Name = "BtnClosePort";
this.BtnClosePort.Size = new System.Drawing.Size(75, 23);
this.BtnClosePort.TabIndex = 3;
this.BtnClosePort.Text = "关闭串口";
this.BtnClosePort.UseVisualStyleBackColor = true;
this.BtnClosePort.Click += new System.EventHandler(this.BtnClosePort_Click);
//
// statusStrip1
//
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.TsslStatus});
this.statusStrip1.Location = new System.Drawing.Point(0, 384);
this.statusStrip1.Name = "statusStrip1";
this.statusStrip1.Size = new System.Drawing.Size(354, 22);
this.statusStrip1.TabIndex = 6;
this.statusStrip1.Text = "statusStrip1";
//
// TsslStatus
//
this.TsslStatus.Name = "TsslStatus";
this.TsslStatus.Size = new System.Drawing.Size(131, 17);
this.TsslStatus.Text = "toolStripStatusLabel1";
//
// BtnPush
//
this.BtnPush.Location = new System.Drawing.Point(41, 97);
this.BtnPush.Name = "BtnPush";
this.BtnPush.Size = new System.Drawing.Size(70, 23);
this.BtnPush.TabIndex = 7;
this.BtnPush.Text = "推压";
this.BtnPush.UseVisualStyleBackColor = true;
this.BtnPush.Click += new System.EventHandler(this.BtnPush_Click);
//
// groupBox1
//
this.groupBox1.Controls.Add(this.NudVelocity1);
this.groupBox1.Controls.Add(this.NudDistance1);
this.groupBox1.Controls.Add(this.NudForce1);
this.groupBox1.Controls.Add(this.label3);
this.groupBox1.Controls.Add(this.label2);
this.groupBox1.Controls.Add(this.label1);
this.groupBox1.Controls.Add(this.BtnPush);
this.groupBox1.Location = new System.Drawing.Point(93, 12);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(117, 180);
this.groupBox1.TabIndex = 8;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "推压运动";
//
// NudVelocity1
//
this.NudVelocity1.Location = new System.Drawing.Point(41, 70);
this.NudVelocity1.Maximum = new decimal(new int[] {
10000,
0,
0,
0});
this.NudVelocity1.Name = "NudVelocity1";
this.NudVelocity1.Size = new System.Drawing.Size(70, 21);
this.NudVelocity1.TabIndex = 13;
this.NudVelocity1.Value = new decimal(new int[] {
500,
0,
0,
0});
//
// NudDistance1
//
this.NudDistance1.Location = new System.Drawing.Point(41, 43);
this.NudDistance1.Maximum = new decimal(new int[] {
20,
0,
0,
0});
this.NudDistance1.Name = "NudDistance1";
this.NudDistance1.Size = new System.Drawing.Size(70, 21);
this.NudDistance1.TabIndex = 12;
this.NudDistance1.Value = new decimal(new int[] {
7,
0,
0,
0});
//
// NudForce1
//
this.NudForce1.Location = new System.Drawing.Point(41, 16);
this.NudForce1.Name = "NudForce1";
this.NudForce1.Size = new System.Drawing.Size(70, 21);
this.NudForce1.TabIndex = 11;
this.NudForce1.Value = new decimal(new int[] {
30,
0,
0,
0});
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(6, 72);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(29, 12);
this.label3.TabIndex = 10;
this.label3.Text = "速度";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(6, 45);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(29, 12);
this.label2.TabIndex = 9;
this.label2.Text = "距离";
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(6, 18);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(29, 12);
this.label1.TabIndex = 8;
this.label1.Text = "出力";
//
// groupBox2
//
this.groupBox2.Controls.Add(this.NudBand);
this.groupBox2.Controls.Add(this.NudDeacceleration);
this.groupBox2.Controls.Add(this.label7);
this.groupBox2.Controls.Add(this.label8);
this.groupBox2.Controls.Add(this.NudVelocity2);
this.groupBox2.Controls.Add(this.NudAcceleration);
this.groupBox2.Controls.Add(this.NudPosition);
this.groupBox2.Controls.Add(this.label4);
this.groupBox2.Controls.Add(this.label5);
this.groupBox2.Controls.Add(this.label6);
this.groupBox2.Controls.Add(this.BtnAbsolute);
this.groupBox2.Location = new System.Drawing.Point(216, 12);
this.groupBox2.Name = "groupBox2";
this.groupBox2.Size = new System.Drawing.Size(129, 180);
this.groupBox2.TabIndex = 14;
this.groupBox2.TabStop = false;
this.groupBox2.Text = "绝对运动";
//
// NudBand
//
this.NudBand.DecimalPlaces = 2;
this.NudBand.Location = new System.Drawing.Point(53, 124);
this.NudBand.Name = "NudBand";
this.NudBand.Size = new System.Drawing.Size(70, 21);
this.NudBand.TabIndex = 17;
this.NudBand.Value = new decimal(new int[] {
1,
0,
0,
65536});
//
// NudDeacceleration
//
this.NudDeacceleration.Location = new System.Drawing.Point(53, 97);
this.NudDeacceleration.Maximum = new decimal(new int[] {
10000,
0,
0,
0});
this.NudDeacceleration.Name = "NudDeacceleration";
this.NudDeacceleration.Size = new System.Drawing.Size(70, 21);
this.NudDeacceleration.TabIndex = 16;
this.NudDeacceleration.Value = new decimal(new int[] {
500,
0,
0,
0});
//
// label7
//
this.label7.AutoSize = true;
this.label7.Location = new System.Drawing.Point(18, 126);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(29, 12);
this.label7.TabIndex = 15;
this.label7.Text = "范围";
//
// label8
//
this.label8.AutoSize = true;
this.label8.Location = new System.Drawing.Point(6, 99);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(41, 12);
this.label8.TabIndex = 14;
this.label8.Text = "减速度";
//
// NudVelocity2
//
this.NudVelocity2.Location = new System.Drawing.Point(53, 43);
this.NudVelocity2.Maximum = new decimal(new int[] {
10000,
0,
0,
0});
this.NudVelocity2.Name = "NudVelocity2";
this.NudVelocity2.Size = new System.Drawing.Size(70, 21);
this.NudVelocity2.TabIndex = 13;
this.NudVelocity2.Value = new decimal(new int[] {
500,
0,
0,
0});
//
// NudAcceleration
//
this.NudAcceleration.Location = new System.Drawing.Point(53, 70);
this.NudAcceleration.Maximum = new decimal(new int[] {
10000,
0,
0,
0});
this.NudAcceleration.Name = "NudAcceleration";
this.NudAcceleration.Size = new System.Drawing.Size(70, 21);
this.NudAcceleration.TabIndex = 12;
this.NudAcceleration.Value = new decimal(new int[] {
500,
0,
0,
0});
//
// NudPosition
//
this.NudPosition.Location = new System.Drawing.Point(53, 16);
this.NudPosition.Maximum = new decimal(new int[] {
20,
0,
0,
0});
this.NudPosition.Name = "NudPosition";
this.NudPosition.Size = new System.Drawing.Size(70, 21);
this.NudPosition.TabIndex = 11;
this.NudPosition.Value = new decimal(new int[] {
18,
0,
0,
0});
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(18, 45);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(29, 12);
this.label4.TabIndex = 10;
this.label4.Text = "速度";
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(6, 72);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(41, 12);
this.label5.TabIndex = 9;
this.label5.Text = "加速度";
//
// label6
//
this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(18, 18);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(29, 12);
this.label6.TabIndex = 8;
this.label6.Text = "位置";
//
// BtnAbsolute
//
this.BtnAbsolute.Location = new System.Drawing.Point(53, 151);
this.BtnAbsolute.Name = "BtnAbsolute";
this.BtnAbsolute.Size = new System.Drawing.Size(70, 23);
this.BtnAbsolute.TabIndex = 7;
this.BtnAbsolute.Text = "绝对";
this.BtnAbsolute.UseVisualStyleBackColor = true;
this.BtnAbsolute.Click += new System.EventHandler(this.BtnAbsolute_Click);
//
// groupBox3
//
this.groupBox3.Controls.Add(this.LblStatus);
this.groupBox3.Location = new System.Drawing.Point(216, 198);
this.groupBox3.Name = "groupBox3";
this.groupBox3.Size = new System.Drawing.Size(129, 180);
this.groupBox3.TabIndex = 15;
this.groupBox3.TabStop = false;
this.groupBox3.Text = "当前状态";
//
// LblStatus
//
this.LblStatus.Location = new System.Drawing.Point(6, 16);
this.LblStatus.Name = "LblStatus";
this.LblStatus.Size = new System.Drawing.Size(117, 158);
this.LblStatus.TabIndex = 1;
this.LblStatus.Text = "Status";
//
// BtnReset
//
this.BtnReset.Location = new System.Drawing.Point(12, 96);
this.BtnReset.Name = "BtnReset";
this.BtnReset.Size = new System.Drawing.Size(75, 23);
this.BtnReset.TabIndex = 16;
this.BtnReset.Text = "复位";
this.BtnReset.UseVisualStyleBackColor = true;
this.BtnReset.Click += new System.EventHandler(this.BtnReset_Click);
//
// groupBox4
//
this.groupBox4.Controls.Add(this.NudInterval);
this.groupBox4.Controls.Add(this.NudTimes);
this.groupBox4.Controls.Add(this.label12);
this.groupBox4.Controls.Add(this.label13);
this.groupBox4.Controls.Add(this.NudVelocity3);
this.groupBox4.Controls.Add(this.NudDistance2);
this.groupBox4.Controls.Add(this.NudForce2);
this.groupBox4.Controls.Add(this.label9);
this.groupBox4.Controls.Add(this.label10);
this.groupBox4.Controls.Add(this.label11);
this.groupBox4.Controls.Add(this.BtnStability);
this.groupBox4.Location = new System.Drawing.Point(93, 198);
this.groupBox4.Name = "groupBox4";
this.groupBox4.Size = new System.Drawing.Size(117, 180);
this.groupBox4.TabIndex = 17;
this.groupBox4.TabStop = false;
this.groupBox4.Text = "推压稳定性测试";
//
// NudVelocity3
//
this.NudVelocity3.Location = new System.Drawing.Point(41, 70);
this.NudVelocity3.Maximum = new decimal(new int[] {
10000,
0,
0,
0});
this.NudVelocity3.Name = "NudVelocity3";
this.NudVelocity3.Size = new System.Drawing.Size(70, 21);
this.NudVelocity3.TabIndex = 20;
this.NudVelocity3.Value = new decimal(new int[] {
500,
0,
0,
0});
//
// NudDistance2
//
this.NudDistance2.Location = new System.Drawing.Point(41, 43);
this.NudDistance2.Maximum = new decimal(new int[] {
20,
0,
0,
0});
this.NudDistance2.Name = "NudDistance2";
this.NudDistance2.Size = new System.Drawing.Size(70, 21);
this.NudDistance2.TabIndex = 19;
this.NudDistance2.Value = new decimal(new int[] {
7,
0,
0,
0});
//
// NudForce2
//
this.NudForce2.Location = new System.Drawing.Point(41, 16);
this.NudForce2.Name = "NudForce2";
this.NudForce2.Size = new System.Drawing.Size(70, 21);
this.NudForce2.TabIndex = 18;
this.NudForce2.Value = new decimal(new int[] {
30,
0,
0,
0});
//
// label9
//
this.label9.AutoSize = true;
this.label9.Location = new System.Drawing.Point(6, 72);
this.label9.Name = "label9";
this.label9.Size = new System.Drawing.Size(29, 12);
this.label9.TabIndex = 17;
this.label9.Text = "速度";
//
// label10
//
this.label10.AutoSize = true;
this.label10.Location = new System.Drawing.Point(6, 45);
this.label10.Name = "label10";
this.label10.Size = new System.Drawing.Size(29, 12);
this.label10.TabIndex = 16;
this.label10.Text = "距离";
//
// label11
//
this.label11.AutoSize = true;
this.label11.Location = new System.Drawing.Point(6, 18);
this.label11.Name = "label11";
this.label11.Size = new System.Drawing.Size(29, 12);
this.label11.TabIndex = 15;
this.label11.Text = "出力";
//
// BtnStability
//
this.BtnStability.Location = new System.Drawing.Point(41, 151);
this.BtnStability.Name = "BtnStability";
this.BtnStability.Size = new System.Drawing.Size(70, 23);
this.BtnStability.TabIndex = 14;
this.BtnStability.Text = "测试";
this.BtnStability.UseVisualStyleBackColor = true;
this.BtnStability.Click += new System.EventHandler(this.BtnStability_Click);
//
// NudInterval
//
this.NudInterval.Location = new System.Drawing.Point(41, 124);
this.NudInterval.Maximum = new decimal(new int[] {
100000,
0,
0,
0});
this.NudInterval.Name = "NudInterval";
this.NudInterval.Size = new System.Drawing.Size(70, 21);
this.NudInterval.TabIndex = 24;
this.NudInterval.Value = new decimal(new int[] {
1000,
0,
0,
0});
//
// NudTimes
//
this.NudTimes.Location = new System.Drawing.Point(41, 97);
this.NudTimes.Maximum = new decimal(new int[] {
1000,
0,
0,
0});
this.NudTimes.Minimum = new decimal(new int[] {
1,
0,
0,
-2147483648});
this.NudTimes.Name = "NudTimes";
this.NudTimes.Size = new System.Drawing.Size(70, 21);
this.NudTimes.TabIndex = 23;
this.NudTimes.Value = new decimal(new int[] {
1,
0,
0,
-2147483648});
//
// label12
//
this.label12.AutoSize = true;
this.label12.Location = new System.Drawing.Point(6, 126);
this.label12.Name = "label12";
this.label12.Size = new System.Drawing.Size(29, 12);
this.label12.TabIndex = 22;
this.label12.Text = "间隔";
//
// label13
//
this.label13.AutoSize = true;
this.label13.Location = new System.Drawing.Point(6, 99);
this.label13.Name = "label13";
this.label13.Size = new System.Drawing.Size(29, 12);
this.label13.TabIndex = 21;
this.label13.Text = "次数";
//
// LblVersion
//
this.LblVersion.Location = new System.Drawing.Point(12, 151);
this.LblVersion.Name = "LblVersion";
this.LblVersion.Size = new System.Drawing.Size(75, 41);
this.LblVersion.TabIndex = 18;
this.LblVersion.Text = "label14";
//
// FrmMain
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(354, 406);
this.Controls.Add(this.LblVersion);
this.Controls.Add(this.groupBox4);
this.Controls.Add(this.BtnReset);
this.Controls.Add(this.groupBox3);
this.Controls.Add(this.groupBox2);
this.Controls.Add(this.groupBox1);
this.Controls.Add(this.statusStrip1);
this.Controls.Add(this.BtnClosePort);
this.Controls.Add(this.BtnGoHome);
this.Controls.Add(this.BtnOpenPort);
this.Controls.Add(this.CboPort);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "FrmMain";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Form1";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FrmMain_FormClosing);
this.Load += new System.EventHandler(this.FrmMain_Load);
this.statusStrip1.ResumeLayout(false);
this.statusStrip1.PerformLayout();
this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.NudVelocity1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NudDistance1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NudForce1)).EndInit();
this.groupBox2.ResumeLayout(false);
this.groupBox2.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.NudBand)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NudDeacceleration)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NudVelocity2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NudAcceleration)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NudPosition)).EndInit();
this.groupBox3.ResumeLayout(false);
this.groupBox4.ResumeLayout(false);
this.groupBox4.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.NudVelocity3)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NudDistance2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NudForce2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NudInterval)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NudTimes)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.ComboBox CboPort;
private System.Windows.Forms.Button BtnOpenPort;
private System.Windows.Forms.Button BtnGoHome;
private System.Windows.Forms.Button BtnClosePort;
private System.Windows.Forms.StatusStrip statusStrip1;
private System.Windows.Forms.ToolStripStatusLabel TsslStatus;
private System.Windows.Forms.Button BtnPush;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.NumericUpDown NudVelocity1;
private System.Windows.Forms.NumericUpDown NudDistance1;
private System.Windows.Forms.NumericUpDown NudForce1;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.GroupBox groupBox2;
private System.Windows.Forms.NumericUpDown NudVelocity2;
private System.Windows.Forms.NumericUpDown NudAcceleration;
private System.Windows.Forms.NumericUpDown NudPosition;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.Button BtnAbsolute;
private System.Windows.Forms.NumericUpDown NudBand;
private System.Windows.Forms.NumericUpDown NudDeacceleration;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.Label label8;
private System.Windows.Forms.GroupBox groupBox3;
private System.Windows.Forms.Label LblStatus;
private System.Windows.Forms.Button BtnReset;
private System.Windows.Forms.GroupBox groupBox4;
private System.Windows.Forms.NumericUpDown NudInterval;
private System.Windows.Forms.NumericUpDown NudTimes;
private System.Windows.Forms.Label label12;
private System.Windows.Forms.Label label13;
private System.Windows.Forms.NumericUpDown NudVelocity3;
private System.Windows.Forms.NumericUpDown NudDistance2;
private System.Windows.Forms.NumericUpDown NudForce2;
private System.Windows.Forms.Label label9;
private System.Windows.Forms.Label label10;
private System.Windows.Forms.Label label11;
private System.Windows.Forms.Button BtnStability;
private System.Windows.Forms.Label LblVersion;
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Test
{
public partial class FrmMain : Form
{
private readonly log4net.ILog LOG;
private Neotel.Rmaxis axis;
private bool testLoop;
private System.Threading.Thread tStatus;
private System.Threading.Thread tTest;
public FrmMain()
{
InitializeComponent();
LOG = log4net.LogManager.GetLogger("Test");
}
private void ReadStatus()
{
while (true)
{
if (!axis.IsPortOpen) break;
LblStatus.Invoke(new Action(() =>
{
LblStatus.Text = "出力:" + axis.GetTorque() + "\r\n速度:" + axis.GetVelocity() + "\r\n位置:" + axis.GetPosition() + "\r\n错误代码:" + axis.ErrorCode;
}));
System.Threading.Thread.Sleep(50);
}
}
private void PushTest(object obj)
{
int[] param = (int[])obj;
int times = 0;
int timeout = 5000;
bool push = false;
bool rtn;
while (testLoop)
{
if (times == param[3])
{
StopTest();
break;
}
if (push)
{
rtn = axis.PushWait(param[0], param[1], param[2], timeout);
times++;
}
else
{
rtn = axis.GoHomeWait(timeout);
}
Invoke(new Action(() => { TsslStatus.Text = string.Format("PushWait {0} 次数{1}", rtn, times); }));
if (!rtn)
{
StopTest();
break;
}
push = !push;
System.Threading.Thread.Sleep(param[4]);
}
}
private void StopTest()
{
testLoop = false;
BtnStability.Invoke(new Action(() => { BtnStability.Text = "测试"; }));
}
private void FrmMain_Load(object sender, EventArgs e)
{
for (int i = 1; i <= 30; i++)
CboPort.Items.Add("COM" + i);
axis = new Neotel.Rmaxis();
}
private void FrmMain_FormClosing(object sender, FormClosingEventArgs e)
{
axis.ClosePort();
if (tStatus != null) tStatus.Abort();
}
private void BtnOpenPort_Click(object sender, EventArgs e)
{
bool rtn = axis.OpenPort(CboPort.Text);
TsslStatus.Text = BtnOpenPort.Text + " " + rtn;
if (rtn)
{
LblVersion.Text = "版本号\r\n" + axis.GetVersion();
tStatus = new System.Threading.Thread(new System.Threading.ThreadStart(ReadStatus));
tStatus.Start();
}
}
private void BtnClosePort_Click(object sender, EventArgs e)
{
axis.ClosePort();
if (tStatus != null) tStatus.Abort();
TsslStatus.Text = BtnClosePort.Text;
}
private void BtnGoHome_Click(object sender, EventArgs e)
{
bool rtn = axis.GoHomeWait(5000);
TsslStatus.Text = "GoHomeWait " + rtn;
}
private void BtnPush_Click(object sender, EventArgs e)
{
bool rtn = axis.PushWait(Convert.ToSingle(NudForce1.Value),
Convert.ToSingle(NudDistance1.Value), Convert.ToSingle(NudVelocity1.Value), 5000);
TsslStatus.Text = "PushWait " + rtn + " IsPushEmpty=" + axis.IsPushEmpty;
}
private void BtnAbsolute_Click(object sender, EventArgs e)
{
bool rtn = axis.MoveAbsoluteWait(Convert.ToSingle(NudPosition.Value),
Convert.ToSingle(NudVelocity2.Value), Convert.ToSingle(NudAcceleration.Value),
Convert.ToSingle(NudDeacceleration.Value), Convert.ToSingle(NudBand.Value), 5000);
TsslStatus.Text = "MoveAbsoluteWait " + rtn;
}
private void BtnReset_Click(object sender, EventArgs e)
{
axis.ResetError();
}
private void BtnStability_Click(object sender, EventArgs e)
{
if (testLoop)
{
StopTest();
return;
}
testLoop = true;
BtnStability.Text = "停止";
int[] param = new int[5];
param[0] = Convert.ToInt32(NudForce2.Value);
param[1] = Convert.ToInt32(NudDistance2.Value);
param[2] = Convert.ToInt32(NudVelocity3.Value);
param[3] = Convert.ToInt32(NudTimes.Value);
param[4] = Convert.ToInt32(NudInterval.Value);
tTest = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(PushTest));
tTest.Start(param);
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>
\ No newline at end of file \ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Test
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new FrmMain());
}
}
}
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("Test")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Test")]
[assembly: AssemblyCopyright("Copyright © 2021")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 会使此程序集中的类型
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
//请将此类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("a367d23d-969f-4cd5-8073-25ebd2f2f422")]
// 程序集的版本信息由下列四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
\ No newline at end of file \ No newline at end of file
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本: 4.0.30319.42000
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,则所做更改将丢失。
// </auto-generated>
//------------------------------------------------------------------------------
namespace Test.Properties
{
/// <summary>
/// 强类型资源类,用于查找本地化字符串等。
/// </summary>
// 此类是由 StronglyTypedResourceBuilder
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
// 若要添加或删除成员,请编辑 .ResX 文件,然后重新运行 ResGen
// (以 /str 作为命令选项),或重新生成 VS 项目。
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources
{
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources()
{
}
/// <summary>
/// 返回此类使用的缓存 ResourceManager 实例。
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager
{
get
{
if ((resourceMan == null))
{
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Test.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// 重写当前线程的 CurrentUICulture 属性,对
/// 使用此强类型资源类的所有资源查找执行重写。
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture
{
get
{
return resourceCulture;
}
set
{
resourceCulture = value;
}
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
\ No newline at end of file \ No newline at end of file
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Test.Properties
{
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
{
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default
{
get
{
return defaultInstance;
}
}
}
}
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{A367D23D-969F-4CD5-8073-25EBD2F2F422}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>Test</RootNamespace>
<AssemblyName>Test</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="log4net, Version=2.0.12.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
<HintPath>..\packages\log4net.2.0.12\lib\net45\log4net.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Web" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="FrmMain.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FrmMain.Designer.cs">
<DependentUpon>FrmMain.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="FrmMain.resx">
<DependentUpon>FrmMain.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<None Include="log4net.config">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Rmaxis\Rmaxis.csproj">
<Project>{c2340d11-8d0e-417d-94fe-f91d5d05b004}</Project>
<Name>Rmaxis</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
\ No newline at end of file \ No newline at end of file
[2021-01-08 09:44:46,667][1][Rmaxis:33]INFO Rmaxis Init OK
[2021-01-08 09:44:50,920][1][Rmaxis:89]ERROR OpenPort
System.Exception: ModbusRTU \\.\COM3:1 read input registers address 8 quantity 2 failed
在 MotorMaster.Sdk.RMAxis.StaticRunWithManaged[T](Func`1 function) 位置 C:\Neotel\Program_Beta\Rmaxis\Rmaxis\MotorMaster.Sdk.cs:行号 457
在 MotorMaster.Sdk.RMAxis.CreateModbus(String device, Int32 baudrate, UInt16 slave_id) 位置 C:\Neotel\Program_Beta\Rmaxis\Rmaxis\MotorMaster.Sdk.cs:行号 483
在 Neotel.Rmaxis.OpenPort(String portName, UInt16 axisNo) 位置 C:\Neotel\Program_Beta\Rmaxis\Rmaxis\Rmaxis.cs:行号 89
[2021-01-08 09:45:02,008][1][Rmaxis:33]INFO Rmaxis Init OK
[2021-01-08 09:45:06,089][1][Rmaxis:89]ERROR OpenPort
System.Exception: ModbusRTU \\.\COM3:1 read input registers address 8 quantity 2 failed
在 MotorMaster.Sdk.RMAxis.StaticRunWithManaged[T](Func`1 function) 位置 C:\Neotel\Program_Beta\Rmaxis\Rmaxis\MotorMaster.Sdk.cs:行号 457
在 MotorMaster.Sdk.RMAxis.CreateModbus(String device, Int32 baudrate, UInt16 slave_id) 位置 C:\Neotel\Program_Beta\Rmaxis\Rmaxis\MotorMaster.Sdk.cs:行号 483
在 Neotel.Rmaxis.OpenPort(String portName, UInt16 axisNo) 位置 C:\Neotel\Program_Beta\Rmaxis\Rmaxis\Rmaxis.cs:行号 89
[2021-01-08 09:45:34,463][1][Rmaxis:33]INFO Rmaxis Init OK
[2021-01-08 09:45:38,288][1][Rmaxis:89]ERROR OpenPort
System.Exception: ModbusRTU \\.\COM3:1 read input registers address 8 quantity 2 failed
在 MotorMaster.Sdk.RMAxis.StaticRunWithManaged[T](Func`1 function) 位置 C:\Neotel\Program_Beta\Rmaxis\Rmaxis\MotorMaster.Sdk.cs:行号 457
在 MotorMaster.Sdk.RMAxis.CreateModbus(String device, Int32 baudrate, UInt16 slave_id) 位置 C:\Neotel\Program_Beta\Rmaxis\Rmaxis\MotorMaster.Sdk.cs:行号 483
在 Neotel.Rmaxis.OpenPort(String portName, UInt16 axisNo) 位置 C:\Neotel\Program_Beta\Rmaxis\Rmaxis\Rmaxis.cs:行号 89
[2021-01-08 09:46:20,084][1][Rmaxis:33]INFO Rmaxis Init OK
[2021-01-08 09:46:23,625][1][Rmaxis:90]INFO OpenPort OK
[2021-01-08 09:46:23,676][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:23,689][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:23,696][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:23,768][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:23,776][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:23,784][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:23,863][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:23,869][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:23,879][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:23,956][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:23,966][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:23,975][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:24,045][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:24,054][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:24,061][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:24,145][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:24,154][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:24,161][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:24,237][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:24,243][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:24,252][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:24,333][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:24,341][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:24,349][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:24,425][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:24,433][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:24,441][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:24,517][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:24,525][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:24,534][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:24,614][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:24,622][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:24,631][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:24,710][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:24,717][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:24,726][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:24,801][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:24,808][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:24,817][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:24,896][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:24,905][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:24,914][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:24,987][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:24,995][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:25,003][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:25,080][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:25,088][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:25,095][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:25,174][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:25,180][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:25,189][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:25,271][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:25,280][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:25,290][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:25,359][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:25,367][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:25,374][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:25,453][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:25,461][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:25,470][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:25,550][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:25,558][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:25,567][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:25,647][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:25,660][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:25,666][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:25,738][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:25,746][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:25,755][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:25,830][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:25,837][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:25,846][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:25,928][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:25,936][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:25,944][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:26,016][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:26,024][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:26,032][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:26,111][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:26,119][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:26,128][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:26,202][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:26,210][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:26,219][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:26,296][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:26,304][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:26,312][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:26,389][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:26,397][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:26,405][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:26,483][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:26,490][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:26,498][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:26,579][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:26,587][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:26,595][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:26,671][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:26,678][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:26,687][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:26,766][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:26,774][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:26,783][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:26,862][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:26,870][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:26,879][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:26,957][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:26,968][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:26,977][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:27,048][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:27,056][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:27,063][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:27,143][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:27,151][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:27,160][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:27,171][1][Rmaxis:406]INFO GoHomeWait Start
[2021-01-08 09:46:27,268][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:27,276][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:27,285][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:27,364][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:27,372][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:27,380][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:27,486][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:27,497][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:27,508][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:27,525][1][Rmaxis:416]INFO GoHomeWait OK
[2021-01-08 09:46:27,581][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:27,588][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:27,598][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:27,676][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:27,684][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:27,692][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:27,768][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:27,776][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:27,784][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:27,861][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:27,869][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:27,878][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:27,954][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:27,961][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:27,971][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:28,048][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:28,058][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:28,064][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:28,142][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:28,149][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:28,159][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:28,242][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:28,249][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:28,256][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:28,338][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:28,346][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:28,355][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:28,433][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:28,441][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:28,449][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:28,524][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:28,531][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:28,539][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:28,619][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:28,627][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:28,635][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:28,715][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:28,722][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:28,731][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:28,812][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:28,818][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:28,826][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:28,904][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:28,914][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:28,922][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:29,001][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:29,009][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:29,017][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:29,093][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:29,101][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:29,109][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:29,187][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:29,195][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:29,203][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:29,280][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:29,287][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:29,297][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:29,374][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:29,382][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:29,390][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:29,469][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:29,476][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:29,486][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:29,567][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:29,577][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:29,586][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:29,657][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:29,664][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:29,672][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:29,754][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:29,762][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:29,771][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:29,848][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:29,856][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:29,865][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:29,942][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:29,950][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:29,959][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:30,035][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:30,042][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:30,051][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:30,130][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:30,138][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:30,146][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:30,223][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:30,230][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:30,239][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:30,315][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:30,322][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:30,330][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:30,408][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:30,416][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:30,424][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:30,503][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:30,510][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:30,518][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:30,595][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:30,604][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:30,612][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:30,687][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:30,696][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:30,704][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:30,785][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:30,793][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:30,802][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:30,883][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:30,891][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:30,899][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:30,975][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:30,983][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:30,992][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:31,069][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:31,076][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:31,084][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:31,164][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:31,172][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:31,180][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:31,258][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:31,266][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:31,274][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:31,353][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:31,362][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:31,370][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:31,411][1][Rmaxis:474]INFO MoveAbsoluteWait Start
[2021-01-08 09:46:31,526][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:31,534][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:31,542][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:31,622][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:31,630][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:31,638][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:31,747][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:31,753][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:31,761][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:31,840][1][Rmaxis:484]INFO PushWait OK
[2021-01-08 09:46:31,848][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:31,856][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:31,864][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:31,935][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:31,943][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:31,951][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:32,030][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:32,038][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:32,047][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:32,123][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:32,131][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:32,139][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:32,217][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:32,225][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:32,233][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:32,312][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:32,320][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:32,328][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:32,410][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:32,418][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:32,426][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:32,502][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:32,511][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:32,519][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:32,592][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:32,601][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:32,609][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:32,686][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:32,694][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:32,703][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:32,780][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:32,788][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:32,796][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:32,871][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:32,879][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:32,888][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:32,970][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:32,978][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:32,986][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:33,060][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:33,068][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:33,075][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:33,153][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:33,161][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:33,169][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:33,246][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:33,254][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:33,263][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:33,343][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:33,351][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:33,359][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:33,431][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:33,438][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:33,448][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:33,527][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:33,535][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:33,543][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:33,625][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:33,633][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:33,641][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:33,719][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:33,727][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:33,736][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:33,812][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:33,820][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:33,829][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:33,906][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:33,914][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:33,923][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:34,001][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:34,008][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:34,017][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:34,091][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:34,098][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:34,107][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:34,155][1][Rmaxis:406]INFO GoHomeWait Start
[2021-01-08 09:46:34,247][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:34,255][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:34,263][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:34,378][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:34,388][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:34,395][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:34,504][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:34,512][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:34,520][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:34,630][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:34,638][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:34,646][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:34,757][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:34,765][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:34,773][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:34,881][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:34,889][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:34,897][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:34,974][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:34,982][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:34,990][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:35,068][1][Rmaxis:416]INFO GoHomeWait OK
[2021-01-08 09:46:35,076][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:35,084][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:35,092][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:35,166][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:35,173][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:35,182][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:35,265][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:35,273][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:35,281][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:35,352][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:35,360][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:35,368][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:35,450][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:35,458][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:35,466][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:35,545][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:35,553][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:35,561][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:35,637][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:35,644][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:35,653][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:35,728][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:35,735][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:35,743][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:35,827][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:35,835][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:35,843][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:35,918][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:35,925][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:35,934][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:36,016][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:36,024][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:36,033][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:36,111][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:36,119][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:36,129][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:36,204][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:36,211][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:36,221][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:36,301][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:36,309][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:36,318][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:36,397][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:36,405][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:36,413][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:36,490][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:36,499][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:36,507][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:36,586][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:36,594][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:36,602][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:36,679][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:36,686][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:36,695][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:36,771][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:36,780][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:36,789][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:36,869][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:36,877][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:36,885][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:36,965][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:36,974][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:36,983][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:37,061][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:37,071][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:37,079][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:37,156][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:37,165][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:37,173][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:37,245][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:37,252][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:37,262][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:37,339][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:37,347][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:37,354][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:37,434][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:37,442][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:37,450][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:37,530][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:37,539][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:37,547][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:37,625][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:37,633][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:37,641][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:37,717][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:37,725][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:37,734][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:37,816][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:37,824][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:37,833][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:37,910][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:37,919][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:37,927][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:38,003][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:38,013][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:38,021][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:38,095][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:38,101][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:38,111][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:38,190][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:38,197][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:38,206][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:38,286][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:38,292][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:38,301][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:38,379][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:38,387][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:38,395][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:38,472][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:38,481][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:38,489][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:38,569][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:38,577][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:38,585][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:38,659][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:38,668][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:38,677][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:38,751][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:38,760][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:38,769][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:38,846][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:38,854][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:38,863][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:38,938][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:38,945][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:38,954][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:39,031][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:39,039][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:39,048][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:39,125][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:39,134][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:39,143][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:39,219][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:39,227][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:39,235][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:39,311][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:39,319][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:39,327][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:39,405][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:39,413][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:39,420][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:39,500][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:39,509][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:39,518][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:39,592][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:39,598][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:39,608][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:39,687][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:39,696][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:39,706][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:39,781][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:39,790][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:39,799][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:39,874][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:39,883][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:39,891][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:39,970][1][Rmaxis:219]INFO GetTorque OK
[2021-01-08 09:46:39,979][1][Rmaxis:261]INFO GetVelocity OK
[2021-01-08 09:46:39,989][1][Rmaxis:282]INFO GetPosition OK
[2021-01-08 09:46:40,221][1][Rmaxis:119]INFO ClosePort OK
此文件的差异太大,无法显示。

\ No newline at end of file \ No newline at end of file

\ No newline at end of file \ No newline at end of file
此文件类型无法预览
此文件类型无法预览
<?xml version="1.0"?>
<doc>
<assembly>
<name>Neotel.Rmaxis</name>
</assembly>
<members>
<member name="T:Neotel.Rmaxis">
<summary>
增广智能电动夹爪(RM-C控制器)
</summary>
</member>
<member name="M:Neotel.Rmaxis.#ctor(System.String)">
<summary>
增广智能电动夹爪(RM-C控制器)
</summary>
<param name="logName">日志名</param>
</member>
<member name="P:Neotel.Rmaxis.IsPortOpen">
<summary>
串口是否连接
</summary>
</member>
<member name="P:Neotel.Rmaxis.IsMoving">
<summary>
轴是否在运动
</summary>
</member>
<member name="P:Neotel.Rmaxis.IsReached">
<summary>
轴是否到达运动目标
</summary>
</member>
<member name="P:Neotel.Rmaxis.IsPushEmpty">
<summary>
轴是否推空(可以在Push完成后检测是否推压/夹持为空)
</summary>
</member>
<member name="P:Neotel.Rmaxis.ErrorCode">
<summary>
错误代码
</summary>
</member>
<member name="M:Neotel.Rmaxis.OpenPort(System.String,System.UInt16)">
<summary>
打开串口
</summary>
<param name="portName">串口名</param>
<param name="axisNo">轴号</param>
<returns></returns>
</member>
<member name="M:Neotel.Rmaxis.ClosePort">
<summary>
关闭串口
</summary>
</member>
<member name="M:Neotel.Rmaxis.ResetError">
<summary>
重置控制器错误
</summary>
</member>
<member name="M:Neotel.Rmaxis.StopAxis">
<summary>
停止轴运动
</summary>
</member>
<member name="M:Neotel.Rmaxis.GetVersion">
<summary>
控制器版本号
</summary>
<returns></returns>
</member>
<member name="M:Neotel.Rmaxis.GetTorque">
<summary>
获取当前设置的出力值
</summary>
<returns>出力,%</returns>
</member>
<member name="M:Neotel.Rmaxis.GetVelocity">
<summary>
获取当前电机速度
</summary>
<returns>速度,mm/s</returns>
</member>
<member name="M:Neotel.Rmaxis.GetPosition">
<summary>
获取当前位置
</summary>
<returns>位置,mm</returns>
</member>
<member name="M:Neotel.Rmaxis.GoHome">
<summary>
回原点
</summary>
</member>
<member name="M:Neotel.Rmaxis.Push(System.Single,System.Single,System.Single)">
<summary>
推压运动
</summary>
<param name="force">出力,%</param>
<param name="distance">距离,mm</param>
<param name="velocity">速度,mm/s</param>
</member>
<member name="M:Neotel.Rmaxis.MoveAbsolute(System.Single,System.Single,System.Single,System.Single,System.Single)">
<summary>
绝对运动
</summary>
<param name="position">位置,mm</param>
<param name="velocity">速度,mm/s</param>
<param name="acceleration">加速度,mm/s^2</param>
<param name="deacceleration">减速度,mm/s^2</param>
<param name="band">定位范围,mm</param>
</member>
<member name="M:Neotel.Rmaxis.MoveTo(System.Single)">
<summary>
直接运动到指定位置
</summary>
<param name="position">位置,mm</param>
</member>
<member name="M:Neotel.Rmaxis.MoveConfig(System.Single,System.Single,System.Single)">
<summary>
直接运动的参数
</summary>
<param name="velocity">速度,mm/s</param>
<param name="acceleration">加速度,mm/s^2</param>
<param name="deacceleration">减速度,mm/s^2</param>
</member>
<member name="M:Neotel.Rmaxis.GoHomeWait(System.Int32)">
<summary>
回原点,并等到到位
</summary>
<param name="timeout">超时时间,ms</param>
<returns></returns>
</member>
<member name="M:Neotel.Rmaxis.PushWait(System.Single,System.Single,System.Single,System.Int32)">
<summary>
推压运动,并等到到位
</summary>
<param name="force">出力,%</param>
<param name="distance">距离,mm</param>
<param name="velocity">速度,mm/s</param>
<param name="timeout">超时时间,ms</param>
<returns></returns>
</member>
<member name="M:Neotel.Rmaxis.MoveAbsoluteWait(System.Single,System.Single,System.Single,System.Single,System.Single,System.Int32)">
<summary>
绝对运动,并等到到位
</summary>
<param name="position">位置,mm</param>
<param name="velocity">速度,mm/s</param>
<param name="acceleration">加速度,mm/s^2</param>
<param name="deacceleration">减速度,mm/s^2</param>
<param name="band">定位范围,mm</param>
<param name="timeout">超时时间,ms</param>
<returns></returns>
</member>
<member name="M:Neotel.Rmaxis.MoveToWait(System.Single,System.Int32)">
<summary>
直接运动到指定位置,并等到到位
</summary>
<param name="position">位置,mm</param>
<param name="timeout">超时时间,ms</param>
<returns></returns>
</member>
</members>
</doc>
此文件类型无法预览
此文件类型无法预览
此文件类型无法预览
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
</configuration>
\ No newline at end of file \ No newline at end of file
此文件类型无法预览
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<log4net>
<logger name="Test">
<level value="Debug"/>
<appender-ref ref="Test"/>
</logger>
<logger name="Rmaxis">
<level value="Debug"/>
<appender-ref ref="Rmaxis"/>
</logger>
<appender name="Test" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\\Test.log" />
<param name="Encoding" value="UTF-8"/>
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyy-MM-dd" />
<param name="MaxSizeRollBackups" value="100" />
<param name="MaxFileSize" value="10240" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="[%d][%t][%c:%L]%-5p %m%n" />
</layout>
</appender>
<appender name="Rmaxis" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\\Rmaxis.log" />
<param name="Encoding" value="UTF-8"/>
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyy-MM-dd" />
<param name="MaxSizeRollBackups" value="100" />
<param name="MaxFileSize" value="10240" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="[%d][%t][%c:%L]%-5p %m%n" />
</layout>
</appender>
</log4net>
</configuration>
\ No newline at end of file \ No newline at end of file
此文件类型无法预览
此文件的差异太大,无法显示。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<log4net>
<logger name="Test">
<level value="Debug"/>
<appender-ref ref="Test"/>
</logger>
<logger name="Rmaxis">
<level value="Debug"/>
<appender-ref ref="Rmaxis"/>
</logger>
<appender name="Test" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\\Test.log" />
<param name="Encoding" value="UTF-8"/>
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyy-MM-dd" />
<param name="MaxSizeRollBackups" value="100" />
<param name="MaxFileSize" value="10240" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="[%d][%t][%c:%L]%-5p %m%n" />
</layout>
</appender>
<appender name="Rmaxis" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\\Rmaxis.log" />
<param name="Encoding" value="UTF-8"/>
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyy-MM-dd" />
<param name="MaxSizeRollBackups" value="100" />
<param name="MaxFileSize" value="10240" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="[%d][%t][%c:%L]%-5p %m%n" />
</layout>
</appender>
</log4net>
</configuration>
\ No newline at end of file \ No newline at end of file
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.6.1", FrameworkDisplayName = ".NET Framework 4.6.1")]
此文件类型无法预览
2ae0cbbcb54252e6c6a2315981efabe3ced705a1
C:\Neotel\Program_Beta\Rmaxis\Test\bin\Debug\Test.exe.config
C:\Neotel\Program_Beta\Rmaxis\Test\bin\Debug\Test.exe
C:\Neotel\Program_Beta\Rmaxis\Test\bin\Debug\Test.pdb
C:\Neotel\Program_Beta\Rmaxis\Test\bin\Debug\Neotel.Rmaxis.dll
C:\Neotel\Program_Beta\Rmaxis\Test\bin\Debug\Neotel.Rmaxis.pdb
C:\Neotel\Program_Beta\Rmaxis\Test\obj\Debug\Test.csprojAssemblyReference.cache
C:\Neotel\Program_Beta\Rmaxis\Test\obj\Debug\Test.FrmMain.resources
C:\Neotel\Program_Beta\Rmaxis\Test\obj\Debug\Test.Properties.Resources.resources
C:\Neotel\Program_Beta\Rmaxis\Test\obj\Debug\Test.csproj.GenerateResource.cache
C:\Neotel\Program_Beta\Rmaxis\Test\obj\Debug\Test.csproj.CoreCompileInputs.cache
C:\Neotel\Program_Beta\Rmaxis\Test\obj\Debug\Test.csproj.CopyComplete
C:\Neotel\Program_Beta\Rmaxis\Test\obj\Debug\Test.exe
C:\Neotel\Program_Beta\Rmaxis\Test\obj\Debug\Test.pdb
C:\Neotel\Program_Beta\Rmaxis\Test\bin\Debug\log4net.dll
C:\Neotel\Program_Beta\Rmaxis\Test\bin\Debug\log4net.xml
C:\Neotel\Program_Beta\Rmaxis\Test\bin\Debug\log4net.config
C:\Neotel\Program_Beta\Rmaxis\Test\bin\Debug\Neotel.Rmaxis.xml
此文件类型无法预览
此文件类型无法预览
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="log4net" version="2.0.12" targetFramework="net461" />
</packages>
\ No newline at end of file \ No newline at end of file
此文件类型无法预览
此文件的差异太大,无法显示。
此文件的差异太大,无法显示。
此文件的差异太大,无法显示。
此文件的差异太大,无法显示。
此文件的差异太大,无法显示。
此文件的差异太大,无法显示。
此文件的差异太大,无法显示。
此文件的差异太大,无法显示。
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!