feat: Implement vision menu, processed data panel, and UI improvements

- Add VisionMenu component with Camera (QRCode) and Barcode (Keyence) submenus
- Remove old CameraPanel component and replace with dropdown menu structure
- Add ProcessedDataPanel to display processed data in bottom dock (5 rows visible)
- Create SystemStatusPanel component with horizontal button layout (START/STOP/RESET)
- Create EventLogPanel component for better code organization
- Add device initialization feature with 7-axis progress tracking
- Add GetProcessedData and GetInitializeStatus backend methods
- Update Header menu layout to vertical (icon on top, text below) for more space
- Update HomePage layout with bottom-docked ProcessedDataPanel
- Refactor HomePage to use new modular components

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-25 22:18:55 +09:00
parent e46886cabc
commit 6219c4c60e
14 changed files with 1273 additions and 555 deletions

View File

@@ -343,6 +343,94 @@ class CommunicationLayer {
});
}
}
public async initializeDevice(): Promise<{ success: boolean; message: string }> {
if (isWebView && machine) {
const resultJson = await machine.InitializeDevice();
return JSON.parse(resultJson);
} else {
return new Promise((resolve, reject) => {
if (!this.isConnected) {
setTimeout(() => {
if (!this.isConnected) reject({ success: false, message: "WebSocket connection timeout" });
}, 2000);
}
const timeoutId = setTimeout(() => {
this.listeners = this.listeners.filter(cb => cb !== handler);
reject({ success: false, message: "Initialize device timeout" });
}, 10000);
const handler = (data: any) => {
if (data.type === 'DEVICE_INITIALIZED') {
clearTimeout(timeoutId);
this.listeners = this.listeners.filter(cb => cb !== handler);
resolve(data.data);
}
};
this.listeners.push(handler);
this.ws?.send(JSON.stringify({ type: 'INITIALIZE_DEVICE' }));
});
}
}
public async getInitializeStatus(): Promise<string> {
if (isWebView && machine) {
return await machine.GetInitializeStatus();
} else {
return new Promise((resolve, reject) => {
if (!this.isConnected) {
setTimeout(() => {
if (!this.isConnected) reject("WebSocket connection timeout");
}, 2000);
}
const timeoutId = setTimeout(() => {
this.listeners = this.listeners.filter(cb => cb !== handler);
reject("Initialize status fetch timeout");
}, 10000);
const handler = (data: any) => {
if (data.type === 'INITIALIZE_STATUS_DATA') {
clearTimeout(timeoutId);
this.listeners = this.listeners.filter(cb => cb !== handler);
resolve(JSON.stringify(data.data));
}
};
this.listeners.push(handler);
this.ws?.send(JSON.stringify({ type: 'GET_INITIALIZE_STATUS' }));
});
}
}
public async getProcessedData(): Promise<string> {
if (isWebView && machine) {
return await machine.GetProcessedData();
} else {
return new Promise((resolve, reject) => {
if (!this.isConnected) {
setTimeout(() => {
if (!this.isConnected) reject("WebSocket connection timeout");
}, 2000);
}
const timeoutId = setTimeout(() => {
this.listeners = this.listeners.filter(cb => cb !== handler);
reject("Processed data fetch timeout");
}, 10000);
const handler = (data: any) => {
if (data.type === 'PROCESSED_DATA') {
clearTimeout(timeoutId);
this.listeners = this.listeners.filter(cb => cb !== handler);
resolve(JSON.stringify(data.data));
}
};
this.listeners.push(handler);
this.ws?.send(JSON.stringify({ type: 'GET_PROCESSED_DATA' }));
});
}
}
}
export const comms = new CommunicationLayer();

View File

@@ -1,39 +0,0 @@
import React from 'react';
import { Camera, Crosshair } from 'lucide-react';
import { PanelHeader } from './common/PanelHeader';
interface CameraPanelProps {
videoRef: React.RefObject<HTMLVideoElement>;
}
export const CameraPanel: React.FC<CameraPanelProps> = ({ videoRef }) => (
<div className="h-full flex flex-col">
<PanelHeader title="Vision Feed" icon={Camera} />
<div className="flex-1 bg-black relative overflow-hidden border border-slate-800 group">
<video ref={videoRef} autoPlay playsInline className="w-full h-full object-cover opacity-80" />
{/* HUD OVERLAY */}
<div className="absolute inset-0 pointer-events-none">
<div className="absolute top-0 left-0 w-full h-full border-[20px] border-neon-blue/10 clip-tech-inv"></div>
<Crosshair className="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-12 h-12 text-neon-blue opacity-50" />
<div className="absolute top-4 right-4 flex flex-col items-end gap-1">
<span className="text-[10px] font-mono text-neon-red animate-pulse"> REC</span>
<span className="text-xs font-mono text-neon-blue">1920x1080 @ 60FPS</span>
</div>
<div className="absolute bottom-4 left-4 text-neon-blue/80 font-mono text-xs">
EXPOSURE: AUTO<br />
GAIN: 12dB<br />
FOCUS: 150mm
</div>
</div>
</div>
<div className="grid grid-cols-4 gap-2 mt-3">
<button className="bg-slate-800 text-slate-400 text-[10px] py-2 hover:bg-neon-blue hover:text-black transition-colors">ZOOM +</button>
<button className="bg-slate-800 text-slate-400 text-[10px] py-2 hover:bg-neon-blue hover:text-black transition-colors">ZOOM -</button>
<button className="bg-slate-800 text-slate-400 text-[10px] py-2 hover:bg-neon-blue hover:text-black transition-colors">SNAP</button>
<button className="bg-slate-800 text-slate-400 text-[10px] py-2 hover:bg-neon-blue hover:text-black transition-colors">SETTINGS</button>
</div>
</div>
);

View File

@@ -0,0 +1,27 @@
import React from 'react';
import { Terminal } from 'lucide-react';
import { CyberPanel } from './common/CyberPanel';
import { LogEntry } from '../types';
interface EventLogPanelProps {
logs: LogEntry[];
}
export const EventLogPanel: React.FC<EventLogPanelProps> = ({ logs }) => {
return (
<CyberPanel className="flex-1 flex flex-col min-h-0">
<div className="mb-2 flex items-center justify-between text-xs text-neon-blue font-bold tracking-widest uppercase border-b border-white/10 pb-2">
<span>Event Log</span>
<Terminal className="w-3 h-3" />
</div>
<div className="flex-1 overflow-y-auto font-mono text-[10px] space-y-1 pr-1 custom-scrollbar">
{logs.map(log => (
<div key={log.id} className={`flex gap-2 ${log.type === 'error' ? 'text-red-500' : log.type === 'warning' ? 'text-amber-400' : 'text-slate-400'}`}>
<span className="opacity-50">[{log.timestamp}]</span>
<span>{log.message}</span>
</div>
))}
</div>
</CyberPanel>
);
};

View File

@@ -1,6 +1,7 @@
import React, { useState, useEffect } from 'react';
import { Target, CheckCircle2, Loader2 } from 'lucide-react';
import { Target, CheckCircle2, Loader2, AlertCircle } from 'lucide-react';
import { TechButton } from './common/TechButton';
import { comms } from '../communication';
interface InitializeModalProps {
isOpen: boolean;
@@ -17,74 +18,111 @@ interface AxisState {
export const InitializeModal: React.FC<InitializeModalProps> = ({ isOpen, onClose }) => {
const [axes, setAxes] = useState<AxisState[]>([
{ name: 'X-Axis', status: 'pending', progress: 0 },
{ name: 'Y-Axis', status: 'pending', progress: 0 },
{ name: 'Z-Axis', status: 'pending', progress: 0 },
{ name: 'PZ_PICK', status: 'pending', progress: 0 },
{ name: 'PL_UPDN', status: 'pending', progress: 0 },
{ name: 'PR_UPDN', status: 'pending', progress: 0 },
{ name: 'PL_MOVE', status: 'pending', progress: 0 },
{ name: 'PR_MOVE', status: 'pending', progress: 0 },
{ name: 'Z_THETA', status: 'pending', progress: 0 },
{ name: 'PX_PICK', status: 'pending', progress: 0 },
]);
const [isInitializing, setIsInitializing] = useState(false);
const [errorMessage, setErrorMessage] = useState<string | null>(null);
const [statusInterval, setStatusInterval] = useState<NodeJS.Timeout | null>(null);
// Reset state when modal closes
useEffect(() => {
if (!isOpen) {
setAxes([
{ name: 'X-Axis', status: 'pending', progress: 0 },
{ name: 'Y-Axis', status: 'pending', progress: 0 },
{ name: 'Z-Axis', status: 'pending', progress: 0 },
{ name: 'PZ_PICK', status: 'pending', progress: 0 },
{ name: 'PL_UPDN', status: 'pending', progress: 0 },
{ name: 'PR_UPDN', status: 'pending', progress: 0 },
{ name: 'PL_MOVE', status: 'pending', progress: 0 },
{ name: 'PR_MOVE', status: 'pending', progress: 0 },
{ name: 'Z_THETA', status: 'pending', progress: 0 },
{ name: 'PX_PICK', status: 'pending', progress: 0 },
]);
setIsInitializing(false);
setErrorMessage(null);
if (statusInterval) {
clearInterval(statusInterval);
setStatusInterval(null);
}
}
}, [isOpen]);
const startInitialization = () => {
setIsInitializing(true);
// Cleanup interval on unmount
useEffect(() => {
return () => {
if (statusInterval) {
clearInterval(statusInterval);
}
};
}, [statusInterval]);
// Initialize each axis with 3 second delay between them
axes.forEach((axis, index) => {
const delay = index * 3000; // 0s, 3s, 6s
const updateStatus = async () => {
try {
const statusJson = await comms.getInitializeStatus();
const status = JSON.parse(statusJson);
// Start initialization after delay
setTimeout(() => {
setAxes(prev => {
const next = [...prev];
next[index] = { ...next[index], status: 'initializing', progress: 0 };
return next;
});
if (!status.isInitializing) {
// Initialization complete
if (statusInterval) {
clearInterval(statusInterval);
setStatusInterval(null);
}
setIsInitializing(false);
// Progress animation (3 seconds)
const startTime = Date.now();
const duration = 3000;
const interval = setInterval(() => {
const elapsed = Date.now() - startTime;
const progress = Math.min((elapsed / duration) * 100, 100);
// Check if all axes are home set
const allComplete = status.axes.every((axis: any) => axis.isHomeSet);
if (allComplete) {
// Auto close after 1 second
setTimeout(() => {
onClose();
}, 1000);
}
}
setAxes(prev => {
const next = [...prev];
next[index] = { ...next[index], progress };
return next;
});
if (progress >= 100) {
clearInterval(interval);
setAxes(prev => {
const next = [...prev];
next[index] = { ...next[index], status: 'completed', progress: 100 };
return next;
});
// Check if all axes are completed
setAxes(prev => {
if (prev.every(a => a.status === 'completed')) {
// Auto close after 500ms
setTimeout(() => {
onClose();
}, 500);
}
return prev;
});
// Update axis states
setAxes(prev => {
return prev.map(axis => {
const backendAxis = status.axes.find((a: any) => a.name === axis.name);
if (backendAxis) {
const progress = backendAxis.progress;
const isComplete = backendAxis.isHomeSet;
return {
...axis,
progress,
status: isComplete ? 'completed' : progress > 0 ? 'initializing' : 'pending'
};
}
}, 50);
}, delay);
});
return axis;
});
});
} catch (error) {
console.error('[InitializeModal] Status update error:', error);
}
};
const startInitialization = async () => {
try {
setErrorMessage(null);
const result = await comms.initializeDevice();
if (!result.success) {
setErrorMessage(result.message);
return;
}
setIsInitializing(true);
// Start polling for status updates every 200ms
const interval = setInterval(updateStatus, 200);
setStatusInterval(interval);
} catch (error: any) {
setErrorMessage(error.message || 'Failed to start initialization');
console.error('[InitializeModal] Initialization error:', error);
}
};
if (!isOpen) return null;
@@ -93,7 +131,7 @@ export const InitializeModal: React.FC<InitializeModalProps> = ({ isOpen, onClos
return (
<div className="absolute inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-sm">
<div className="w-[600px] glass-holo p-8 border border-neon-blue shadow-glow-blue relative flex flex-col">
<div className="w-[700px] max-h-[90vh] overflow-y-auto glass-holo p-8 border border-neon-blue shadow-glow-blue relative flex flex-col">
<button
onClick={onClose}
disabled={isInitializing}
@@ -103,10 +141,22 @@ export const InitializeModal: React.FC<InitializeModalProps> = ({ isOpen, onClos
</button>
<h2 className="text-2xl font-tech font-bold text-neon-blue mb-8 border-b border-white/10 pb-4 flex items-center gap-3">
<Target className="animate-pulse" /> AXIS INITIALIZATION
<Target className="animate-pulse" /> DEVICE INITIALIZATION
</h2>
<div className="space-y-6 mb-8">
{errorMessage && (
<div className="mb-6 p-4 bg-red-500/10 border border-red-500 rounded flex items-start gap-3">
<AlertCircle className="w-5 h-5 text-red-500 flex-shrink-0 mt-0.5" />
<div className="flex-1">
<div className="font-tech font-bold text-red-500 mb-1">INITIALIZATION ERROR</div>
<pre className="text-sm text-slate-300 whitespace-pre-wrap font-mono">
{errorMessage}
</pre>
</div>
</div>
)}
<div className="space-y-4 mb-8">
{axes.map((axis, index) => (
<div key={axis.name} className="space-y-2">
<div className="flex items-center justify-between">
@@ -118,7 +168,7 @@ export const InitializeModal: React.FC<InitializeModalProps> = ({ isOpen, onClos
) : (
<div className="w-5 h-5 border-2 border-slate-600 rounded-full" />
)}
<span className="font-tech font-bold text-lg text-white tracking-wider">
<span className="font-tech font-bold text-base text-white tracking-wider">
{axis.name}
</span>
</div>
@@ -140,7 +190,7 @@ export const InitializeModal: React.FC<InitializeModalProps> = ({ isOpen, onClos
</div>
{/* Progress Bar */}
<div className="h-3 bg-black/50 border border-slate-700 overflow-hidden">
<div className="h-2.5 bg-black/50 border border-slate-700 overflow-hidden">
<div
className={`h-full transition-all duration-100 ${
axis.status === 'completed'

View File

@@ -0,0 +1,133 @@
import React, { useState, useEffect } from 'react';
import { Database, RefreshCw } from 'lucide-react';
import { comms } from '../communication';
import { ProcessedDataRow } from '../types';
import { PanelHeader } from './common/PanelHeader';
import { CyberPanel } from './common/CyberPanel';
export const ProcessedDataPanel: React.FC = () => {
const [data, setData] = useState<ProcessedDataRow[]>([]);
const [loading, setLoading] = useState(false);
const loadData = async () => {
setLoading(true);
try {
const dataJson = await comms.getProcessedData();
const parsedData = JSON.parse(dataJson) as ProcessedDataRow[];
// Display only the first 5 rows
setData(parsedData.slice(0, 5));
} catch (error) {
console.error('[ProcessedDataPanel] Failed to load data:', error);
} finally {
setLoading(false);
}
};
useEffect(() => {
loadData();
// Refresh every 5 seconds
const interval = setInterval(loadData, 5000);
return () => clearInterval(interval);
}, []);
const getRowBackgroundColor = (row: ProcessedDataRow) => {
if (row.REMARK.startsWith('(BYPASS')) {
return 'bg-sky-300/20';
}
return row.LOC === 'L' ? 'bg-slate-700/20' : 'bg-slate-800/10';
};
const getRowTextColor = (row: ProcessedDataRow) => {
if (row.REMARK.startsWith('(BYPASS')) {
return 'text-white';
}
if (!row.PRNATTACH) {
return 'text-red-500';
}
if (!row.PRNVALID) {
return 'text-emerald-900';
}
return 'text-slate-200';
};
return (
<CyberPanel className="flex flex-col h-full">
<PanelHeader
icon={Database}
title="PROCESSED DATA"
className="mb-3"
>
<button
onClick={loadData}
disabled={loading}
className="p-1.5 hover:bg-white/10 rounded transition-colors disabled:opacity-50"
title="Refresh"
>
<RefreshCw className={`w-4 h-4 ${loading ? 'animate-spin' : ''}`} />
</button>
</PanelHeader>
<div className="flex-1 overflow-auto">
<table className="w-full text-xs border-collapse">
<thead className="sticky top-0 bg-slate-900/90 backdrop-blur-sm z-10">
<tr className="border-b border-neon-blue/30">
<th className="px-2 py-1.5 text-left font-tech text-neon-blue">R</th>
<th className="px-2 py-1.5 text-left font-tech text-neon-blue">MODEL</th>
<th className="px-2 py-1.5 text-left font-tech text-neon-blue">START</th>
<th className="px-2 py-1.5 text-left font-tech text-neon-blue">BATCH</th>
<th className="px-2 py-1.5 text-left font-tech text-neon-blue">SID</th>
<th className="px-2 py-1.5 text-left font-tech text-neon-blue">RID</th>
<th className="px-2 py-1.5 text-left font-tech text-neon-blue">VENDER</th>
<th className="px-2 py-1.5 text-right font-tech text-neon-blue">QTY</th>
<th className="px-2 py-1.5 text-right font-tech text-neon-blue">(MAX)</th>
<th className="px-2 py-1.5 text-left font-tech text-neon-blue">MFG</th>
<th className="px-2 py-1.5 text-left font-tech text-neon-blue">V.LOT</th>
<th className="px-2 py-1.5 text-left font-tech text-neon-blue">PARTNO</th>
<th className="px-2 py-1.5 text-left font-tech text-neon-blue">CPN</th>
<th className="px-2 py-1.5 text-left font-tech text-neon-blue">Remark</th>
<th className="px-2 py-1.5 text-center font-tech text-neon-blue">Attach</th>
<th className="px-2 py-1.5 text-center font-tech text-neon-blue">Valid</th>
</tr>
</thead>
<tbody>
{data.length === 0 ? (
<tr>
<td colSpan={16} className="px-2 py-8 text-center text-slate-500 font-mono text-xs">
{loading ? 'Loading...' : 'No data available'}
</td>
</tr>
) : (
data.map((row, index) => (
<tr
key={index}
className={`border-b border-white/5 ${getRowBackgroundColor(row)} ${getRowTextColor(row)} hover:bg-white/5 transition-colors`}
>
<td className="px-2 py-1.5 font-mono text-center">{row.target}</td>
<td className="px-2 py-1.5 font-mono">{row.JTYPE}</td>
<td className="px-2 py-1.5 font-mono">{row.STIME}</td>
<td className="px-2 py-1.5 font-mono">{row.BATCH}</td>
<td className="px-2 py-1.5 font-mono font-bold">{row.SID}</td>
<td className="px-2 py-1.5 font-mono font-bold">{row.RID}</td>
<td className="px-2 py-1.5 font-mono text-center">{row.VNAME}</td>
<td className="px-2 py-1.5 font-mono text-right">{row.QTY.toLocaleString()}</td>
<td className="px-2 py-1.5 font-mono text-right">{row.qtymax.toLocaleString()}</td>
<td className="px-2 py-1.5 font-mono text-center">{row.MFGDATE}</td>
<td className="px-2 py-1.5 font-mono">{row.VLOT}</td>
<td className="px-2 py-1.5 font-mono">{row.PARTNO}</td>
<td className="px-2 py-1.5 font-mono">{row.MCN}</td>
<td className="px-2 py-1.5 font-mono">{row.REMARK}</td>
<td className="px-2 py-1.5 text-center">
<span className={`inline-block w-3 h-3 rounded-full ${row.PRNATTACH ? 'bg-neon-green' : 'bg-red-500'}`} />
</td>
<td className="px-2 py-1.5 text-center">
<span className={`inline-block w-3 h-3 rounded-full ${row.PRNVALID ? 'bg-neon-green' : 'bg-red-500'}`} />
</td>
</tr>
))
)}
</tbody>
</table>
</div>
</CyberPanel>
);
};

View File

@@ -0,0 +1,53 @@
import React from 'react';
import { Play, Square, RotateCw } from 'lucide-react';
import { TechButton } from './common/TechButton';
import { CyberPanel } from './common/CyberPanel';
import { SystemState } from '../types';
interface SystemStatusPanelProps {
systemState: SystemState;
onControl: (action: 'start' | 'stop' | 'reset') => void;
}
export const SystemStatusPanel: React.FC<SystemStatusPanelProps> = ({
systemState,
onControl
}) => {
return (
<CyberPanel className="flex-none">
<div className="mb-3 text-xs text-neon-blue font-bold tracking-widest uppercase">System Status</div>
<div className={`text-2xl font-tech font-bold mb-4 ${systemState === SystemState.RUNNING ? 'text-neon-green text-shadow-glow-green' : 'text-slate-400'}`}>
{systemState}
</div>
{/* Horizontal Button Layout */}
<div className="grid grid-cols-3 gap-2">
<TechButton
variant="green"
className="flex flex-col items-center justify-center gap-1 h-20"
active={systemState === SystemState.RUNNING}
onClick={() => onControl('start')}
>
<Play className="w-5 h-5" />
<span className="text-xs">START</span>
</TechButton>
<TechButton
variant="amber"
className="flex flex-col items-center justify-center gap-1 h-20"
active={systemState === SystemState.PAUSED}
onClick={() => onControl('stop')}
>
<Square className="w-5 h-5 fill-current" />
<span className="text-xs">STOP</span>
</TechButton>
<TechButton
className="flex flex-col items-center justify-center gap-1 h-20"
onClick={() => onControl('reset')}
>
<RotateCw className="w-5 h-5" />
<span className="text-xs">RESET</span>
</TechButton>
</div>
</CyberPanel>
);
};

View File

@@ -0,0 +1,156 @@
import React, { useState, useRef, useEffect } from 'react';
import { Camera, ChevronRight, X } from 'lucide-react';
interface VisionMenuProps {
isOpen: boolean;
onClose: () => void;
}
export const VisionMenu: React.FC<VisionMenuProps> = ({ isOpen, onClose }) => {
const [activeSubmenu, setActiveSubmenu] = useState<string | null>(null);
const menuRef = useRef<HTMLDivElement>(null);
useEffect(() => {
const handleClickOutside = (event: MouseEvent) => {
if (menuRef.current && !menuRef.current.contains(event.target as Node)) {
onClose();
}
};
if (isOpen) {
document.addEventListener('mousedown', handleClickOutside);
}
return () => {
document.removeEventListener('mousedown', handleClickOutside);
};
}, [isOpen, onClose]);
if (!isOpen) return null;
const handleQRCodeCamera = () => {
console.log('[VisionMenu] Camera (QRCode) clicked');
// TODO: Implement QR Code camera functionality
};
const handleKeyenceBarcode = () => {
console.log('[VisionMenu] Barcode (Keyence) clicked');
// TODO: Implement Keyence barcode functionality
};
return (
<div
ref={menuRef}
className="absolute top-20 left-1/2 -translate-x-1/2 z-50 bg-black/95 backdrop-blur-md border border-neon-blue/50 rounded-lg shadow-glow-blue min-w-[300px]"
>
{/* Header */}
<div className="flex items-center justify-between p-4 border-b border-white/10">
<div className="flex items-center gap-3">
<Camera className="w-5 h-5 text-neon-blue" />
<h3 className="font-tech font-bold text-lg text-white">VISION</h3>
</div>
<button
onClick={onClose}
className="text-slate-400 hover:text-white transition-colors"
>
<X className="w-5 h-5" />
</button>
</div>
{/* Menu Items */}
<div className="p-2">
{/* Camera (QRCode) */}
<div className="relative">
<button
onMouseEnter={() => setActiveSubmenu('qrcode')}
onClick={handleQRCodeCamera}
className="w-full flex items-center justify-between px-4 py-3 text-left text-slate-300 hover:bg-neon-blue/10 hover:text-neon-blue rounded transition-colors font-tech"
>
<span>Camera (QRCode)</span>
<ChevronRight className="w-4 h-4" />
</button>
{/* QRCode Submenu */}
{activeSubmenu === 'qrcode' && (
<div
className="absolute left-full top-0 ml-1 bg-black/95 backdrop-blur-md border border-neon-blue/50 rounded-lg shadow-glow-blue min-w-[200px] p-2"
onMouseLeave={() => setActiveSubmenu(null)}
>
<button
onClick={() => console.log('[VisionMenu] QRCode - Connect')}
className="w-full px-4 py-2 text-left text-slate-300 hover:bg-neon-blue/10 hover:text-neon-blue rounded transition-colors text-sm"
>
Connect
</button>
<div className="h-px bg-white/10 my-1" />
<button
onClick={() => console.log('[VisionMenu] QRCode - Get Image')}
className="w-full px-4 py-2 text-left text-slate-300 hover:bg-neon-blue/10 hover:text-neon-blue rounded transition-colors text-sm"
>
Get Image
</button>
<button
onClick={() => console.log('[VisionMenu] QRCode - Live View')}
className="w-full px-4 py-2 text-left text-slate-300 hover:bg-neon-blue/10 hover:text-neon-blue rounded transition-colors text-sm"
>
Live View
</button>
<button
onClick={() => console.log('[VisionMenu] QRCode - Read Test')}
className="w-full px-4 py-2 text-left text-slate-300 hover:bg-neon-blue/10 hover:text-neon-blue rounded transition-colors text-sm"
>
Read Test
</button>
</div>
)}
</div>
{/* Barcode (Keyence) */}
<div className="relative">
<button
onMouseEnter={() => setActiveSubmenu('keyence')}
onClick={handleKeyenceBarcode}
className="w-full flex items-center justify-between px-4 py-3 text-left text-slate-300 hover:bg-neon-blue/10 hover:text-neon-blue rounded transition-colors font-tech"
>
<span>Barcode (Keyence)</span>
<ChevronRight className="w-4 h-4" />
</button>
{/* Keyence Submenu */}
{activeSubmenu === 'keyence' && (
<div
className="absolute left-full top-0 ml-1 bg-black/95 backdrop-blur-md border border-neon-blue/50 rounded-lg shadow-glow-blue min-w-[200px] p-2"
onMouseLeave={() => setActiveSubmenu(null)}
>
<button
onClick={() => console.log('[VisionMenu] Keyence - Get Image')}
className="w-full px-4 py-2 text-left text-slate-300 hover:bg-neon-blue/10 hover:text-neon-blue rounded transition-colors text-sm"
>
Get Image
</button>
<div className="h-px bg-white/10 my-1" />
<button
onClick={() => console.log('[VisionMenu] Keyence - Trigger On')}
className="w-full px-4 py-2 text-left text-slate-300 hover:bg-neon-blue/10 hover:text-neon-blue rounded transition-colors text-sm"
>
Trigger On
</button>
<button
onClick={() => console.log('[VisionMenu] Keyence - Trigger Off')}
className="w-full px-4 py-2 text-left text-slate-300 hover:bg-neon-blue/10 hover:text-neon-blue rounded transition-colors text-sm"
>
Trigger Off
</button>
<button
onClick={() => console.log('[VisionMenu] Keyence - Save Image')}
className="w-full px-4 py-2 text-left text-slate-300 hover:bg-neon-blue/10 hover:text-neon-blue rounded transition-colors text-sm"
>
Save Image
</button>
</div>
)}
</div>
</div>
</div>
);
};

View File

@@ -1,6 +1,7 @@
import React from 'react';
import React, { useState } from 'react';
import { useNavigate, useLocation } from 'react-router-dom';
import { Activity, Settings, Move, Camera, Layers, Cpu, Target } from 'lucide-react';
import { VisionMenu } from '../VisionMenu';
interface HeaderProps {
currentTime: Date;
@@ -12,12 +13,15 @@ interface HeaderProps {
export const Header: React.FC<HeaderProps> = ({ currentTime, onTabChange, activeTab }) => {
const navigate = useNavigate();
const location = useLocation();
const [showVisionMenu, setShowVisionMenu] = useState(false);
const isWebView = typeof window !== 'undefined' && !!window.chrome?.webview;
const isIOPage = location.pathname === '/io-monitor';
return (
<header className="absolute top-0 left-0 right-0 h-20 px-6 flex items-center justify-between z-40 bg-gradient-to-b from-black/80 to-transparent pointer-events-none">
<>
<VisionMenu isOpen={showVisionMenu} onClose={() => setShowVisionMenu(false)} />
<header className="absolute top-0 left-0 right-0 h-20 px-6 flex items-center justify-between z-40 bg-gradient-to-b from-black/80 to-transparent pointer-events-none">
<div
className="flex items-center gap-4 pointer-events-auto cursor-pointer group"
onClick={() => {
@@ -47,7 +51,7 @@ export const Header: React.FC<HeaderProps> = ({ currentTime, onTabChange, active
{/* IO Tab Switcher (only on IO page) */}
<div className="bg-black/40 backdrop-blur-md p-1 rounded-full border border-white/10 flex gap-1">
<div className="bg-black/40 backdrop-blur-md p-1 rounded-2xl border border-white/10 flex gap-1">
{[
{ id: 'recipe', icon: Layers, label: 'RECIPE', path: '/' },
{ id: 'io', icon: Activity, label: 'I/O MONITOR', path: '/io-monitor' },
@@ -67,21 +71,27 @@ export const Header: React.FC<HeaderProps> = ({ currentTime, onTabChange, active
if (item.id === 'io') {
navigate('/io-monitor');
onTabChange(null);
setShowVisionMenu(false);
} else if (item.id === 'camera') {
setShowVisionMenu(!showVisionMenu);
onTabChange(null);
} else {
if (location.pathname !== '/') {
navigate('/');
}
setShowVisionMenu(false);
onTabChange(activeTab === item.id ? null : item.id as any);
}
}}
className={`
flex items-center gap-2 px-6 py-2 rounded-full font-tech font-bold text-sm transition-all border border-transparent
flex flex-col items-center justify-center gap-1 px-3 py-2 rounded-xl font-tech font-bold text-[10px] transition-all border border-transparent min-w-[70px]
${isActive
? 'bg-neon-blue/10 text-neon-blue border-neon-blue shadow-glow-blue'
: 'text-slate-400 hover:text-white hover:bg-white/5'}
`}
>
<item.icon className="w-4 h-4" /> {item.label}
<item.icon className="w-5 h-5" />
<span className="leading-tight">{item.label}</span>
</button>
);
})}
@@ -97,5 +107,6 @@ export const Header: React.FC<HeaderProps> = ({ currentTime, onTabChange, active
</div>
</div>
</header>
</>
);
};

View File

@@ -1,14 +1,15 @@
import React, { useState, useEffect } from 'react';
import { Play, Square, RotateCw, AlertTriangle, Siren, Terminal } from 'lucide-react';
import { AlertTriangle, Siren } from 'lucide-react';
import { Machine3D } from '../components/Machine3D';
import { SettingsModal } from '../components/SettingsModal';
import { InitializeModal } from '../components/InitializeModal';
import { RecipePanel } from '../components/RecipePanel';
import { MotionPanel } from '../components/MotionPanel';
import { CameraPanel } from '../components/CameraPanel';
import { CyberPanel } from '../components/common/CyberPanel';
import { TechButton } from '../components/common/TechButton';
import { ModelInfoPanel } from '../components/ModelInfoPanel';
import { ProcessedDataPanel } from '../components/ProcessedDataPanel';
import { SystemStatusPanel } from '../components/SystemStatusPanel';
import { EventLogPanel } from '../components/EventLogPanel';
import { SystemState, Recipe, IOPoint, LogEntry, RobotTarget, ConfigItem } from '../types';
interface HomePageProps {
@@ -46,14 +47,8 @@ export const HomePage: React.FC<HomePageProps> = ({
onCloseTab,
videoRef
}) => {
useEffect(() => {
if (activeTab === 'camera' && navigator.mediaDevices?.getUserMedia) {
navigator.mediaDevices.getUserMedia({ video: true }).then(s => { if (videoRef.current) videoRef.current.srcObject = s });
}
}, [activeTab, videoRef]);
return (
<main className="relative w-full h-full flex gap-6 px-6">
<main className="relative w-full h-full">
{/* 3D Canvas (Background Layer) */}
<div className="absolute inset-0 z-0">
<Machine3D target={robotTarget} ioState={ioPoints} doorStates={doorStates} />
@@ -78,11 +73,10 @@ export const HomePage: React.FC<HomePageProps> = ({
</div>
{/* Floating Panel (Left) */}
{activeTab && activeTab !== 'setting' && activeTab !== 'recipe' && (
<div className="w-[450px] z-20 animate-in slide-in-from-left-20 duration-500 fade-in">
{activeTab === 'motion' && (
<div className="absolute left-6 top-0 bottom-52 w-[450px] z-20 animate-in slide-in-from-left-20 duration-500 fade-in">
<CyberPanel className="h-full flex flex-col">
{activeTab === 'motion' && <MotionPanel robotTarget={robotTarget} onMove={onMove} />}
{activeTab === 'camera' && <CameraPanel videoRef={videoRef} />}
<MotionPanel robotTarget={robotTarget} onMove={onMove} />
</CyberPanel>
</div>
)}
@@ -109,54 +103,15 @@ export const HomePage: React.FC<HomePageProps> = ({
/>
{/* Right Sidebar (Dashboard) */}
<div className="w-80 ml-auto z-20 flex flex-col gap-4">
<div className="absolute right-6 top-0 bottom-52 w-80 z-20 flex flex-col gap-4">
<ModelInfoPanel currentRecipe={currentRecipe} />
<SystemStatusPanel systemState={systemState} onControl={onControl} />
<EventLogPanel logs={logs} />
</div>
<CyberPanel className="flex-none">
<div className="mb-2 text-xs text-neon-blue font-bold tracking-widest uppercase">System Status</div>
<div className={`text-3xl font-tech font-bold mb-4 ${systemState === SystemState.RUNNING ? 'text-neon-green text-shadow-glow-green' : 'text-slate-400'}`}>
{systemState}
</div>
<div className="space-y-3">
<TechButton
variant="green"
className="w-full flex items-center justify-center gap-2"
active={systemState === SystemState.RUNNING}
onClick={() => onControl('start')}
>
<Play className="w-4 h-4" /> START AUTO
</TechButton>
<TechButton
variant="amber"
className="w-full flex items-center justify-center gap-2"
active={systemState === SystemState.PAUSED}
onClick={() => onControl('stop')}
>
<Square className="w-4 h-4 fill-current" /> STOP / PAUSE
</TechButton>
<TechButton
className="w-full flex items-center justify-center gap-2"
onClick={() => onControl('reset')}
>
<RotateCw className="w-4 h-4" /> SYSTEM RESET
</TechButton>
</div>
</CyberPanel>
<CyberPanel className="flex-1 flex flex-col min-h-0">
<div className="mb-2 flex items-center justify-between text-xs text-neon-blue font-bold tracking-widest uppercase border-b border-white/10 pb-2">
<span>Event Log</span>
<Terminal className="w-3 h-3" />
</div>
<div className="flex-1 overflow-y-auto font-mono text-[10px] space-y-1 pr-1 custom-scrollbar">
{logs.map(log => (
<div key={log.id} className={`flex gap-2 ${log.type === 'error' ? 'text-red-500' : log.type === 'warning' ? 'text-amber-400' : 'text-slate-400'}`}>
<span className="opacity-50">[{log.timestamp}]</span>
<span>{log.message}</span>
</div>
))}
</div>
</CyberPanel>
{/* Bottom Docked - Processed Data Panel */}
<div className="absolute left-6 right-6 bottom-10 h-48 z-20">
<ProcessedDataPanel />
</div>
</main>
);

View File

@@ -58,6 +58,26 @@ export interface ConfigItem {
Description: string;
}
export interface ProcessedDataRow {
target: string;
JTYPE: string;
STIME: string;
BATCH: string;
SID: string;
RID: string;
VNAME: string;
LOC: string;
QTY: number;
qtymax: number;
MFGDATE: string;
VLOT: string;
PARTNO: string;
MCN: string;
REMARK: string;
PRNATTACH: boolean;
PRNVALID: boolean;
}
declare global {
interface Window {
chrome?: {
@@ -76,6 +96,9 @@ declare global {
GetRecipe(recipeTitle: string): Promise<string>;
SaveRecipe(recipeTitle: string, recipeData: string): Promise<string>;
SaveConfig(configJson: string): Promise<void>;
InitializeDevice(): Promise<string>;
GetInitializeStatus(): Promise<string>;
GetProcessedData(): Promise<string>;
}
};
addEventListener(type: string, listener: (event: any) => void): void;

View File

@@ -71,6 +71,121 @@ namespace Project.WebUI
_host.HandleCommand(command);
}
public string InitializeDevice()
{
Console.WriteLine($"[C#] Initialize Device Request");
try
{
// Check if motion is initialized
if (PUB.flag.get(eVarBool.FG_INIT_MOTIO) == false)
{
var response = new { success = false, message = "Motion not initialized\nPlease try again later" };
return JsonConvert.SerializeObject(response);
}
var errors = new List<string>();
// Check if system is running
if (PUB.sm.isRunning == true)
errors.Add("AUTO-RUN MODE - Cannot be used during automatic execution. Please stop and try again");
// Check AIR supply
if (DIO.GetIOOutput(eDOName.SOL_AIR) == false)
errors.Add("Press the AIR button on the front to supply AIR");
// Check printer pickers
if (DIO.GetIOInput(eDIName.L_PICK_BW) == false)
errors.Add("Left printer picker is not in reverse position");
if (DIO.GetIOInput(eDIName.R_PICK_BW) == false)
errors.Add("Right printer picker is not in reverse position");
// Check picker cylinders
if (SETTING.Data.Enable_PickerCylinder)
{
if (DIO.GetIOInput(eDIName.L_CYLUP) == false)
errors.Add("Left printer picker cylinder is not in UP position");
if (DIO.GetIOInput(eDIName.R_CYLUP) == false)
errors.Add("Right printer picker cylinder is not in UP position");
}
// Check emergency stop
if (DIO.IsEmergencyOn() == true)
errors.Add("Cannot move when in emergency stop state");
// Check if running
if (PUB.sm.Step == eSMStep.RUN)
errors.Add("Cannot initialize while in operation");
if (errors.Count > 0)
{
var response = new { success = false, message = string.Join("\n", errors) };
return JsonConvert.SerializeObject(response);
}
// Start initialization
PUB.log.Add("User Request: Initialize Device", false);
PUB.sm.SetNewStep(eSMStep.HOME_FULL);
var response2 = new { success = true, message = "Device initialization started" };
return JsonConvert.SerializeObject(response2);
}
catch (Exception ex)
{
Console.WriteLine($"[ERROR] Failed to initialize device: {ex.Message}");
var response = new { success = false, message = ex.Message };
return JsonConvert.SerializeObject(response);
}
}
public string GetInitializeStatus()
{
try
{
var status = new
{
isInitializing = PUB.sm.Step == eSMStep.HOME_FULL,
currentStep = PUB.sm.Step.ToString(),
axes = new List<object>
{
new { name = "PZ_PICK", axisIndex = (int)eAxis.PZ_PICK, isHomeSet = PUB.mot.IsHomeSet((short)eAxis.PZ_PICK), progress = GetAxisProgress(eAxis.PZ_PICK) },
new { name = "PL_UPDN", axisIndex = (int)eAxis.PL_UPDN, isHomeSet = PUB.mot.IsHomeSet((short)eAxis.PL_UPDN), progress = GetAxisProgress(eAxis.PL_UPDN) },
new { name = "PR_UPDN", axisIndex = (int)eAxis.PR_UPDN, isHomeSet = PUB.mot.IsHomeSet((short)eAxis.PR_UPDN), progress = GetAxisProgress(eAxis.PR_UPDN) },
new { name = "PL_MOVE", axisIndex = (int)eAxis.PL_MOVE, isHomeSet = PUB.mot.IsHomeSet((short)eAxis.PL_MOVE), progress = GetAxisProgress(eAxis.PL_MOVE) },
new { name = "PR_MOVE", axisIndex = (int)eAxis.PR_MOVE, isHomeSet = PUB.mot.IsHomeSet((short)eAxis.PR_MOVE), progress = GetAxisProgress(eAxis.PR_MOVE) },
new { name = "Z_THETA", axisIndex = (int)eAxis.Z_THETA, isHomeSet = PUB.mot.IsHomeSet((short)eAxis.Z_THETA), progress = GetAxisProgress(eAxis.Z_THETA) },
new { name = "PX_PICK", axisIndex = (int)eAxis.PX_PICK, isHomeSet = PUB.mot.IsHomeSet((short)eAxis.PX_PICK), progress = GetAxisProgress(eAxis.PX_PICK) }
}
};
return JsonConvert.SerializeObject(status);
}
catch (Exception ex)
{
Console.WriteLine($"[ERROR] Failed to get initialize status: {ex.Message}");
return JsonConvert.SerializeObject(new { isInitializing = false, currentStep = "ERROR", axes = new List<object>() });
}
}
private int GetAxisProgress(eAxis axis)
{
// Return 100 if home is set, otherwise check motion status
if (PUB.mot.IsHomeSet((short)axis))
return 100;
// Check if axis is in motion
if (PUB.mot.IsMotion((short)axis))
return 50; // In progress
// Check if home search started
if (PUB.mot.IsOrg((short)axis) || PUB.mot.IsLimitN((short)axis))
return 75; // Near completion
return 0; // Not started
}
/// <summary>
/// 마이그레이션완료
/// </summary>
@@ -90,11 +205,19 @@ namespace Project.WebUI
}
// Select model using PUB.SelectModelV
bool result = AR.PUB.SelectModelV(recipeTitle, true);
bool result = PUB.SelectModelV(recipeTitle, true);
if (result)
{
Console.WriteLine($"[INFO] Recipe {recipeTitle} selected successfully");
// Select motion model based on conveyor usage
var motionmode = VAR.BOOL[eVarBool.Use_Conveyor] ? "Conveyor" : "Default";
bool changeMot = PUB.SelectModelM(motionmode);
if (changeMot == false)
{
PUB.log.AddE($"No Motion model ({motionmode})");
}
Console.WriteLine($"[INFO] Recipe {recipeTitle} selected successfully with motion mode: {motionmode}");
// Get the selected model data
var dr = PUB.mdm.GetDataV(recipeTitle);
@@ -144,14 +267,14 @@ namespace Project.WebUI
try
{
// Use SETTING.Data (CommonSetting) from the project
if (AR.SETTING.Data == null)
if (SETTING.Data == null)
{
Console.WriteLine($"[WARN] SETTING.Data is not initialized");
return "[]";
}
var settingsArray = new List<object>();
var properties = AR.SETTING.Data.GetType().GetProperties();
var properties = SETTING.Data.GetType().GetProperties();
foreach (var prop in properties)
{
@@ -167,7 +290,7 @@ namespace Project.WebUI
// Get property info
string key = prop.Name;
object value = prop.GetValue(AR.SETTING.Data, null);
object value = prop.GetValue(SETTING.Data, null);
string type = "String";
string group = "General";
string description = key.Replace("_", " ");
@@ -241,7 +364,7 @@ namespace Project.WebUI
var settingsArray = JsonConvert.DeserializeObject<List<Dictionary<string, object>>>(configJson);
// Update SETTING.Data properties
var properties = AR.SETTING.Data.GetType().GetProperties();
var properties = SETTING.Data.GetType().GetProperties();
foreach (var item in settingsArray)
{
@@ -258,22 +381,22 @@ namespace Project.WebUI
{
if (type == "Boolean")
{
prop.SetValue(AR.SETTING.Data, bool.Parse(value), null);
prop.SetValue(SETTING.Data, bool.Parse(value), null);
}
else if (type == "Number")
{
if (prop.PropertyType == typeof(int))
prop.SetValue(AR.SETTING.Data, int.Parse(value), null);
prop.SetValue(SETTING.Data, int.Parse(value), null);
else if (prop.PropertyType == typeof(long))
prop.SetValue(AR.SETTING.Data, long.Parse(value), null);
prop.SetValue(SETTING.Data, long.Parse(value), null);
else if (prop.PropertyType == typeof(double))
prop.SetValue(AR.SETTING.Data, double.Parse(value), null);
prop.SetValue(SETTING.Data, double.Parse(value), null);
else if (prop.PropertyType == typeof(float))
prop.SetValue(AR.SETTING.Data, float.Parse(value), null);
prop.SetValue(SETTING.Data, float.Parse(value), null);
}
else
{
prop.SetValue(AR.SETTING.Data, value, null);
prop.SetValue(SETTING.Data, value, null);
}
}
catch (Exception ex)
@@ -283,7 +406,7 @@ namespace Project.WebUI
}
// Save to file
AR.SETTING.Data.Save();
SETTING.Data.Save();
Console.WriteLine($"[INFO] Settings saved successfully");
}
@@ -705,5 +828,126 @@ namespace Project.WebUI
return JsonConvert.SerializeObject(response);
}
}
public string GetProcessedData()
{
try
{
// TODO: Connect to actual data source (FMain.dataSet1.K4EE_Component_Reel_Result)
// For now, return sample data structure
var processedData = new List<object>();
// Sample data for testing - replace with actual data from FMain or database
var sampleData = new[] {
new {
target = "1",
JTYPE = "MODEL_A",
STIME = DateTime.Now.AddMinutes(-30).ToString("HH:mm:ss"),
BATCH = DateTime.Now.AddMinutes(-30).ToString("HH:mm:ss"),
SID = "SID123456",
RID = "RID789012",
VNAME = "VENDOR_A",
LOC = "L",
QTY = 1250,
qtymax = 2500,
MFGDATE = "2025-11-20",
VLOT = "LOT001",
PARTNO = "PN12345",
MCN = "CPN001",
REMARK = "",
PRNATTACH = true,
PRNVALID = true
},
new {
target = "2",
JTYPE = "MODEL_B",
STIME = DateTime.Now.AddMinutes(-25).ToString("HH:mm:ss"),
BATCH = DateTime.Now.AddMinutes(-25).ToString("HH:mm:ss"),
SID = "SID234567",
RID = "RID890123",
VNAME = "VENDOR_B",
LOC = "R",
QTY = 3500,
qtymax = 5000,
MFGDATE = "2025-11-21",
VLOT = "LOT002",
PARTNO = "PN23456",
MCN = "CPN002",
REMARK = "",
PRNATTACH = true,
PRNVALID = false
},
new {
target = "3",
JTYPE = "MODEL_A",
STIME = DateTime.Now.AddMinutes(-20).ToString("HH:mm:ss"),
BATCH = DateTime.Now.AddMinutes(-20).ToString("HH:mm:ss"),
SID = "SID345678",
RID = "RID901234",
VNAME = "VENDOR_A",
LOC = "L",
QTY = 800,
qtymax = 2500,
MFGDATE = "2025-11-22",
VLOT = "LOT003",
PARTNO = "PN34567",
MCN = "CPN003",
REMARK = "(BYPASS)",
PRNATTACH = false,
PRNVALID = true
},
new {
target = "4",
JTYPE = "MODEL_C",
STIME = DateTime.Now.AddMinutes(-15).ToString("HH:mm:ss"),
BATCH = DateTime.Now.AddMinutes(-15).ToString("HH:mm:ss"),
SID = "SID456789",
RID = "RID012345",
VNAME = "VENDOR_C",
LOC = "R",
QTY = 4200,
qtymax = 6000,
MFGDATE = "2025-11-23",
VLOT = "LOT004",
PARTNO = "PN45678",
MCN = "CPN004",
REMARK = "",
PRNATTACH = true,
PRNVALID = true
},
new {
target = "5",
JTYPE = "MODEL_B",
STIME = DateTime.Now.AddMinutes(-10).ToString("HH:mm:ss"),
BATCH = DateTime.Now.AddMinutes(-10).ToString("HH:mm:ss"),
SID = "SID567890",
RID = "RID123456",
VNAME = "VENDOR_B",
LOC = "L",
QTY = 1800,
qtymax = 5000,
MFGDATE = "2025-11-24",
VLOT = "LOT005",
PARTNO = "PN56789",
MCN = "CPN005",
REMARK = "",
PRNATTACH = true,
PRNVALID = true
}
};
foreach (var item in sampleData)
{
processedData.Add(item);
}
return JsonConvert.SerializeObject(processedData);
}
catch (Exception ex)
{
Console.WriteLine($"[ERROR] Failed to get processed data: {ex.Message}");
return JsonConvert.SerializeObject(new List<object>());
}
}
}
}

View File

@@ -212,6 +212,27 @@ namespace Project.WebUI
var response = new { type = "RECIPE_SAVED", data = Newtonsoft.Json.JsonConvert.DeserializeObject(resultJson) };
await Send(socket, Newtonsoft.Json.JsonConvert.SerializeObject(response));
}
else if (type == "INITIALIZE_DEVICE")
{
var bridge = new MachineBridge(_mainForm);
string resultJson = bridge.InitializeDevice();
var response = new { type = "DEVICE_INITIALIZED", data = Newtonsoft.Json.JsonConvert.DeserializeObject(resultJson) };
await Send(socket, Newtonsoft.Json.JsonConvert.SerializeObject(response));
}
else if (type == "GET_INITIALIZE_STATUS")
{
var bridge = new MachineBridge(_mainForm);
string statusJson = bridge.GetInitializeStatus();
var response = new { type = "INITIALIZE_STATUS_DATA", data = Newtonsoft.Json.JsonConvert.DeserializeObject(statusJson) };
await Send(socket, Newtonsoft.Json.JsonConvert.SerializeObject(response));
}
else if (type == "GET_PROCESSED_DATA")
{
var bridge = new MachineBridge(_mainForm);
string dataJson = bridge.GetProcessedData();
var response = new { type = "PROCESSED_DATA", data = Newtonsoft.Json.JsonConvert.DeserializeObject(dataJson) };
await Send(socket, Newtonsoft.Json.JsonConvert.SerializeObject(response));
}
}
catch (Exception ex)
{

View File

@@ -993,7 +993,7 @@
//
this.systemParameterToolStripMenuItem.Font = new System.Drawing.Font("Cambria", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.systemParameterToolStripMenuItem.Name = "systemParameterToolStripMenuItem";
this.systemParameterToolStripMenuItem.Size = new System.Drawing.Size(255, 22);
this.systemParameterToolStripMenuItem.Size = new System.Drawing.Size(253, 22);
this.systemParameterToolStripMenuItem.Text = "System Parameter";
this.systemParameterToolStripMenuItem.Click += new System.EventHandler(this.systemParameterToolStripMenuItem_Click);
//
@@ -1001,28 +1001,28 @@
//
this.toolStripMenuItem9.Font = new System.Drawing.Font("Cambria", 10F, System.Drawing.FontStyle.Bold);
this.toolStripMenuItem9.Name = "toolStripMenuItem9";
this.toolStripMenuItem9.Size = new System.Drawing.Size(255, 22);
this.toolStripMenuItem9.Size = new System.Drawing.Size(253, 22);
this.toolStripMenuItem9.Text = "Show Log";
this.toolStripMenuItem9.Click += new System.EventHandler(this.toolStripMenuItem9_Click);
//
// toolStripMenuItem4
//
this.toolStripMenuItem4.Name = "toolStripMenuItem4";
this.toolStripMenuItem4.Size = new System.Drawing.Size(252, 6);
this.toolStripMenuItem4.Size = new System.Drawing.Size(250, 6);
//
// demoRunToolStripMenuItem
//
this.demoRunToolStripMenuItem.Font = new System.Drawing.Font("Cambria", 10F, System.Drawing.FontStyle.Bold);
this.demoRunToolStripMenuItem.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(0)))));
this.demoRunToolStripMenuItem.Name = "demoRunToolStripMenuItem";
this.demoRunToolStripMenuItem.Size = new System.Drawing.Size(255, 22);
this.demoRunToolStripMenuItem.Size = new System.Drawing.Size(253, 22);
this.demoRunToolStripMenuItem.Text = "save data test";
this.demoRunToolStripMenuItem.Click += new System.EventHandler(this.demoRunToolStripMenuItem_Click);
//
// toolStripMenuItem1
//
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
this.toolStripMenuItem1.Size = new System.Drawing.Size(252, 6);
this.toolStripMenuItem1.Size = new System.Drawing.Size(250, 6);
//
// panBottom
//
@@ -1362,72 +1362,72 @@
this.keyenceSaveImageToolStripMenuItem,
this.toolStripMenuItem5});
this.cmCam.Name = "cmLot1";
this.cmCam.Size = new System.Drawing.Size(208, 192);
this.cmCam.Size = new System.Drawing.Size(212, 192);
this.cmCam.Opening += new System.ComponentModel.CancelEventHandler(this.cmCam_Opening);
//
// toolStripMenuItem2
//
this.toolStripMenuItem2.Name = "toolStripMenuItem2";
this.toolStripMenuItem2.Size = new System.Drawing.Size(207, 22);
this.toolStripMenuItem2.Size = new System.Drawing.Size(211, 22);
this.toolStripMenuItem2.Text = "Save Image";
this.toolStripMenuItem2.Click += new System.EventHandler(this.toolStripMenuItem2_Click);
//
// liveViewProcessOnOffToolStripMenuItem
//
this.liveViewProcessOnOffToolStripMenuItem.Name = "liveViewProcessOnOffToolStripMenuItem";
this.liveViewProcessOnOffToolStripMenuItem.Size = new System.Drawing.Size(207, 22);
this.liveViewProcessOnOffToolStripMenuItem.Size = new System.Drawing.Size(211, 22);
this.liveViewProcessOnOffToolStripMenuItem.Text = "Live View Process On/Off";
this.liveViewProcessOnOffToolStripMenuItem.Click += new System.EventHandler(this.liveViewProcessOnOffToolStripMenuItem_Click);
//
// zoomFitToolStripMenuItem
//
this.zoomFitToolStripMenuItem.Name = "zoomFitToolStripMenuItem";
this.zoomFitToolStripMenuItem.Size = new System.Drawing.Size(207, 22);
this.zoomFitToolStripMenuItem.Size = new System.Drawing.Size(211, 22);
this.zoomFitToolStripMenuItem.Text = "Zoom Fit";
this.zoomFitToolStripMenuItem.Click += new System.EventHandler(this.zoomFitToolStripMenuItem_Click);
//
// readBarcodeToolStripMenuItem
//
this.readBarcodeToolStripMenuItem.Name = "readBarcodeToolStripMenuItem";
this.readBarcodeToolStripMenuItem.Size = new System.Drawing.Size(207, 22);
this.readBarcodeToolStripMenuItem.Size = new System.Drawing.Size(211, 22);
this.readBarcodeToolStripMenuItem.Text = "Read Barcode";
//
// livetaskToolStripMenuItem
//
this.livetaskToolStripMenuItem.Name = "livetaskToolStripMenuItem";
this.livetaskToolStripMenuItem.Size = new System.Drawing.Size(207, 22);
this.livetaskToolStripMenuItem.Size = new System.Drawing.Size(211, 22);
this.livetaskToolStripMenuItem.Text = "live-task";
//
// toolStripMenuItem3
//
this.toolStripMenuItem3.Name = "toolStripMenuItem3";
this.toolStripMenuItem3.Size = new System.Drawing.Size(204, 6);
this.toolStripMenuItem3.Size = new System.Drawing.Size(208, 6);
//
// keyenceTrigOnToolStripMenuItem
//
this.keyenceTrigOnToolStripMenuItem.Name = "keyenceTrigOnToolStripMenuItem";
this.keyenceTrigOnToolStripMenuItem.Size = new System.Drawing.Size(207, 22);
this.keyenceTrigOnToolStripMenuItem.Size = new System.Drawing.Size(211, 22);
this.keyenceTrigOnToolStripMenuItem.Text = "keyence Trig On";
this.keyenceTrigOnToolStripMenuItem.Click += new System.EventHandler(this.keyenceTrigOnToolStripMenuItem_Click);
//
// keyenceTrigOffToolStripMenuItem
//
this.keyenceTrigOffToolStripMenuItem.Name = "keyenceTrigOffToolStripMenuItem";
this.keyenceTrigOffToolStripMenuItem.Size = new System.Drawing.Size(207, 22);
this.keyenceTrigOffToolStripMenuItem.Size = new System.Drawing.Size(211, 22);
this.keyenceTrigOffToolStripMenuItem.Text = "Keyence Trig Off";
this.keyenceTrigOffToolStripMenuItem.Click += new System.EventHandler(this.keyenceTrigOffToolStripMenuItem_Click);
//
// keyenceSaveImageToolStripMenuItem
//
this.keyenceSaveImageToolStripMenuItem.Name = "keyenceSaveImageToolStripMenuItem";
this.keyenceSaveImageToolStripMenuItem.Size = new System.Drawing.Size(207, 22);
this.keyenceSaveImageToolStripMenuItem.Size = new System.Drawing.Size(211, 22);
this.keyenceSaveImageToolStripMenuItem.Text = "Keyence Save Image";
this.keyenceSaveImageToolStripMenuItem.Click += new System.EventHandler(this.keyenceSaveImageToolStripMenuItem_Click);
//
// toolStripMenuItem5
//
this.toolStripMenuItem5.Name = "toolStripMenuItem5";
this.toolStripMenuItem5.Size = new System.Drawing.Size(204, 6);
this.toolStripMenuItem5.Size = new System.Drawing.Size(208, 6);
//
// panel37
//
@@ -1617,12 +1617,12 @@
this.cmBarcode.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripMenuItem22});
this.cmBarcode.Name = "cmLot1";
this.cmBarcode.Size = new System.Drawing.Size(108, 26);
this.cmBarcode.Size = new System.Drawing.Size(109, 26);
//
// toolStripMenuItem22
//
this.toolStripMenuItem22.Name = "toolStripMenuItem22";
this.toolStripMenuItem22.Size = new System.Drawing.Size(107, 22);
this.toolStripMenuItem22.Size = new System.Drawing.Size(108, 22);
this.toolStripMenuItem22.Text = "Delete";
//
// cmDebug
@@ -1661,7 +1661,7 @@
this.toolStripMenuItem16,
this.getImageToolStripMenuItem});
this.cmDebug.Name = "cmVision";
this.cmDebug.Size = new System.Drawing.Size(256, 590);
this.cmDebug.Size = new System.Drawing.Size(254, 590);
//
// inboundToolStripMenuItem
//
@@ -1671,109 +1671,109 @@
this.apiCheckToolStripMenuItem,
this.barcodeTestToolStripMenuItem});
this.inboundToolStripMenuItem.Name = "inboundToolStripMenuItem";
this.inboundToolStripMenuItem.Size = new System.Drawing.Size(255, 22);
this.inboundToolStripMenuItem.Size = new System.Drawing.Size(253, 22);
this.inboundToolStripMenuItem.Text = "Inbound";
//
// postDataToolStripMenuItem
//
this.postDataToolStripMenuItem.Name = "postDataToolStripMenuItem";
this.postDataToolStripMenuItem.Size = new System.Drawing.Size(160, 22);
this.postDataToolStripMenuItem.Size = new System.Drawing.Size(158, 22);
this.postDataToolStripMenuItem.Text = "Post Data";
this.postDataToolStripMenuItem.Click += new System.EventHandler(this.postDataToolStripMenuItem_Click);
//
// manualPrintToolStripMenuItem
//
this.manualPrintToolStripMenuItem.Name = "manualPrintToolStripMenuItem";
this.manualPrintToolStripMenuItem.Size = new System.Drawing.Size(160, 22);
this.manualPrintToolStripMenuItem.Size = new System.Drawing.Size(158, 22);
this.manualPrintToolStripMenuItem.Text = "Manual Print";
this.manualPrintToolStripMenuItem.Click += new System.EventHandler(this.manualPrintToolStripMenuItem_Click);
//
// apiCheckToolStripMenuItem
//
this.apiCheckToolStripMenuItem.Name = "apiCheckToolStripMenuItem";
this.apiCheckToolStripMenuItem.Size = new System.Drawing.Size(160, 22);
this.apiCheckToolStripMenuItem.Size = new System.Drawing.Size(158, 22);
this.apiCheckToolStripMenuItem.Text = "api check";
this.apiCheckToolStripMenuItem.Click += new System.EventHandler(this.apiCheckToolStripMenuItem_Click);
//
// barcodeTestToolStripMenuItem
//
this.barcodeTestToolStripMenuItem.Name = "barcodeTestToolStripMenuItem";
this.barcodeTestToolStripMenuItem.Size = new System.Drawing.Size(160, 22);
this.barcodeTestToolStripMenuItem.Size = new System.Drawing.Size(158, 22);
this.barcodeTestToolStripMenuItem.Text = "Barcode Test";
this.barcodeTestToolStripMenuItem.Click += new System.EventHandler(this.barcodeTestToolStripMenuItem_Click);
//
// countToolStripMenuItem
//
this.countToolStripMenuItem.Name = "countToolStripMenuItem";
this.countToolStripMenuItem.Size = new System.Drawing.Size(255, 22);
this.countToolStripMenuItem.Size = new System.Drawing.Size(253, 22);
this.countToolStripMenuItem.Text = "Debug Window";
this.countToolStripMenuItem.Click += new System.EventHandler(this.countToolStripMenuItem_Click);
//
// motionEmulatorToolStripMenuItem
//
this.motionEmulatorToolStripMenuItem.Name = "motionEmulatorToolStripMenuItem";
this.motionEmulatorToolStripMenuItem.Size = new System.Drawing.Size(255, 22);
this.motionEmulatorToolStripMenuItem.Size = new System.Drawing.Size(253, 22);
this.motionEmulatorToolStripMenuItem.Text = "Finish Window";
this.motionEmulatorToolStripMenuItem.Click += new System.EventHandler(this.motionEmulatorToolStripMenuItem_Click);
//
// customerRuleToolStripMenuItem
//
this.customerRuleToolStripMenuItem.Name = "customerRuleToolStripMenuItem";
this.customerRuleToolStripMenuItem.Size = new System.Drawing.Size(255, 22);
this.customerRuleToolStripMenuItem.Size = new System.Drawing.Size(253, 22);
this.customerRuleToolStripMenuItem.Text = "Customer Rule";
this.customerRuleToolStripMenuItem.Click += new System.EventHandler(this.customerRuleToolStripMenuItem_Click);
//
// sMResetToolStripMenuItem
//
this.sMResetToolStripMenuItem.Name = "sMResetToolStripMenuItem";
this.sMResetToolStripMenuItem.Size = new System.Drawing.Size(255, 22);
this.sMResetToolStripMenuItem.Size = new System.Drawing.Size(253, 22);
this.sMResetToolStripMenuItem.Text = "S/M Reset";
this.sMResetToolStripMenuItem.Click += new System.EventHandler(this.sMResetToolStripMenuItem_Click);
//
// systemParameterMotorToolStripMenuItem
//
this.systemParameterMotorToolStripMenuItem.Name = "systemParameterMotorToolStripMenuItem";
this.systemParameterMotorToolStripMenuItem.Size = new System.Drawing.Size(255, 22);
this.systemParameterMotorToolStripMenuItem.Size = new System.Drawing.Size(253, 22);
this.systemParameterMotorToolStripMenuItem.Text = "System Parameter(Motion))";
this.systemParameterMotorToolStripMenuItem.Click += new System.EventHandler(this.systemParameterMotorToolStripMenuItem_Click);
//
// regExTestToolStripMenuItem
//
this.regExTestToolStripMenuItem.Name = "regExTestToolStripMenuItem";
this.regExTestToolStripMenuItem.Size = new System.Drawing.Size(255, 22);
this.regExTestToolStripMenuItem.Size = new System.Drawing.Size(253, 22);
this.regExTestToolStripMenuItem.Text = "RegEx Test";
this.regExTestToolStripMenuItem.Click += new System.EventHandler(this.regExTestToolStripMenuItem_Click);
//
// debugModeToolStripMenuItem
//
this.debugModeToolStripMenuItem.Name = "debugModeToolStripMenuItem";
this.debugModeToolStripMenuItem.Size = new System.Drawing.Size(255, 22);
this.debugModeToolStripMenuItem.Size = new System.Drawing.Size(253, 22);
this.debugModeToolStripMenuItem.Text = "Debug Mode";
this.debugModeToolStripMenuItem.Click += new System.EventHandler(this.debugModeToolStripMenuItem_Click);
//
// toolStripMenuItem8
//
this.toolStripMenuItem8.Name = "toolStripMenuItem8";
this.toolStripMenuItem8.Size = new System.Drawing.Size(252, 6);
this.toolStripMenuItem8.Size = new System.Drawing.Size(250, 6);
//
// dIOMonitorToolStripMenuItem
//
this.dIOMonitorToolStripMenuItem.Name = "dIOMonitorToolStripMenuItem";
this.dIOMonitorToolStripMenuItem.Size = new System.Drawing.Size(255, 22);
this.dIOMonitorToolStripMenuItem.Size = new System.Drawing.Size(253, 22);
this.dIOMonitorToolStripMenuItem.Text = "Test Barcode Process";
this.dIOMonitorToolStripMenuItem.Click += new System.EventHandler(this.dIOMonitorToolStripMenuItem_Click);
//
// refreshControklToolStripMenuItem
//
this.refreshControklToolStripMenuItem.Name = "refreshControklToolStripMenuItem";
this.refreshControklToolStripMenuItem.Size = new System.Drawing.Size(255, 22);
this.refreshControklToolStripMenuItem.Size = new System.Drawing.Size(253, 22);
this.refreshControklToolStripMenuItem.Text = "Refresh Controkl";
this.refreshControklToolStripMenuItem.Click += new System.EventHandler(this.refreshControklToolStripMenuItem_Click);
//
// 작업선택화면ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "작업선택화면ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(255, 22);
this.ToolStripMenuItem.Size = new System.Drawing.Size(253, 22);
this.ToolStripMenuItem.Text = "Data Buffer (SID Ref)";
this.ToolStripMenuItem.Click += new System.EventHandler(this.workSelectionScreenToolStripMenuItem_Click);
//
@@ -1783,19 +1783,19 @@
this.testToolStripMenuItem,
this.detectCountToolStripMenuItem});
this.historyToolStripMenuItem.Name = "historyToolStripMenuItem";
this.historyToolStripMenuItem.Size = new System.Drawing.Size(255, 22);
this.historyToolStripMenuItem.Size = new System.Drawing.Size(253, 22);
this.historyToolStripMenuItem.Text = "History";
//
// testToolStripMenuItem
//
this.testToolStripMenuItem.Name = "testToolStripMenuItem";
this.testToolStripMenuItem.Size = new System.Drawing.Size(160, 22);
this.testToolStripMenuItem.Size = new System.Drawing.Size(158, 22);
this.testToolStripMenuItem.Text = "test";
//
// detectCountToolStripMenuItem
//
this.detectCountToolStripMenuItem.Name = "detectCountToolStripMenuItem";
this.detectCountToolStripMenuItem.Size = new System.Drawing.Size(160, 22);
this.detectCountToolStripMenuItem.Size = new System.Drawing.Size(158, 22);
this.detectCountToolStripMenuItem.Text = "Detect Count";
//
// menusToolStripMenuItem
@@ -1804,20 +1804,20 @@
this.sampleToolStripMenuItem,
this.clearToolStripMenuItem1});
this.menusToolStripMenuItem.Name = "menusToolStripMenuItem";
this.menusToolStripMenuItem.Size = new System.Drawing.Size(255, 22);
this.menusToolStripMenuItem.Size = new System.Drawing.Size(253, 22);
this.menusToolStripMenuItem.Text = "Menus";
//
// sampleToolStripMenuItem
//
this.sampleToolStripMenuItem.Name = "sampleToolStripMenuItem";
this.sampleToolStripMenuItem.Size = new System.Drawing.Size(111, 22);
this.sampleToolStripMenuItem.Size = new System.Drawing.Size(109, 22);
this.sampleToolStripMenuItem.Text = "Add";
this.sampleToolStripMenuItem.Click += new System.EventHandler(this.sampleToolStripMenuItem_Click);
//
// clearToolStripMenuItem1
//
this.clearToolStripMenuItem1.Name = "clearToolStripMenuItem1";
this.clearToolStripMenuItem1.Size = new System.Drawing.Size(111, 22);
this.clearToolStripMenuItem1.Size = new System.Drawing.Size(109, 22);
this.clearToolStripMenuItem1.Text = "Clear";
this.clearToolStripMenuItem1.Click += new System.EventHandler(this.clearToolStripMenuItem1_Click);
//
@@ -1828,27 +1828,27 @@
this.jObEndToolStripMenuItem,
this.multiSIDSelectToolStripMenuItem});
this.screenToolStripMenuItem.Name = "screenToolStripMenuItem";
this.screenToolStripMenuItem.Size = new System.Drawing.Size(255, 22);
this.screenToolStripMenuItem.Size = new System.Drawing.Size(253, 22);
this.screenToolStripMenuItem.Text = "Screen";
//
// jOBStartToolStripMenuItem
//
this.jOBStartToolStripMenuItem.Name = "jOBStartToolStripMenuItem";
this.jOBStartToolStripMenuItem.Size = new System.Drawing.Size(177, 22);
this.jOBStartToolStripMenuItem.Size = new System.Drawing.Size(175, 22);
this.jOBStartToolStripMenuItem.Text = "JOB Start";
this.jOBStartToolStripMenuItem.Click += new System.EventHandler(this.jOBStartToolStripMenuItem_Click);
//
// jObEndToolStripMenuItem
//
this.jObEndToolStripMenuItem.Name = "jObEndToolStripMenuItem";
this.jObEndToolStripMenuItem.Size = new System.Drawing.Size(177, 22);
this.jObEndToolStripMenuItem.Size = new System.Drawing.Size(175, 22);
this.jObEndToolStripMenuItem.Text = "JOb End";
this.jObEndToolStripMenuItem.Click += new System.EventHandler(this.jObEndToolStripMenuItem_Click);
//
// multiSIDSelectToolStripMenuItem
//
this.multiSIDSelectToolStripMenuItem.Name = "multiSIDSelectToolStripMenuItem";
this.multiSIDSelectToolStripMenuItem.Size = new System.Drawing.Size(177, 22);
this.multiSIDSelectToolStripMenuItem.Size = new System.Drawing.Size(175, 22);
this.multiSIDSelectToolStripMenuItem.Text = "Multi SID Select";
this.multiSIDSelectToolStripMenuItem.Click += new System.EventHandler(this.multiSIDSelectToolStripMenuItem_Click);
//
@@ -1861,105 +1861,105 @@
this.axis3ToolStripMenuItem,
this.axis4ToolStripMenuItem});
this.motionParameterToolStripMenuItem.Name = "motionParameterToolStripMenuItem";
this.motionParameterToolStripMenuItem.Size = new System.Drawing.Size(255, 22);
this.motionParameterToolStripMenuItem.Size = new System.Drawing.Size(253, 22);
this.motionParameterToolStripMenuItem.Text = "Motion Parameter";
//
// axis0ToolStripMenuItem
//
this.axis0ToolStripMenuItem.Name = "axis0ToolStripMenuItem";
this.axis0ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.axis0ToolStripMenuItem.Size = new System.Drawing.Size(114, 22);
this.axis0ToolStripMenuItem.Text = "Axis 0";
this.axis0ToolStripMenuItem.Click += new System.EventHandler(this.axis0ToolStripMenuItem_Click);
//
// axis1ToolStripMenuItem
//
this.axis1ToolStripMenuItem.Name = "axis1ToolStripMenuItem";
this.axis1ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.axis1ToolStripMenuItem.Size = new System.Drawing.Size(114, 22);
this.axis1ToolStripMenuItem.Text = "Axis 1";
this.axis1ToolStripMenuItem.Click += new System.EventHandler(this.axis1ToolStripMenuItem_Click);
//
// axis2ToolStripMenuItem
//
this.axis2ToolStripMenuItem.Name = "axis2ToolStripMenuItem";
this.axis2ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.axis2ToolStripMenuItem.Size = new System.Drawing.Size(114, 22);
this.axis2ToolStripMenuItem.Text = "Axis 2";
this.axis2ToolStripMenuItem.Click += new System.EventHandler(this.axis2ToolStripMenuItem_Click);
//
// axis3ToolStripMenuItem
//
this.axis3ToolStripMenuItem.Name = "axis3ToolStripMenuItem";
this.axis3ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.axis3ToolStripMenuItem.Size = new System.Drawing.Size(114, 22);
this.axis3ToolStripMenuItem.Text = "Axis 3";
this.axis3ToolStripMenuItem.Click += new System.EventHandler(this.axis3ToolStripMenuItem_Click);
//
// axis4ToolStripMenuItem
//
this.axis4ToolStripMenuItem.Name = "axis4ToolStripMenuItem";
this.axis4ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.axis4ToolStripMenuItem.Size = new System.Drawing.Size(114, 22);
this.axis4ToolStripMenuItem.Text = "Axis 4";
this.axis4ToolStripMenuItem.Click += new System.EventHandler(this.axis4ToolStripMenuItem_Click);
//
// processListToolStripMenuItem
//
this.processListToolStripMenuItem.Name = "processListToolStripMenuItem";
this.processListToolStripMenuItem.Size = new System.Drawing.Size(255, 22);
this.processListToolStripMenuItem.Size = new System.Drawing.Size(253, 22);
this.processListToolStripMenuItem.Text = "Process List";
this.processListToolStripMenuItem.Click += new System.EventHandler(this.processListToolStripMenuItem_Click);
//
// toolStripMenuItem7
//
this.toolStripMenuItem7.Name = "toolStripMenuItem7";
this.toolStripMenuItem7.Size = new System.Drawing.Size(252, 6);
this.toolStripMenuItem7.Size = new System.Drawing.Size(250, 6);
//
// visionProcess0ToolStripMenuItem
//
this.visionProcess0ToolStripMenuItem.Name = "visionProcess0ToolStripMenuItem";
this.visionProcess0ToolStripMenuItem.Size = new System.Drawing.Size(255, 22);
this.visionProcess0ToolStripMenuItem.Size = new System.Drawing.Size(253, 22);
this.visionProcess0ToolStripMenuItem.Text = "Vision Status(0)";
this.visionProcess0ToolStripMenuItem.Click += new System.EventHandler(this.visionProcess0ToolStripMenuItem_Click);
//
// visionProcess1ToolStripMenuItem
//
this.visionProcess1ToolStripMenuItem.Name = "visionProcess1ToolStripMenuItem";
this.visionProcess1ToolStripMenuItem.Size = new System.Drawing.Size(255, 22);
this.visionProcess1ToolStripMenuItem.Size = new System.Drawing.Size(253, 22);
this.visionProcess1ToolStripMenuItem.Text = "Vision Status(1)";
this.visionProcess1ToolStripMenuItem.Click += new System.EventHandler(this.visionProcess1ToolStripMenuItem_Click);
//
// speedLimitToolStripMenuItem
//
this.speedLimitToolStripMenuItem.Name = "speedLimitToolStripMenuItem";
this.speedLimitToolStripMenuItem.Size = new System.Drawing.Size(255, 22);
this.speedLimitToolStripMenuItem.Size = new System.Drawing.Size(253, 22);
this.speedLimitToolStripMenuItem.Text = "Speed Limit";
this.speedLimitToolStripMenuItem.Click += new System.EventHandler(this.speedLimitToolStripMenuItem_Click);
//
// toolStripMenuItem10
//
this.toolStripMenuItem10.Name = "toolStripMenuItem10";
this.toolStripMenuItem10.Size = new System.Drawing.Size(252, 6);
this.toolStripMenuItem10.Size = new System.Drawing.Size(250, 6);
//
// bcdRegProcessClearToolStripMenuItem
//
this.bcdRegProcessClearToolStripMenuItem.Name = "bcdRegProcessClearToolStripMenuItem";
this.bcdRegProcessClearToolStripMenuItem.Size = new System.Drawing.Size(255, 22);
this.bcdRegProcessClearToolStripMenuItem.Size = new System.Drawing.Size(253, 22);
this.bcdRegProcessClearToolStripMenuItem.Text = "Bcd RegProcess Clear";
this.bcdRegProcessClearToolStripMenuItem.Click += new System.EventHandler(this.bcdRegProcessClearToolStripMenuItem_Click);
//
// displayVARToolStripMenuItem
//
this.displayVARToolStripMenuItem.Name = "displayVARToolStripMenuItem";
this.displayVARToolStripMenuItem.Size = new System.Drawing.Size(255, 22);
this.displayVARToolStripMenuItem.Size = new System.Drawing.Size(253, 22);
this.displayVARToolStripMenuItem.Text = "Display VAR";
this.displayVARToolStripMenuItem.Click += new System.EventHandler(this.displayVARToolStripMenuItem_Click);
//
// toolStripMenuItem16
//
this.toolStripMenuItem16.Name = "toolStripMenuItem16";
this.toolStripMenuItem16.Size = new System.Drawing.Size(252, 6);
this.toolStripMenuItem16.Size = new System.Drawing.Size(250, 6);
//
// getImageToolStripMenuItem
//
this.getImageToolStripMenuItem.Name = "getImageToolStripMenuItem";
this.getImageToolStripMenuItem.Size = new System.Drawing.Size(255, 22);
this.getImageToolStripMenuItem.Size = new System.Drawing.Size(253, 22);
this.getImageToolStripMenuItem.Text = "Get Image";
//
// idxDataGridViewTextBoxColumn
@@ -2274,7 +2274,7 @@
// toolStripLabel2
//
this.toolStripLabel2.Name = "toolStripLabel2";
this.toolStripLabel2.Size = new System.Drawing.Size(10, 44);
this.toolStripLabel2.Size = new System.Drawing.Size(11, 44);
this.toolStripLabel2.Text = " ";
this.toolStripLabel2.Click += new System.EventHandler(this.pictureBox1_Click);
//
@@ -2297,7 +2297,7 @@
//
this.ToolStripMenuItem.Image = global::Project.Properties.Resources.icons8_object_40;
this.ToolStripMenuItem.Name = "모델선택ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(174, 46);
this.ToolStripMenuItem.Size = new System.Drawing.Size(175, 46);
this.ToolStripMenuItem.Text = "Work Model";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ModelSelectionToolStripMenuItem_Click);
//
@@ -2305,20 +2305,20 @@
//
this.btModelMot.Image = global::Project.Properties.Resources.Motor;
this.btModelMot.Name = "btModelMot";
this.btModelMot.Size = new System.Drawing.Size(174, 46);
this.btModelMot.Size = new System.Drawing.Size(175, 46);
this.btModelMot.Text = "Motion Model";
this.btModelMot.Click += new System.EventHandler(this.toolStripMenuItem23_Click);
//
// toolStripMenuItem12
//
this.toolStripMenuItem12.Name = "toolStripMenuItem12";
this.toolStripMenuItem12.Size = new System.Drawing.Size(171, 6);
this.toolStripMenuItem12.Size = new System.Drawing.Size(172, 6);
//
// 바코드룰ToolStripMenuItem
//
this.ToolStripMenuItem.Image = global::Project.Properties.Resources.icons8_add_40;
this.ToolStripMenuItem.Name = "바코드룰ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(174, 46);
this.ToolStripMenuItem.Size = new System.Drawing.Size(175, 46);
this.ToolStripMenuItem.Text = "Barcode Rule";
this.ToolStripMenuItem.Click += new System.EventHandler(this.BarcodeRuleToolStripMenuItem_Click);
//
@@ -2329,14 +2329,14 @@
this.ToolStripMenuItem});
this.sID정보ToolStripMenuItem.Image = global::Project.Properties.Resources.icons8_save_to_grid_40;
this.sID정보ToolStripMenuItem.Name = "sID정보ToolStripMenuItem";
this.sID정보ToolStripMenuItem.Size = new System.Drawing.Size(174, 46);
this.sID정보ToolStripMenuItem.Size = new System.Drawing.Size(175, 46);
this.sID정보ToolStripMenuItem.Text = "SID Info";
//
// 프로그램열기ToolStripMenuItem
//
this.ToolStripMenuItem.Image = global::Project.Properties.Resources.Arrow_Right;
this.ToolStripMenuItem.Name = "프로그램열기ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(222, 46);
this.ToolStripMenuItem.Size = new System.Drawing.Size(226, 46);
this.ToolStripMenuItem.Text = "Open Program";
this.ToolStripMenuItem.Click += new System.EventHandler(this.OpenProgramToolStripMenuItem_Click);
//
@@ -2344,7 +2344,7 @@
//
this.ToolStripMenuItem.Image = global::Project.Properties.Resources.Arrow_Right;
this.ToolStripMenuItem.Name = "인바운드데이터업데이트ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(222, 46);
this.ToolStripMenuItem.Size = new System.Drawing.Size(226, 46);
this.ToolStripMenuItem.Text = "Update SID Information";
this.ToolStripMenuItem.Click += new System.EventHandler(this.InboundDataUpdateToolStripMenuItem_Click);
//
@@ -2454,7 +2454,7 @@
//
this.toolStripMenuItem11.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem11.Image")));
this.toolStripMenuItem11.Name = "toolStripMenuItem11";
this.toolStripMenuItem11.Size = new System.Drawing.Size(156, 46);
this.toolStripMenuItem11.Size = new System.Drawing.Size(159, 46);
this.toolStripMenuItem11.Text = "Program";
this.toolStripMenuItem11.Click += new System.EventHandler(this.toolStripMenuItem11_Click);
//
@@ -2462,7 +2462,7 @@
//
this.toolStripMenuItem13.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem13.Image")));
this.toolStripMenuItem13.Name = "toolStripMenuItem13";
this.toolStripMenuItem13.Size = new System.Drawing.Size(156, 46);
this.toolStripMenuItem13.Size = new System.Drawing.Size(159, 46);
this.toolStripMenuItem13.Text = "Log";
this.toolStripMenuItem13.Click += new System.EventHandler(this.toolStripMenuItem13_Click);
//
@@ -2470,7 +2470,7 @@
//
this.toolStripMenuItem14.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem14.Image")));
this.toolStripMenuItem14.Name = "toolStripMenuItem14";
this.toolStripMenuItem14.Size = new System.Drawing.Size(156, 46);
this.toolStripMenuItem14.Size = new System.Drawing.Size(159, 46);
this.toolStripMenuItem14.Text = "Capture";
this.toolStripMenuItem14.Click += new System.EventHandler(this.toolStripMenuItem14_Click);
//
@@ -2478,7 +2478,7 @@
//
this.toolStripMenuItem15.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem15.Image")));
this.toolStripMenuItem15.Name = "toolStripMenuItem15";
this.toolStripMenuItem15.Size = new System.Drawing.Size(156, 46);
this.toolStripMenuItem15.Size = new System.Drawing.Size(159, 46);
this.toolStripMenuItem15.Text = "Saved Data";
this.toolStripMenuItem15.Click += new System.EventHandler(this.toolStripMenuItem15_Click);
//
@@ -2526,7 +2526,7 @@
//
this.btManage.Image = global::Project.Properties.Resources.icons8_control_panel_40;
this.btManage.Name = "btManage";
this.btManage.Size = new System.Drawing.Size(153, 46);
this.btManage.Size = new System.Drawing.Size(154, 46);
this.btManage.Text = "Manage";
this.btManage.Click += new System.EventHandler(this.managementToolStripMenuItem_Click_1);
//
@@ -2534,7 +2534,7 @@
//
this.ToolStripMenuItem.Image = global::Project.Properties.Resources.icons8_object_40;
this.ToolStripMenuItem.Name = "빠른실행ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(153, 46);
this.ToolStripMenuItem.Size = new System.Drawing.Size(154, 46);
this.ToolStripMenuItem.Text = "Quick Run";
this.ToolStripMenuItem.Click += new System.EventHandler(this.quickExecutionToolStripMenuItem_Click);
//
@@ -2562,7 +2562,7 @@
this.btManualPrint.Image = ((System.Drawing.Image)(resources.GetObject("btManualPrint.Image")));
this.btManualPrint.ImageTransparentColor = System.Drawing.Color.Magenta;
this.btManualPrint.Name = "btManualPrint";
this.btManualPrint.Size = new System.Drawing.Size(119, 44);
this.btManualPrint.Size = new System.Drawing.Size(120, 44);
this.btManualPrint.Text = "Manual Print";
this.btManualPrint.Click += new System.EventHandler(this.toolStripButton1_Click);
//
@@ -2576,7 +2576,7 @@
this.btJobCancle.Image = ((System.Drawing.Image)(resources.GetObject("btJobCancle.Image")));
this.btJobCancle.ImageTransparentColor = System.Drawing.Color.Magenta;
this.btJobCancle.Name = "btJobCancle";
this.btJobCancle.Size = new System.Drawing.Size(108, 44);
this.btJobCancle.Size = new System.Drawing.Size(109, 44);
this.btJobCancle.Text = "Cancel Job";
this.btJobCancle.ToolTipText = "Cancel Current Job";
this.btJobCancle.Click += new System.EventHandler(this.toolStripButton13_Click);
@@ -2600,7 +2600,7 @@
this.btCheckInfo.Image = global::Project.Properties.Resources.Barcode;
this.btCheckInfo.ImageTransparentColor = System.Drawing.Color.Magenta;
this.btCheckInfo.Name = "btCheckInfo";
this.btCheckInfo.Size = new System.Drawing.Size(130, 44);
this.btCheckInfo.Size = new System.Drawing.Size(131, 44);
this.btCheckInfo.Text = "Barcode Check";
this.btCheckInfo.Click += new System.EventHandler(this.toolStripButton15_Click);
//
@@ -2627,27 +2627,27 @@
this.toolStripMenuItem30});
this.LToolStripMenuItem.Image = global::Project.Properties.Resources.Arrow_Left;
this.LToolStripMenuItem.Name = "바코드LToolStripMenuItem";
this.LToolStripMenuItem.Size = new System.Drawing.Size(196, 46);
this.LToolStripMenuItem.Size = new System.Drawing.Size(197, 46);
this.LToolStripMenuItem.Text = "Camera (QRCode)";
this.LToolStripMenuItem.Click += new System.EventHandler(this.button1_Click_1);
//
// 연결ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "연결ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(155, 46);
this.ToolStripMenuItem.Size = new System.Drawing.Size(156, 46);
this.ToolStripMenuItem.Text = "Connect";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ConnectToolStripMenuItem_Click);
//
// toolStripMenuItem26
//
this.toolStripMenuItem26.Name = "toolStripMenuItem26";
this.toolStripMenuItem26.Size = new System.Drawing.Size(152, 6);
this.toolStripMenuItem26.Size = new System.Drawing.Size(153, 6);
//
// toolStripMenuItem21
//
this.toolStripMenuItem21.Image = global::Project.Properties.Resources.icons8_green_circle_40;
this.toolStripMenuItem21.Name = "toolStripMenuItem21";
this.toolStripMenuItem21.Size = new System.Drawing.Size(155, 46);
this.toolStripMenuItem21.Size = new System.Drawing.Size(156, 46);
this.toolStripMenuItem21.Text = "Trigger On";
this.toolStripMenuItem21.Click += new System.EventHandler(this.toolStripMenuItem21_Click);
//
@@ -2655,20 +2655,20 @@
//
this.toolStripMenuItem24.Image = global::Project.Properties.Resources.icons8_black_circle_40;
this.toolStripMenuItem24.Name = "toolStripMenuItem24";
this.toolStripMenuItem24.Size = new System.Drawing.Size(155, 46);
this.toolStripMenuItem24.Size = new System.Drawing.Size(156, 46);
this.toolStripMenuItem24.Text = "Trigger Off";
this.toolStripMenuItem24.Click += new System.EventHandler(this.toolStripMenuItem24_Click);
//
// toolStripMenuItem6
//
this.toolStripMenuItem6.Name = "toolStripMenuItem6";
this.toolStripMenuItem6.Size = new System.Drawing.Size(152, 6);
this.toolStripMenuItem6.Size = new System.Drawing.Size(153, 6);
//
// toolStripMenuItem28
//
this.toolStripMenuItem28.Image = global::Project.Properties.Resources.icons8_green_circle_40;
this.toolStripMenuItem28.Name = "toolStripMenuItem28";
this.toolStripMenuItem28.Size = new System.Drawing.Size(155, 46);
this.toolStripMenuItem28.Size = new System.Drawing.Size(156, 46);
this.toolStripMenuItem28.Text = "Trigger On";
this.toolStripMenuItem28.Click += new System.EventHandler(this.toolStripMenuItem28_Click);
//
@@ -2676,7 +2676,7 @@
//
this.toolStripMenuItem30.Image = global::Project.Properties.Resources.icons8_black_circle_40;
this.toolStripMenuItem30.Name = "toolStripMenuItem30";
this.toolStripMenuItem30.Size = new System.Drawing.Size(155, 46);
this.toolStripMenuItem30.Size = new System.Drawing.Size(156, 46);
this.toolStripMenuItem30.Text = "Trigger Off";
this.toolStripMenuItem30.Click += new System.EventHandler(this.toolStripMenuItem30_Click);
//
@@ -2697,27 +2697,27 @@
this.loadMemoryToolStripMenuItem});
this.ToolStripMenuItem.Image = global::Project.Properties.Resources.Barcode;
this.ToolStripMenuItem.Name = "바코드키엔스ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(196, 46);
this.ToolStripMenuItem.Size = new System.Drawing.Size(197, 46);
this.ToolStripMenuItem.Text = "Barcode (Keyence)";
//
// toolStripMenuItem17
//
this.toolStripMenuItem17.Image = global::Project.Properties.Resources.icons8_camera_40;
this.toolStripMenuItem17.Name = "toolStripMenuItem17";
this.toolStripMenuItem17.Size = new System.Drawing.Size(172, 46);
this.toolStripMenuItem17.Size = new System.Drawing.Size(173, 46);
this.toolStripMenuItem17.Text = "Get Image";
this.toolStripMenuItem17.Click += new System.EventHandler(this.toolStripMenuItem17_Click);
//
// toolStripMenuItem18
//
this.toolStripMenuItem18.Name = "toolStripMenuItem18";
this.toolStripMenuItem18.Size = new System.Drawing.Size(169, 6);
this.toolStripMenuItem18.Size = new System.Drawing.Size(170, 6);
//
// triggerOnToolStripMenuItem1
//
this.triggerOnToolStripMenuItem1.Image = global::Project.Properties.Resources.icons8_green_circle_40;
this.triggerOnToolStripMenuItem1.Name = "triggerOnToolStripMenuItem1";
this.triggerOnToolStripMenuItem1.Size = new System.Drawing.Size(172, 46);
this.triggerOnToolStripMenuItem1.Size = new System.Drawing.Size(173, 46);
this.triggerOnToolStripMenuItem1.Text = "Trigger On";
this.triggerOnToolStripMenuItem1.Click += new System.EventHandler(this.triggerOnToolStripMenuItem1_Click);
//
@@ -2725,20 +2725,20 @@
//
this.triggerOffToolStripMenuItem1.Image = global::Project.Properties.Resources.icons8_black_circle_40;
this.triggerOffToolStripMenuItem1.Name = "triggerOffToolStripMenuItem1";
this.triggerOffToolStripMenuItem1.Size = new System.Drawing.Size(172, 46);
this.triggerOffToolStripMenuItem1.Size = new System.Drawing.Size(173, 46);
this.triggerOffToolStripMenuItem1.Text = "Trigger Off";
this.triggerOffToolStripMenuItem1.Click += new System.EventHandler(this.triggerOffToolStripMenuItem1_Click);
//
// toolStripMenuItem19
//
this.toolStripMenuItem19.Name = "toolStripMenuItem19";
this.toolStripMenuItem19.Size = new System.Drawing.Size(169, 6);
this.toolStripMenuItem19.Size = new System.Drawing.Size(170, 6);
//
// connectToolStripMenuItem
//
this.connectToolStripMenuItem.Image = global::Project.Properties.Resources.Socket;
this.connectToolStripMenuItem.Name = "connectToolStripMenuItem";
this.connectToolStripMenuItem.Size = new System.Drawing.Size(172, 46);
this.connectToolStripMenuItem.Size = new System.Drawing.Size(173, 46);
this.connectToolStripMenuItem.Text = "Connect";
this.connectToolStripMenuItem.Click += new System.EventHandler(this.connectToolStripMenuItem_Click);
//
@@ -2746,20 +2746,20 @@
//
this.disConnectToolStripMenuItem.Image = global::Project.Properties.Resources.icons8_unavailable_40;
this.disConnectToolStripMenuItem.Name = "disConnectToolStripMenuItem";
this.disConnectToolStripMenuItem.Size = new System.Drawing.Size(172, 46);
this.disConnectToolStripMenuItem.Size = new System.Drawing.Size(173, 46);
this.disConnectToolStripMenuItem.Text = "DisConnect";
this.disConnectToolStripMenuItem.Click += new System.EventHandler(this.disConnectToolStripMenuItem_Click);
//
// toolStripMenuItem20
//
this.toolStripMenuItem20.Name = "toolStripMenuItem20";
this.toolStripMenuItem20.Size = new System.Drawing.Size(169, 6);
this.toolStripMenuItem20.Size = new System.Drawing.Size(170, 6);
//
// resetToolStripMenuItem
//
this.resetToolStripMenuItem.Image = global::Project.Properties.Resources.icons8_delete_40;
this.resetToolStripMenuItem.Name = "resetToolStripMenuItem";
this.resetToolStripMenuItem.Size = new System.Drawing.Size(172, 46);
this.resetToolStripMenuItem.Size = new System.Drawing.Size(173, 46);
this.resetToolStripMenuItem.Text = "Reset";
this.resetToolStripMenuItem.Click += new System.EventHandler(this.resetToolStripMenuItem_Click);
//
@@ -2767,14 +2767,14 @@
//
this.webManagerToolStripMenuItem.Image = global::Project.Properties.Resources.icons8_what_40;
this.webManagerToolStripMenuItem.Name = "webManagerToolStripMenuItem";
this.webManagerToolStripMenuItem.Size = new System.Drawing.Size(172, 46);
this.webManagerToolStripMenuItem.Size = new System.Drawing.Size(173, 46);
this.webManagerToolStripMenuItem.Text = "Web Manager";
this.webManagerToolStripMenuItem.Click += new System.EventHandler(this.webManagerToolStripMenuItem_Click);
//
// toolStripMenuItem23
//
this.toolStripMenuItem23.Name = "toolStripMenuItem23";
this.toolStripMenuItem23.Size = new System.Drawing.Size(169, 6);
this.toolStripMenuItem23.Size = new System.Drawing.Size(170, 6);
//
// loadMemoryToolStripMenuItem
//
@@ -2788,62 +2788,62 @@
this.toolStripMenuItem35,
this.toolStripMenuItem36});
this.loadMemoryToolStripMenuItem.Name = "loadMemoryToolStripMenuItem";
this.loadMemoryToolStripMenuItem.Size = new System.Drawing.Size(172, 46);
this.loadMemoryToolStripMenuItem.Size = new System.Drawing.Size(173, 46);
this.loadMemoryToolStripMenuItem.Text = "Load Memory";
//
// toolStripMenuItem27
//
this.toolStripMenuItem27.Name = "toolStripMenuItem27";
this.toolStripMenuItem27.Size = new System.Drawing.Size(80, 22);
this.toolStripMenuItem27.Size = new System.Drawing.Size(81, 22);
this.toolStripMenuItem27.Text = "1";
this.toolStripMenuItem27.Click += new System.EventHandler(this.toolStripMenuItem27_Click);
//
// toolStripMenuItem29
//
this.toolStripMenuItem29.Name = "toolStripMenuItem29";
this.toolStripMenuItem29.Size = new System.Drawing.Size(80, 22);
this.toolStripMenuItem29.Size = new System.Drawing.Size(81, 22);
this.toolStripMenuItem29.Text = "2";
this.toolStripMenuItem29.Click += new System.EventHandler(this.toolStripMenuItem27_Click);
//
// toolStripMenuItem31
//
this.toolStripMenuItem31.Name = "toolStripMenuItem31";
this.toolStripMenuItem31.Size = new System.Drawing.Size(80, 22);
this.toolStripMenuItem31.Size = new System.Drawing.Size(81, 22);
this.toolStripMenuItem31.Text = "3";
this.toolStripMenuItem31.Click += new System.EventHandler(this.toolStripMenuItem27_Click);
//
// toolStripMenuItem32
//
this.toolStripMenuItem32.Name = "toolStripMenuItem32";
this.toolStripMenuItem32.Size = new System.Drawing.Size(80, 22);
this.toolStripMenuItem32.Size = new System.Drawing.Size(81, 22);
this.toolStripMenuItem32.Text = "4";
this.toolStripMenuItem32.Click += new System.EventHandler(this.toolStripMenuItem27_Click);
//
// toolStripMenuItem33
//
this.toolStripMenuItem33.Name = "toolStripMenuItem33";
this.toolStripMenuItem33.Size = new System.Drawing.Size(80, 22);
this.toolStripMenuItem33.Size = new System.Drawing.Size(81, 22);
this.toolStripMenuItem33.Text = "5";
this.toolStripMenuItem33.Click += new System.EventHandler(this.toolStripMenuItem27_Click);
//
// toolStripMenuItem34
//
this.toolStripMenuItem34.Name = "toolStripMenuItem34";
this.toolStripMenuItem34.Size = new System.Drawing.Size(80, 22);
this.toolStripMenuItem34.Size = new System.Drawing.Size(81, 22);
this.toolStripMenuItem34.Text = "6";
this.toolStripMenuItem34.Click += new System.EventHandler(this.toolStripMenuItem27_Click);
//
// toolStripMenuItem35
//
this.toolStripMenuItem35.Name = "toolStripMenuItem35";
this.toolStripMenuItem35.Size = new System.Drawing.Size(80, 22);
this.toolStripMenuItem35.Size = new System.Drawing.Size(81, 22);
this.toolStripMenuItem35.Text = "7";
this.toolStripMenuItem35.Click += new System.EventHandler(this.toolStripMenuItem27_Click);
//
// toolStripMenuItem36
//
this.toolStripMenuItem36.Name = "toolStripMenuItem36";
this.toolStripMenuItem36.Size = new System.Drawing.Size(80, 22);
this.toolStripMenuItem36.Size = new System.Drawing.Size(81, 22);
this.toolStripMenuItem36.Text = "8";
this.toolStripMenuItem36.Click += new System.EventHandler(this.toolStripMenuItem27_Click);
//

View File

@@ -211,384 +211,380 @@ If pressed while motion is moving, motion will also stop.
<data name="toolStripButton7.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAQWSURBVFhH7dZvTBNnHAdw3kxfLVmyoV75o0UEghpfmSUG
FRNFlLa0dMBINn2hsoxMjS8GoZIc0IKKW5BtRdnMTBZBpYdSA1cRIwa12QuTTVRiJ0URFBORK63Bv+Hn
8zTPYe96rUc55pt+k2/o0evz+6T3rzHRRBONQtF12L7UsLYjGpbp07LMuPYc80LLnnZrOplWrcNWVHyj
6ROyq2TSaZhHXiob3cV2VQ7LtCMUhK/NpXMwG8nHghJf9/g6ddCdQTaVSc6FtlVo+AgG5DraoKCrHb6+
aPf/xdtCIAPpLPNWw7aWkI9PZ4nVV5h4+AksMN0bJv+afQyONkprPz2MBxd222FHDws7exzTxdsYK0Zq
aXoKHfZCskxM6vGnn6p/8YxgIFXaB/HVgzR5a3bRdNrsPC4QJm6hBHIze4rTd5/9HK+zxOr9Sd3oAx5I
lfe/XlzPfeYfEmnwBYEH4cMo/ubE3XHZIXm40QV1KPGoN52iH70WAFHjKu91k1GRRdvJNOAhBejbkUKJ
m4/OSTEQdUTdOHEZ48RAquwWLDIPriPjZh5yK/ng4eWL9xPhYG2r0w+TBKKqTK5RMm7mwecQHoKvVimQ
uHi/QFxORzuk/D4WFogbZxmqIiNnliyWmcSDZJ+DrPAcXH3ytgAXCkiZIrxg8BOCH4ZvJTxmd3eHAIcr
vtVk2S9A0tEJeUBUFT1whYyVH//jiwzMRa2yNcO1Y7+Bt9YC93+ug1MnT8DervOSt5gVfw4F4cIBqbI+
SKgdyiKj5QU/W3eda4GW443w6NABeF5jDqoHYXt/rQdL8wnQd9r8uIwzwgsjsCGBqHHl/z0lo8NnqqFh
vs9iyZ+oNV/ySaBC9WHdAWj+4xhsaByUxOGGA+LGmwdrCUM63PZv9F7TjzekAHL7gK6Byj1NEQGp7Xfe
LKQHFhBOcDhjbiVn1ANnzOv3lBT3+mj6uRRCqv+Um6DF8B1cWbEKbGu2RgZEjaPd1wgnOO+BpHl6L/dt
Ue9oxf4RKdRodRV0/fA9sJnrwJmWNt3ZAKnSW+hQ388mJGGCgAF9ZjS6+vftG6bRL5V/TWVgLyqA3pUr
BTBlgH3wRYVrjJCECQfkO5C53imFCuxsgbiJVQ9KCet95ADdmRlzClRV3PUmVLvNhCSMUkB6zZapmQLD
wvgoBbyavtyltnob1PXciw8BVftlwPgoBXSmpNzG6yU1TSYGQgOBqtKbE7JhfJQG8llqnUzAUPzLOiIY
n7kC8kmueRxLXkYWj8GwiTNqh6VgfGUAX15PS6shSyofyM+f58nTF4eChgL2xMa+cqam/nV12bIkstTc
JhRUDPzfYeJg6PhXum1jRp07EPjRYeJMZWfPHzfklgysz7AjmPXv5OR48lY00UTzcRMT8w7v8y50hSqQ
nAAAAABJRU5ErkJggg==
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAQWSURBVFhH7dZRTBt1HAfwvbg9mZgo06sFV2SU4JY9LSYL
bpgoovRKSwUkUfewyTIyNXuwhI7kgJbOoQZRy4YuLjGDTe7YWkOvK5ixsK3ZwxK1m8Q6yoawYTLkSrsw
naY/879w2P6uLVco7qXf5Jem17v/75P7/+9/Xbcum2yyyUz0g+zzOp79VMdzfprn5uiz3H2aPx3Uubl+
2sPW1V/teQRfE5tiBtbjYxmJfsipquA5J81zkLrYgN7DvYSvl6LuuHOZ+jBYgo+vKhXnBrbRPDdNAJWe
AajxOuGNIZf4Sb5jZDHP/aPj+xvwOJsckdq8j36HjZYbU/i3FcfoGaBo1+kp0rh22AV7RnjYO+JZKvKd
YDGSZpiozs3VSuNoj999VPNZaJoAKbMf1G0TTHynFUbnZl0SLhaGqzYB8hX+lGAYPvM4GWeTI/yxpjsC
EpBqGnvwTKfwGO6XVsgDIU0rvnO49pz3JJxuHc8eyTsaLqaY2w/igGY/PN1yYxj3TCu0m+siTWqGUt89
qaq9ThmQrF1N9/x5gsNAqvEaPGWd2In7Ks7iVrLs9EpFzsPAF/p9Iiwh0OwHlSUwg/sqDllD4h30OmWY
REXOi8VVDDqh8MvZlEBxqm2Trbi3opTx3AJppHgN8vFrcPvJ63G4ZEDKssIHhrwhpGZkK5Ew7w4PyoB4
qylznYP8o/PKgGSqmfELuP+yEV9fiw0reQ5a2V64dOwLCNttcPOTDjh18gS87/0u4Raz5etJGS4VkGr0
Q659sgwbUoa8W9852wd9x7vh9pHDcK/dKquQ3Qajn3eCrfcEGNysiCv5Nv7BUAQka7Hp17vYkDDRrq4N
EZutet5u/T6SAJWsfus4DL1fHYMXuydkMCVAUmrrhB174iLsftMQtnxwFTdPp24x7dDyXo8MpwRI7f75
7yeZ8Y3YtRTBVNkimAwgmKrGQg31oxGGuYcByeqHJgv0GffBhS3bgN3xmgynCEimmglewq6l/AdcrCpD
WHirbnSm+dA0BpGaaWsF74H9wJfuBF9R0VKtBkiZr4HaerMc28TIgDH1h8kUGDt4cIphmOiPlkZw1dXA
6NatcbDMAP3wRHNgFtvEpAJKNV66y4dBuFYLJJXXesuMfYqAwdKSNQWqmn8J57YFrdgmJlNAZserUYxb
DpgSJiVTwIvFzwU0jnCXplO4vxxQdUgBTEqmgL7CwutkvPyehbxYaCxQZf5pXjFMSqaBUp51LOQSKPln
vSKYlLUCSilov5ODj6WVkNH4smCipzAqTeCfl4uK2vHYGQtUV68PVRnqk0GTAUdycv7yabXfXNy8OR+P
uSZJBsXA/x2GQ6Bzr+vfnjXpg7HAhw7DiZaXb5gzVjaM7ypx+bRax5WCAjU+J5tssnlI+Rfv8y50Kpg4
AwAAAABJRU5ErkJggg==
</value>
</data>
<data name="toolStripButton23.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAI0SURBVFhH7ZjNTttAFIXzGoU+BT8WQpQIG1RF/AlVlA2q
8l4IEFtQaXkCWJEAQoJ1S1i0qwahQjJZAMmQO9yJbOc4146wVz7St4h9z5yjcSZKUsiVK9eQUkXn46M7
sdecce6anqNTot7wnF3lTo1ybDxRuf/e+F+wYCpQVqKSZufAQmlCO8nxslJ+rBjX+cfxsuACGcDxspA5
CzheFjL7UctzurW5Bu9BSjP4egiOl4XMFirXPq3ozk1Nt8rrcMaPma9U9NPOFrzvh+NlITOhloqmnK7f
Gzq/bnTr2xc4S9hydl4qyfGykNmwMKWfv+/3Ak3JiJ1UK65un1UDs/R60OPmeFnI3CNGyfDOEe2Lc61W
veBaITheFjIHGFBy2HIEx8tC5j5Qydqtbl9eBq7FLUdwvCxkhoCSfpKUIzheFjJHQiV/HvaXu75KVI7g
eFnIHIV5z1WDp5Wgx90qf4WeKDheFjIj0IHw83Zw4pfkeFnIHAaf1gv9fPQjcC1JSY6Xhcx+YLlzPhCR
H0FySY6XhcyWgeXs3JAlOV4WMhOxylmo5OFBYLbzu6bVxlL/LMPxspDZUPqkX06O5XKW0E7S+5Ouwdku
HC8LmXtwSbGchUtK5QiOl4XMftTirPm2gu5BqNj84HIEx8tC5izgeFnInAUcL6s7XA+bUyfJz076EQ0X
SZGGO7nN8bLob4gs//p48Mb+ND+PfeD4eFLz0yNmJ7tbjxZ9F7pr084lLpcrVy6rQuEVBSwdzqFOWm0A
AAAASUVORK5CYII=
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIaSURBVFhH7ZjLSsNAFIZ9DS9PUTUUUYuJIsWqiKgbEd9L
VNwq3p5AV1ZbCrrW1oWuWhEvTRfWduQMaW3+mZM0ockqP3wL0/NPPiYdMB0aSpIkSbjYGWPsy5w4qk8b
b3XLEBFR+7aMQ9tMj+L9PUNyH9b4q2bBSKB7BZKUO6dZKEpoJ9GDTcSPVY9pVNGDjVKOCfRgg8W4QA82
WETs5TnR2F5TrrNkp9VrGtCDDRZ7IbnWTV60yxXR2N1QPkfkfD4vfg72lM8Q9GCDxe7NchkpJ2rvkvZj
WTR21pW57rwj15n3k0QPNljsspAWzdPj7g2lJLOT9oopWne3rln62+txowcbLLroQxJ3TsoVC8JetdT1
Bi7oIxlWbrCCnGTlWbRKpVByBHqwwSKLRjKsHIEebLDoCUlenKlyD/eB5Aj0YINFL+R37tZ9Wgl63I3d
TWXeC/Rgg0UO3YFwScqD078kerDBog6dXKtYFM3L89CS6MEGi4hWruAcCM3B6VcSPdhgsW+5zlxISfRg
g8VAcr2SZyduyaeKsLdy6uygBOvZGfF7feUv1wF2kr6fdE2Zc0APNlh04Uj6ynVwJP3kCPRgg0XEXpqV
/63gdRYSm/eWI9CDDRbjAj3YYDEu0IMNvfFjOXKCvHbSS7SyQMR8m5P76MGGfoaI86ePTyv1Ul9MDaOH
Z+z5qRG5k6ZRxQUHhmlUaecCyyVJkuQ/fwUsHc4scZpEAAAAAElFTkSuQmCC
</value>
</data>
<data name="btSetting.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
<data name="toolStripButton8.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAMDSURBVFhH7ZhZT1NRFIX74B/wz/iIw4tCVIrBB36FLyZA
ueVCESiDdGBoKQVbKJEKKFNpsWATUeNA0GiMqGEqREBKqWW0ULZdN7cE5EhuaWIJuStZuT1n77PX15u+
9ChkyTqNyitvOJ9fbVWq9Q/MfJ39o7qmOVjAt2znVVkJz1y9bVXY19vN6EO/eHRf8RmFupZG9OLMwRmY
if0Cnc30rxlHlFtlucIb7cMYYOl0/+J5fm9y9gethMK0ubVN0O9IhELhdZryL5DP54s22vtCd2p0W7zB
9jS/wnoZM4r0rd5iXdtW98jLdcyYWVqluUCY/IE1ml2OPZfXhPXMYpA+fZ+jfs/bzVjudnFtqxczRJyj
wrfDwEhkR4CRKkDjHN/wcL2+qW/z6+ziPoxUox/nwCDiHBWKyWh3Nxp7O2wAqWYCKjnXdSXnDiYLCLFC
EzEYbuT1rmRygxkinkKBDbXTLxSTFSs0EYOBc85RFucKiHgKxU2Vi6rcoVMDCBYwiXj/D7Dc2ERpV7NJ
a7Ay63BKAdOuZdOFSzcoLf02sw6nFBBvDpAVxmZmHU4poBTLgKxQGL+9g2b1wCl9gzKgFLFC45YBpYgV
GrcMKEWs0LhlQClihcIH4Y6DTOkblGIZkBWaiGVAVmgiPhuA0WiUcOXhef6OzE4PlZmdVGhoo/zqZioy
Okhr6SRzh5u8L8bp2/Q87ezsCuegeJA/EKbphVUan5ihLu9rMsX6tY2dpLrfQqWmDqpz9NPj4Tc09nmK
cDUiGdDR+4z4WgdpzE9IYxul0kdfSNszT5UDy0IPnlhjv8Q+KvSp9a1k7xmhiUl/DCpI7tH3pKlrF2ro
OW4GMtBXZnHS0KsPxwOq67uopH2MKvuXhLVUo1/jGKNiU7dgfD7JDGSDAetDgLhZwL/5vw+lyuoO/+Gb
BdyDABLUJ3Gmit8r7f25H4DP2GP1SjHglCpXuoiXvDI5jyGn0rdxLwYG51T4Nm5xQzqxnHpd5H3nsgoG
azPuDqxlce4wgLEnls+yFIo/ehrF0/p8G5AAAAAASUVORK5CYII=
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAALySURBVFhH7ZhZT1NRFIV58A/4Z3zE4UUhIsXgA7/CFxOg
3HKhCJRBOjC0lMEWSmwFlAKlxYJNRI0DQaMxoobpQmQqpZbRQllm34QGToH00sQ25K5k5d5z9j57fW36
0pOWJktWCqqgsulyYW2rQqV7bOIbrF9UdW2BIr59t6CmFfTM11nWxX2d1UR91H/ajGJtezP10pmjM2gm
7RdpLcbTZsQov8Z8gzdYR2iAudv9h+f5g6m531gLhrC9swvS33AYwdAmpoVF+Hy+SLO1P3i/TrvD6y0v
Cqtar9OMEl2Ht1TbudM7+maTZswur2PeH4Lg38DcagjC6oa4nl0K4OuveQx4PmzzButuaX2Hl2awXFHR
p6OB4fCeCBOvCJrO8U1PNhtb+rd/zC1FYeI19dM5YmC5oqJiItrfj0A4IVyKTwRUcK7bCs4dSBSQxAZK
NTFkFTjXsrmhzCggbagcglhMVGygVBMD55hHDufyRwHvKF2ocQdTBpBYiOm/A1YaWpB+MxcafWtMLSUA
02/l4sq1LKRn3IuppQQgfXMEWWVoi6mlBGA8lgHZwEPTb++o2XrSAVlItiYDHooNlAGlig2UAaWKDZQB
pYoNPAnuLMikAcZrGZANlGoZkA2U6osBGIlEQFcenlcfYXJ4UGFyoFjficLaNpQYbNCYu2Gyu+F9PYGf
MwvY29uPART8IcwsrmNichY93ncw2t3QNHdD+agd5UY7GmwDeDbyHuPfpkFXI3ED2pwvwdfboDY9h9oy
hvKn36HpW0D14KrYQ09a036ZdUzsU+k6YO0bxeSUgJnFANxjn6Bu6BJr1HPWDMqgvgqzA8NvP58NqGrs
QVnXOKoHlsV1vKZ+tW0cpcZe0fR+nhmUTQy0PgZINwv0b549lCyr7MLxmwW6ByFIoj6Ps5X8QblzJRpA
77TH9sVrglMoXRlRwESVzXn0edW+rYfOFZDzqnxbd7lhLduXNF3lfZdyiobqMx8MbuRw7hAB0x7bdyH1
D3oaxdPZVBESAAAAAElFTkSuQmCC
</value>
</data>
<data name="toolStripButton9.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJdSURBVFhH7ZbNTxNBGIf756l/h1FMvClGoHgwGNMGBUxJ
jQgNJWGDklgvftRIqqINHwdKevIAB5RyAC9eIEFe9zfO2s3wm5Jp2YmNfZMnm52+7+zT+dpN9eK/ivLU
BYmQo62/+GzXKjzMQt90vyAr8o1W4cEKfKNVeLAC32gVHr1NcgbdL8iKfKNVeLAC32gVHqzAN1qFR2+T
nEH3C7Kidvi+U5Prdx7JlYExK/gdeWatVuFhJrfD4c+vkh6dklzwTkof6lZy82WVh/x4vVbhEU9sl+lg
Ue7mAiplMjK5oPLj9VqFh8sarNWrcmMkf2rq+u8/kcWlGhUyQR7yzT6u3Z44uJoev6S1muEiePNeXgov
P9MHd0qhtCyX06P7WqsZLoL4p6zzOMXXG5IJ1mToaVX688vqmp1fU+0sPw7611rNYCI2Wgm+qNTlwcK6
DBdWpFhtSHn7SCq7J+o6F94Pz6zIw/B35EU18mNOEd0nKgi5zPNNWfp2LB/35BRozzzbVJKsHiQmOPtq
Ixy5VatcxPud4z8jbJluKngeaxBrDtPKpEyKXxqSDfgoJiaIjYC1xoRM3m4fqnzWj1UwIi7D2m2C2K2V
xgkVMqns/pJbj/lRRQVdotUIYmSYkMmbrXAEpx1G0CVsgtlwDeIoYUImzmvQJWyC2JVuu5i/FhMTBDjf
cM5BwibX1jnoEq0E8YbAw9UIhdOINYmNgyvu0W6+SUwSFYzAdGONYSOod3F4xb1tWuN4EeyEjgXxzYbP
ItZ5p8yUPvHPLZfAByUk8U/PG8j1DY5d1I/6lyOV+g2T8J9wZbIwpwAAAABJRU5ErkJggg==
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJcSURBVFhH7ZbNTxNBGIf589S/w/iReEOMSOuBQEwbFDU1
NWJpLAmbKon14keNpAqywXKgpCcPcOBjPSgXLiUBXvMbs6bz25k2U9pujX2TJ5udvjP7dOad2R0ZGcb/
FOW5CxIix9t/6Wc7O2nBHfvNvy/IHeKAnbTg5DhgJy04OQ7YSYuBr8GhYBvaCnKHOGAnLTg5DthJC06O
A3bSYuBrcCjYhraC3KFT9ndrcuPuY7kyPmsFvyOP+7KTFpzcCY2j75KYmZOM91FKn+tWMotllYf85v7s
pAU/rBNy3pJMZryIkImpJ0WV39yfnbRwqcFa3ZfRqWxk6cbuPZOl5VpExgTykM9jXL/96NfVxMNL7Ock
eHM6K/k3XyMP7Qb50qpcTsz8ZD8nQfxTHpgpvNuUlFeViee+jGVX1TW9WFXtnMtgfPZzqsFWgq8rdblf
3JBkfl0KfiDlnWOpHJyp64IfSHJ+XR4UN1Re2EcOFxR9EYRc6tWWLO+dyJcfEgHtqZdbSpL79lzwxdtN
Sea/WeVCPu2e/Jlhy3IbBbtRg6g5LCsLmSisBZL2zLPYM0FsBNQay5j4sNNQ+TxGS8GQZhlTu00Qu7US
nEVkTFQOTuXWU/NRZRR0CZsgZgQzwzIm3m83ZCLnMIMuYRNMe1V1lLCMCecadAmbIHal2y42vxZ7Jghw
vuGcgwSLhXIdnYMu0UoQbwg8XM3QWqBqEhsHV9yjnd8kTE8FQ7DcqDFsBPUuzvnq3rasfRc8D+cWxDcb
Pot44G4wX1oxf265BD4oIYl/2m0gd+3O7EV+5kDGb5Pwn3A/4UGoAAAAAElFTkSuQmCC
</value>
</data>
<data name="btMReset.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAQWSURBVFhH3VhLa1NBFI4vdKXiThRBfCyKzZ2baMEHdFPT
O5OW+qrgSrdi66MKBTd17WvvHxHrCxc+EUp1IW3Fbmx1W6tp7r2FXs83mZs06cnNTZqI9IOPQObMnC8z
55w5k8SaR5Du2uZb2Q5XOOc8S10CXVue9YVzBGPG7N/CS/WkPKEe+EJ9HrHVkm+rgKMeIxvPlve8pGOb
6a2DK1Rf3pYfODFx6Iru967t9JrlmgdXZA/Qjr3gnDZCz1ZP8ylnn1l+dSBhF3Kia55ztBrm2tUvL6XO
GzeNwRfyWlSMrZZYm+LzjnFXH0jcbW7RFnHYuI0HHGu9O/fbVn/oc4I4OX+wM7d8rBb1TsY9biRE3Jij
jHxD9e5yzsruMtOLyLU7u8lm0E3Kt5XzOCImYyUOFdrn3ALldKYWU7IH9kF//wY/7ZzwbTnkCflQ18eU
c9235PEgMbIeNq6tztD4dDh/dqfy/WT3l/I1dXaPwr4qUOcqJ1WSRDwJrL7tS/udzRDiWSd/cnYFZmbo
czDo7NyIOST0FcS5qexpV8hHK+1VEP5wFrWKsBZHzhbSPXtoR8Y5myocQxjoH0W7DV/VBKKYazGVwPXF
TSjRmcIuQJzXrn7wNhFMqq/047YYd1UFguy1qGOHMQ6Jrdc7UN/OaepjpTg0rjQiBdLdbcxKwKXOGYO0
+Gttg+BnxqPIiQOiBPqW+mTMCkBbFFn3qJQgW6MTonmElqUOZ6uRRztD/RxnGFLXNF1K+PGWkPpJI4+2
W9cpxoiIog0buvpucuOtYllYoAvmjAwntA0VYWasZfRE9qIWB9QQ2HSGWYrSw42DZQKjjrg1lEPwaxoM
ZpyOmG4bLQ5AQHJGrWPP0cJtxI2FlIeNvBhlppk8JGfRRJCAAXacuKLMACiOnDGIomrMikBY6K6EsY9k
Sl7R8y31jh3XlOPayXJQq3OfN14psFFx+aT6GKTTm1xLnuLGQ1IS3TWuSsAFzRmDywXiwo/KvurMzKDg
L7Vldvii+xtvUyBVFWHclQOtDjchFIgmFA0DWif6fqzSrhqxcxCHVg1PTs4mJDpwLYYDHtXsJBKItMex
erbzEkkFZybQv1faF0kJgZjDsWLn6OiesXbLuCgcZeTwYH8hteflMSenw6soSCTWUSd0DE9UxLFp226g
lBRbfsRcjWMFaf5j2EcCDxc8YLgFKqkzUairqGlmehGm6x6IztYSF9rUXD7Zu9dMjwaegPXWxbm2zAJ9
ThInGnl24h8x4z4eaOJw5UIto1C3jNv68F//9RECxx03JushYq7uY60GJA5l2CjnqBEiW2MnRD3Ay65a
MY9DZHTNOtcM4CpC04kGIypGC2NyHHcrNaCWmf5vgbYI/STiCV0wqP9Ep35uRcu09pBI/AXnDdZLp3fg
aQAAAABJRU5ErkJggg==
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAQKSURBVFhH3VhJixNBFI4belLxJoogLofBSVcljuACuYwz
VS8j7oInvYr7AoIXPbvd/SPijgdXBBk9iAt60dGrjmamq4Rp+WrSPZ3XnU4nk4j4wXfJe1Xv66pXr16l
UPjfEZQHl1ivuskXap/x6DDoS73XCjUAG/f/KzClkZIRdM0Ken1R0pSVFKTR2QS9NlJfMUUl+Txdhy9o
56TUz7mQvPTF8DNfqh183lnDF9V1RtB9HrBTGkl3JktqDY/TEYyggzUxOM6DzJa1fvphSnSAx2sLVuiT
WTk2W2JuI/UlHjcXrNAX+IQ95HkePxPY1nZX7qekX1bSWyvp3fj6So3bs+hWMu9240DkzTlfqsdWqCM1
r7qCz1PrVyutpON+UT/h49KInMx1cIxH9/jgJNX73yU9Av9g//55tqy2WanPGKGvu/pYUqesp7cGhYtz
4eNL2mOl/hSOH1tO1haH3/B5jaTbXE8DUOf4IE4j9K3A27l0aq1aCCHG2/6N+8xw6AtWMahU5mOML+kh
xPml6m5f6BtJfwrCD09FqyLsxFUq8yfKI6us1KPcnsGXSAP3UWW1DbGaCUQx57occH1x50aq91gFiDP9
9DVpb8EifQgqlUVhvGYCwdRr0eVOinNILL1bgfZWztFtq6Q98XiZAqW+Evd1wKXOHUP6kh45HyR/ij2L
aeKALIHWo1cNzmiLMuueUEdwWrMPRPcILVOb1OJIIPo57hSnq2mulCRtPaNQA5HA6TqV4gRxYnDcfYTQ
Z7mtl2xIC3TB3CHGt85H6Osptp7RiOqhvAK7zvCUovRwW+QTF5i1xb2hPoO49QYjxU4BbptIIBKSO/SW
I5unbyP+e5x6YySwZZnpJjfoMTQRVupjCVudiTLjVtGjV9wxJIpqg3M9LVxXkuKfyZI+6sZ79DRhi6hH
ebyCkXQ16ThNLrBTcZNFehGUywt8T+/itjiN1Jfj8RxwQXPHkHGBuPCzTl9zDn1BwZ/qG1pmxfDHpH2G
xiPRqK4OtDrcGQwFoglFw4DWCS0U92tGrBzEoVXDk5Pb40QHznVFwKOaD3CDhL6BY49tNVI9wKFCsHqi
f+b+ETfoMeQcthUrZ6S+m/Bh/C0UcV0NSP3C4vCbxpzTn8KrKCgU5lhBW/BERR7X27bTKCVRy4+ca7Gt
oJF0k+tJAA8XPGD44DS6kyjoBGoan6fedR/LPq0znOij75PFHav5PKnAE7Dduvi9b2gCT07c3Z08O/GP
GNeRCTym+UQ9o6BzPH4u/NN/fYTAdufNyXaInGt7W5sBBwePah6kU+K05j4Q7QAvu2bFPA9xolvWuW4A
VxGaTjQYWTk6bdOjuFuNqHp8nr8CtEXoJ5FP6IJB9ye61BsTLdP/iD/nDdZLx6Q0lQAAAABJRU5ErkJg
gg==
</value>
</data>
<data name="toolStripButton16.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
<data name="toolStripMenuItem11.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAAAMRJREFUWEdj
GAWjYDCAaVUu/4nFM2pde6Ha6AdAFt/ekEoQX12T/H9Bk+eXmTUufVCt9AHEOhCEB8SRpDgQhM+vSPw/
t87jDyzaaYWhziPNgUfmRf2f2+Dxf8/s2P8fTzf//3qulSYYw4HE4iVtvv8f7CnHaig1McguqPMgDsSm
aCDxqAMpxaMOpBSPOpBSPOpASvGoAynFow6kFI86kFI86kBK8agDKcWjDqQUjzqQUjzqQEoxhgMHI4Y6
bxSMggEEDAwAcaf95QqwNkoAAAAASUVORK5CYII=
iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAAALxJREFUWEdj
YBgFo2AQgGlVLv+JxTNqXXvR9dMcgCy+vSGVIL66Jvn/gibPLzNrXPrQzaApINaBA+ZIUhwIwudXJP6f
W+fxBz36qY3JcuCReVH/5zZ4/N8zO/b/x9PN/7+ea6UJxnAgsXhJm+//B3vKMQykNsZwILqCgcajDqQU
jzqQUjzqQErxqAMpxaMOpBSPOpBSPOpASvGoAynFow6kFI86kFI86kBK8agDKcUYDhyMGO7AUTAKBhAA
AHGn/eXya/8LAAAAAElFTkSuQmCC
</value>
</data>
<data name="toolStripMenuItem13.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAAAMRJREFUWEdj
GAWjYDCAaVUu/4nFM2pde6Ha6AdAFt/ekEoQX12T/H9Bk+eXmTUufVCt9AHEOhCEB8SRpDgQhM+vSPw/
t87jDyzaaYWhziPNgUfmRf2f2+Dxf8/s2P8fTzf//3qulSYYw4HE4iVtvv8f7CnHaig1McguqPMgDsSm
aCDxqAMpxaMOpBSPOpBSPOpASvGoAynFow6kFI86kFI86kBK8agDKcWjDqQUjzqQUjzqQEoxhgMHI4Y6
bxSMggEEDAwAcaf95QqwNkoAAAAASUVORK5CYII=
iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAAALxJREFUWEdj
YBgFo2AQgGlVLv+JxTNqXXvR9dMcgCy+vSGVIL66Jvn/gibPLzNrXPrQzaApINaBA+ZIUhwIwudXJP6f
W+fxBz36qY3JcuCReVH/5zZ4/N8zO/b/x9PN/7+ea6UJxnAgsXhJm+//B3vKMQykNsZwILqCgcajDqQU
jzqQUjzqQErxqAMpxaMOpBSPOpBSPOpASvGoAynFow6kFI86kFI86kBK8agDKcUYDhyMGO7AUTAKBhAA
AHGn/eXya/8LAAAAAElFTkSuQmCC
</value>
</data>
<data name="toolStripMenuItem14.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAAAMRJREFUWEdj
GAWjYDCAaVUu/4nFM2pde6Ha6AdAFt/ekEoQX12T/H9Bk+eXmTUufVCt9AHEOhCEB8SRpDgQhM+vSPw/
t87jDyzaaYWhziPNgUfmRf2f2+Dxf8/s2P8fTzf//3qulSYYw4HE4iVtvv8f7CnHaig1McguqPMgDsSm
aCDxqAMpxaMOpBSPOpBSPOpASvGoAynFow6kFI86kFI86kBK8agDKcWjDqQUjzqQUjzqQEoxhgMHI4Y6
bxSMggEEDAwAcaf95QqwNkoAAAAASUVORK5CYII=
iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAAALxJREFUWEdj
YBgFo2AQgGlVLv+JxTNqXXvR9dMcgCy+vSGVIL66Jvn/gibPLzNrXPrQzaApINaBA+ZIUhwIwudXJP6f
W+fxBz36qY3JcuCReVH/5zZ4/N8zO/b/x9PN/7+ea6UJxnAgsXhJm+//B3vKMQykNsZwILqCgcajDqQU
jzqQUjzqQErxqAMpxaMOpBSPOpBSPOpASvGoAynFow6kFI86kFI86kBK8agDKcUYDhyMGO7AUTAKBhAA
AHGn/eXya/8LAAAAAElFTkSuQmCC
</value>
</data>
<data name="toolStripMenuItem15.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAAAMRJREFUWEdj
GAWjYDCAaVUu/4nFM2pde6Ha6AdAFt/ekEoQX12T/H9Bk+eXmTUufVCt9AHEOhCEB8SRpDgQhM+vSPw/
t87jDyzaaYWhziPNgUfmRf2f2+Dxf8/s2P8fTzf//3qulSYYw4HE4iVtvv8f7CnHaig1McguqPMgDsSm
aCDxqAMpxaMOpBSPOpBSPOpASvGoAynFow6kFI86kFI86kBK8agDKcWjDqQUjzqQUjzqQEoxhgMHI4Y6
bxSMggEEDAwAcaf95QqwNkoAAAAASUVORK5CYII=
iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAAALxJREFUWEdj
YBgFo2AQgGlVLv+JxTNqXXvR9dMcgCy+vSGVIL66Jvn/gibPLzNrXPrQzaApINaBA+ZIUhwIwudXJP6f
W+fxBz36qY3JcuCReVH/5zZ4/N8zO/b/x9PN/7+ea6UJxnAgsXhJm+//B3vKMQykNsZwILqCgcajDqQU
jzqQUjzqQErxqAMpxaMOpBSPOpBSPOpASvGoAynFow6kFI86kFI86kBK8agDKcUYDhyMGO7AUTAKBhAA
AHGn/eXya/8LAAAAAElFTkSuQmCC
</value>
</data>
<data name="toolStripButton11.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADDSURBVFhHYxgFo2AwgGlVLv+JxjUuvVBt9AMgi29vSCWI
r65J/j+t3vPLjCqXPqhW+gBiHQjCA+JIUhwIwudXJP6vr9P6A492GmGo80hz4JF5Uf/nNnj83zM79v/H
083/v55rpQnGcCCxeEmb7/8He8qxGkpNDLIL6jyIA7EpGkg86kBK8agDKcWjDqQUjzqQUjzqQErxqAMp
xaMOpBSPOpBSPOpASvGoAynFow6kFI86kFKM4cDBiKHOGwWjYAABAwMAl/T9hXWK+3wAAAAASUVORK5C
YII=
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAC6SURBVFhHY2AYBaNgEIBpVS7/icY1Lr3o+mkOQBbf3pBK
EF9dk/x/Wr3nlxlVLn3oZtAUEOvAAXMkKQ4E4fMrEv/X12n9wYh+KmOyHHhkXtT/uQ0e//fMjv3/8XTz
/6/nWmmCMRxILF7S5vv/wZ5yDAOpjTEciK5goPGoAynFow6kFI86kFI86kBK8agDKcWjDqQUjzqQUjzq
QErxqAMpxaMOpBSPOpBSPOpASjGGAwcjhjtwFIyCAQQAl/T9hdakfvYAAAAASUVORK5CYII=
</value>
</data>
<data name="toolStripButton6.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
<data name="btAutoReelOut.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIFSURBVDhPpZLtS1NhGMbPPxJmmlYSgqHiKzGU1EDxg4iK
YKyG2WBogqMYJQOtCEVRFBGdTBCJfRnkS4VaaWNT5sqx1BUxRXxDHYxAJLvkusEeBaPAB+5z4Jzn+t3X
/aLhnEfjo8m+dCoa+7/C3O2Hqe0zDC+8KG+cRZHZhdzaaWTVTCLDMIY0vfM04Nfh77/G/sEhwpEDbO3t
I7TxE8urEVy99fT/AL5gWDLrTB/hnF4XsW0khCu5ln8DmJliT2AXrcNBsU1gj/MH4nMeKwBrPktM28xM
cX79DFKrHHD5d9D26hvicx4pABt2lpg10zYzU0zr7+e3xXGcrkEB2O2TNec9nJFwB3alZn5jZorfeDZh
6Q3g8s06BeCoKF4MRURoH1+BY2oNCbeb0TIclIYxOhzf8frTOuo7FxCbbVIAzpni0iceEc8vhzEwGkJD
lx83ymxifejdKjRNk/8PWnyIyTQqAJek0jqHwfEVscu31baIu8+90sTE4nY025dQ2/5FIPpnXlzKuK8A
HBUzHot52djqQ6HZhfR7IwK4mKpHtvEDMqvfCiQ6zaAAXM8x94aIWTNrLLG4kVUzgaTSPlzLtyJOZxbb
1wtfyg4Q+AfA3aZlButjSfxGcUJBk4g5tuP3haQKRKXcUQDOmbvNTpPOJeFFjordZmbWTNvMTHFUcpUC
nOccAdABIDXXE1nzAAAAAElFTkSuQmCC
</value>
</data>
<data name="btLightRoom.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
<data name="btManualPrint.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIUSURBVGhD7ZPNShthFIanN1DvIZDu/LmD2l1VhLirOwuF
SqFiQWRQISVSrC3FWrA2FsxMI4wZlWhEb0C9gYp20y5aS7qt2yxymg/fMJOZ80EhM8kB54FnN+d7nyxi
JCQk3CLG/tRHMtXa70yVKA5Hq7WrTLU+hLnouRngx6Oz9gtz0cMPRi/moocbi0PMRQ83FoeYi4iZizNj
9hspubE4bO4ZM5cnqGiD5mPd+AHKtvE9xo3FoX8TFW3ge4wbi0P/JirawPcYNxaH/k1U/D9TZm540sxd
PTdzJMmbpsWHyNQjMb7pMzP3E5l6uENJIlMPdyRJZOrhjiSJTD3ckSSRqYc7kiQy9QQPHk08pd6+fkqn
0x1VbY4/nmxpUSJTT/CgG/FNe/sHWlqUyNQTPOAe7qTBHmTqCR5wj3bSYA8y9TyZMslvKpXqqsEeZIax
naN7Vqly1pBs91CkaDtVrcj2UPHBA8GeIttjw927Zj4UauUvsj0K7v45/7FAncpXZHtY24df2I8lWjqw
ke3R+A+8YD+W6TSyPQpOedAqHTT+6fK1S5X7yPYoFo/vLn/YqG86ZZKsasy7bg+yW8nb2z8+b+2SaIs7
35EbZm3T2f1YcEi4O8gNs5IvzL/PWyTaT9YccsMsr649eL26TpJdWlkfRG4YIrqz8Ortfjabrb9cekeS
VE1zi2/KqhG5CQkJCQm3HsP4B860twaYbLRsAAAAAElFTkSuQmCC
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHkSURBVGhD7ZPNShtRFMevL1DfIZDu/HgDdVcVIe50p1Co
CBUFkSEKKZHiF2Kz8GMUzIwRxhkj0RF9AfUFKtqNLqwlbnWbRY7c2gzyv91IZpIjuT/47e6Z8zuLEUKj
0TQO/Q/l3kSx9CdRJIrCvmLpPlEsd+Pe0HhZoC4O19Jv3Bsa6rJoxL2hgYuiEveGBi6KStxbHZNXF2Lq
F0lxUVRW9onJ6zPMeTuVj9XjAGnV6APebmMfMGake0aM9P1XI02cfGma/YS9ChzjK44a6TvsVcAhbmKv
Ag5wE3sVcICb2KuAA9zEXgUc4Cb2KuDAwNAXamlto3g8XlPlzsHhkeoPqEd8xZa29uoPwI/WWuzBXgUc
wA/WWuzBXoXPYwa9NhaL1VXswd4A2zn5aLn+heX6ZHvHLP3Xdi5bsV/IeBxg7Dn2i03v4Ok/D5nqP2K/
yHqHl+pDpjr+T+wX1t7xjvKQq+6Rjf3yH5hQHvJ1HPtF1il0Wu4RvQdt1+/AfpHLnX6Yz5jlbadAnJWN
puc1Y/9fTHvvdms3T6zN7d9gd8DqtpNfyzrE3H3sDlgxs9M/TItYu2ElsTtgIbPaNZ9ZJ87Orax3YncA
ETXNfF86TKVS5W9zy8RJ2ZScXSzIRuzWaDQaTePyDJGgtwDvLqUwAAAAAElFTkSuQmCC
</value>
</data>
<data name="btJobCancle.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAPlSURBVFhH3VhLTxpRFCapu9qf0Uds0651Y2CYGaBtGhMx
MWkq/gG1il351o0LX3+j+6bLbqTMaIw1QQpN+k7cVDFxABedZnq+8aCAV5iBoZJ+yRcmzL3nfHMf55x7
ff8tNL//UTIYnNgOhd7qsvztXW9vIdnVZYJ41kOhr3iXlOVxtOVurcVmT88tTZZf6cHgTz0SMXaHh08P
4nErNz9v5ZeXreLKik0847+DyUkrFYsV0Tahqj+0YDBO4jvZnHcgox2aosRppIz04GDhcHraOl1bc87V
VQt90n19efpAAyMPm2y+OSQU5d6WonzSBwaM48VFsQAXhA2MKNnMbvr9d9lNY9Ak6RkJzNPX/hE5a4aw
mejuzr8PBJ6yO3fQJWmIjBRyc3NCB17waHYWQgs0EC/YrTNg5NDxeGlJaNhLYsrhKyFJT9h9bWDNYVpb
OXLVPJqZsTDdNGt3WIYY9CUd2BD06/maq8fU6KhJuzsDDSznMrD9d6LRE5GBf8E9CkMUysZZTiUQhBHn
HIWS9fUzit6J6LD98cKCRUnghEbxcjBHhkAQFnWsIDky02nLTKUcizT39iwzm7VONzaE78tpB3PKOCzr
Akhfh7RYRZ3OyeJKcCIS4kpwIhIZJ6mq31nWGZDMEd2RkkSdylnuEKgl0k3bc5KGRCSST8jyA5ZHAmlI
kfiFHQR04rghcUwUGKRpjOX5fCiLUJWIGl/FWgKaEQdCi64ob1gerT+q51AeiRrXokhIs+LAHKXAbVX9
zPLs7JFHDSdqXI/VgsrRiDjQIC1U3hksjwI0VcFFBxvkKopENioOLFDRS2vwN8trkcD9fe8Etv0Ut/0m
scMMHXBEja9iLSHNijyYmKgMM6hidmOx9gnUQ0NF0jTK8khgIPCwrVJdOJzX/f77LO8MWId1j5NkHLuz
BCcOy0WamUzdYuHX1NTlYgFAPkapI+pUQRbpZsog0ok4EBqw5FjWBVAk4lB9nQVrjgpWGqiTD7J8k2VV
IilJ4zv9/ddT8tPaQ8lP8e+iiqkGH5qy13JoGhkxNVX9+DoavcFyxMB1BI6AOFSLDLWCqOSRzWjt3WYZ
tYHrCBrFghd3MfVoH5QUpahJ0mN27wy4joBIHKpFhr0gRg4+krL8nN26A64jMN2er0naEFhzmFbXI1cN
XEfQ2sgg02A6hA5dEKEEtrAhHK+5eqAR7KAvfYlDNQKpnXHc1I/U9vwCk2wgz9bdrY2AhHYi4yAV6eGw
gdOXfQVMO96+AiYhoH0FTP+hKkHixzESqRQZAjbYXGuBZE5ix1AWbanqF6zV0iU6nvEf3qGNFgh0cbf/
DT7fX3+e7xvou4uzAAAAAElFTkSuQmCC
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAPUSURBVFhH3VhNSxtBGBbaW+3P6Ae2tGe9hGRnZtW2lIAR
hFLjH9BWk5408eviwTX+jd5Lj15Md1cRKyTWFPoNXqoRTIyHpmx5Rl2Td+NmokkVH3hg2Z2Z92Fn5v1q
a7uusILBxyZjY6vd3e9tzr8vBQIHZkdHGcSz3d39Dd9Mzkcxls5vCZa7um5bnL+xGftl9/YW1oeGDrdj
MSc/NeUU5+ac0vy8JJ7xbjsedzLRaAlj07r+02IsthQItNN1L4ylQOCmJUTM5rywOTBwsDMx4RwuLKjT
MBzM2QyHixbnBfx5rEntnAtpIe6vCPHZ7u8v7M3MeI03SKyBP7oiRG45GLxH7TUES9Oep4UoLgUCf6mh
ixJrpjs7ix9CoWfUrhJsTRvEYc9PTnoWbxZ3k0kIPbA07SW17wv8OUzcm531LNpsYsthK61pT6mOmsCZ
w7a28s9R7iYSDrbb1rS7VE8VcLNwIVpx5uoxMzJSNhnb8r3duP5rkcg+nfy/uBEOF23OR6kuCThh+Dkl
V5JKHZG+P4uK4/empx2bsf2azhwRAk6YTvIwlXLKm5tOOZNRMgqWNzacci7nHC4uer5RSmfOWIzqa0P4
2kkkPBOqeCzuBCoiIc4dryASEcfU9R9V4hDM4d0RkugEykqD9UQ2MtalYTjp3t5imvOHpwIZiyHwewaf
QRXDKmPOIhIMi7FXrkCkRchK6EA/+gnw+6ZCaLGFeOcKRD6H9IgOrMdaQmq9a0QcmE8mnVVd/+IKRORA
DkcHqpAKqsR5xIGFuTnHEqLgCkQWXFK4IGexlsjzigMP5ucdi7E/rRWYzTZP4JXf4it/SaSbicc9A/3o
J8Tvmwq3x8aq3QyymPVo9Oo46sHBksnYyKnAUOjRlQp1PT1FOxh84AoEcA7rlpNIFrLZhgxWiixvbdVN
Fn6Pj3uTBQDxGKkOneDhsUgVcSeESBVxIDTgyFF9SPfbUVRfZsKan56G/9v/yPktqk/C1LTRtb6+y0n5
DUOm/JYQp1kMxXHRlLuUoml4uGzp+qe3kcgNqqsKaEegBERRTRdpFZHJI5qZjN2hemoC7QhZuKucxwtS
FkpClCxNe0J1+ALtCIhEUU0XbRbx52RfkfMX1L4S0I7Adjf9TBqGPHPY1ob/HAXaEaj4EWmwHR5jDRKu
BGvhQiifuXqQDUxNe42iGo5URhyFsOiysoHJ2D7ibN3beh5IZ85YDKHI7ukpoPqSLeBk8qgFbBiSsgWc
TMqsBIEfZSRC6XFn1ds1aAUQzFEaIi1a0fWvOKsnTXQ84x2+YYwVCnXQ+dcG/wB/nu8b8pEjogAAAABJ
RU5ErkJggg==
</value>
</data>
<data name="btDebug.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
9CkXAAAAAElFTkSuQmCC
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
</value>
</data>
<data name="btHistory.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADOSURBVFhHYxgFIxLsv/VPZte9X6vpiUF2Qq0nDPbe/qm9
+97v//TEIDuh1hMGow7Egoe/A1dd+/U/ZN03OAbxYXIdx36gyBHCyHphmGIHLrz067/itM9wDOLD5PJ2
fUeRI4SR9cLw8HfgoI9iWuNRB1KKKXbgoM8kow6k1IGbb/0CFycwDOLD5EAWIssRwsh6YZhiB9IaD38H
DvooHvSZZNSBlDqQ1njUgZRiih046Busgz6TDHoHDvoopjUedSCleHg5cNAPYI6C4QMYGABB2DuYDB90
PQAAAABJRU5ErkJggg==
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADISURBVFhHY2AYBSMR7L/1T2bXvV+r6YlBdqK7AyfYe/un
9u57v//TE4PsRHcHTjDqQCx4+Dtw1bVf/0PWfYNjEB8m13HsB4ocIYysl2oOXHjp13/FaZ/hGMSHyeXt
+o4iRwgj6x05Dhz0UUxrPOpASjHFDhz0mWTUgZQ6cPOtX+DiBIZBfGTHI8sRwsh6qeZAWuPh78BBH8WD
PpOMOpBSB9IajzqQUkyxAwd9g3XQZ5JB78BBH8W0xqMOpBQPLwcO+gHMUTCcAABB2DuYaWEClwAAAABJ
RU5ErkJggg==
</value>
</data>
<data name="cPort1.Rect" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABQQgAAhEMAAL5C
AADIQgs=
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAC6QgCAiEMAAIhC
AAANQws=
</value>
</data>
<data name="cPort2.Rect" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABhQwAAhEMAAL5C
AADIQgs=
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABvQwCAiEMAAIhC
AAANQws=
</value>
</data>
<data name="cPort3.Rect" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAADHQwAAhEMAAL5C
AADIQgs=
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAIDAQwCAiEMAAIhC
AAANQws=
</value>
</data>
<data name="column2.Rect" mimetype="application/x-microsoft.net.object.binary.base64">