From f6f12fd688599e1abb1b9a7400b5f6a2936ecfa5 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期一, 10 二月 2025 11:43:20 +0800
Subject: [PATCH] 1.初充提交
---
SourceCode/Bond/Servo/TerminalDisplayDlg.h | 57 +++
.gitignore | 5
SourceCode/Bond/x64/Debug/Res/TeminalMsg.html | 24 +
SourceCode/Bond/Servo/Servo.vcxproj.user | 6
SourceCode/Bond/Servo/TerminalDisplayDlg.cpp | 274 ++++++++++++++++++
SourceCode/Bond/x64/Debug/Recipe/Default.xml | 533 +++++++++++++++++++++++++++++++++++
SourceCode/Bond/x64/Debug/Res/close_white_24.ico | 0
SourceCode/Bond/x64/Debug/Res/Servo001_back.bmp | 0
8 files changed, 899 insertions(+), 0 deletions(-)
diff --git a/.gitignore b/.gitignore
index 0688f72..8304e96 100644
--- a/.gitignore
+++ b/.gitignore
@@ -39,3 +39,8 @@
SourceCode/Bond/x64/Release/Bonder.dat
SourceCode/Bond/Servo/x64/
SourceCode/Bond/BoounionPLC/x64/
+Document/HSMS_Demo/.vs/
+*.db
+SourceCode/Bond/.vs/
+SourceCode/Bond/packages/
+SourceCode/Bond/x64/Debug/Servo.exe.WebView2/
diff --git a/SourceCode/Bond/Servo/Servo.vcxproj.user b/SourceCode/Bond/Servo/Servo.vcxproj.user
new file mode 100644
index 0000000..ef958f5
--- /dev/null
+++ b/SourceCode/Bond/Servo/Servo.vcxproj.user
@@ -0,0 +1,6 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <RESOURCE_FILE>Servo.rc</RESOURCE_FILE>
+ </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git a/SourceCode/Bond/Servo/TerminalDisplayDlg.cpp b/SourceCode/Bond/Servo/TerminalDisplayDlg.cpp
new file mode 100644
index 0000000..8db94d2
--- /dev/null
+++ b/SourceCode/Bond/Servo/TerminalDisplayDlg.cpp
@@ -0,0 +1,274 @@
+// TerminalDisplayDlg.cpp : 实现文件
+//
+
+#include "stdafx.h"
+#include "Servo.h"
+#include "TerminalDisplayDlg.h"
+#include "afxdialogex.h"
+
+
+#define TIMER_ID_HIDE 1
+
+
+// CTerminalDisplayDlg 对话框
+
+IMPLEMENT_DYNAMIC(CTerminalDisplayDlg, CDialogEx)
+
+CTerminalDisplayDlg::CTerminalDisplayDlg(CWnd* pParent /*=NULL*/)
+ : CDialogEx(IDD_DIALOG_TERMINAL_DISPLAY, pParent)
+{
+ m_crBkgnd = RGB(0x3d, 0x0, 0xd0);
+ m_hbrBkgnd = nullptr;
+}
+
+CTerminalDisplayDlg::~CTerminalDisplayDlg()
+{
+}
+
+void CTerminalDisplayDlg::DoDataExchange(CDataExchange* pDX)
+{
+ CDialogEx::DoDataExchange(pDX);
+ DDX_Control(pDX, IDC_BUTTON_CLOSE, m_btnClose);
+}
+
+
+BEGIN_MESSAGE_MAP(CTerminalDisplayDlg, CDialogEx)
+ ON_WM_CTLCOLOR()
+ ON_WM_DESTROY()
+ ON_WM_SIZE()
+ ON_WM_CREATE()
+ ON_WM_TIMER()
+ ON_BN_CLICKED(IDC_BUTTON_CLOSE, &CTerminalDisplayDlg::OnBnClickedButtonClose)
+ ON_WM_NCHITTEST()
+END_MESSAGE_MAP()
+
+
+// CTerminalDisplayDlg 消息处理程序
+
+void CTerminalDisplayDlg::SetTemplateHtml(const char* pszFilepath)
+{
+ m_strFilepath = pszFilepath;
+}
+
+BOOL CTerminalDisplayDlg::OnInitDialog()
+{
+ CDialogEx::OnInitDialog();
+
+ CString strIcon1;
+ strIcon1.Format(_T("%s\\Res\\close_white_24.ico"), theApp.m_strAppDir);
+ HICON hIcon = (HICON)::LoadImage(AfxGetInstanceHandle(),
+ strIcon1, IMAGE_ICON, 24, 24,
+ LR_LOADFROMFILE | LR_DEFAULTCOLOR | LR_CREATEDIBSECTION | LR_DEFAULTSIZE);
+ m_btnClose.SetIcon(hIcon, hIcon, 24);
+ m_btnClose.SetBkgndColor(BS_HOVER, RGB(232, 17, 35));
+ m_btnClose.SetBkgndColor(BS_PRESS, RGB(162, 34, 44));
+ UpdateCloseBtn();
+
+ return TRUE; // return TRUE unless you set the focus to a control
+ // 异常: OCX 属性页应返回 FALSE
+}
+
+
+HBRUSH CTerminalDisplayDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
+{
+ HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
+
+ if (nCtlColor == CTLCOLOR_STATIC) {
+ pDC->SetBkColor(m_crBkgnd);
+ }
+
+ if (m_hbrBkgnd == nullptr) {
+ m_hbrBkgnd = CreateSolidBrush(m_crBkgnd);
+ }
+
+ return m_hbrBkgnd;
+}
+
+
+void CTerminalDisplayDlg::OnDestroy()
+{
+ CDialogEx::OnDestroy();
+
+ if (m_hbrBkgnd != nullptr) {
+ ::DeleteObject(m_hbrBkgnd);
+ }
+}
+
+
+void CTerminalDisplayDlg::OnSize(UINT nType, int cx, int cy)
+{
+ CDialogEx::OnSize(nType, cx, cy);
+ if (m_webviewController == nullptr) return;
+ Resize();
+}
+
+void CTerminalDisplayDlg::Resize()
+{
+ CWnd* pItem;
+ CRect rcClient, rcItem;
+ GetClientRect(&rcClient);
+ rcClient.top += 38;
+ m_webviewController->put_Bounds(rcClient);
+ m_btnClose.MoveWindow(rcClient.right - 38, 0, 38, 38);
+}
+
+void CTerminalDisplayDlg::ShowText(const char* pszText, unsigned int duration/* = -1*/)
+{
+ if (m_webWiew == nullptr) return;
+ std::string strMsg = pszText;
+ std::wstring wstrMsg(strMsg.begin(), strMsg.end());
+ size_t size = (wstrMsg.size() + 1) * sizeof(wchar_t);
+ wchar_t* memory = (wchar_t*)CoTaskMemAlloc(size);
+ if (memory == nullptr) return;
+ wcsncpy_s(memory, wstrMsg.size() + 1, wstrMsg.c_str(), wstrMsg.size());
+ wil::unique_cotaskmem_string message(memory);
+ m_webWiew->PostWebMessageAsString(message.get());
+ ShowWindow(SW_SHOW);
+ m_webviewController->put_IsVisible(TRUE);
+ SetTimer(TIMER_ID_HIDE, duration, nullptr);
+}
+
+int CTerminalDisplayDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
+{
+ if (CDialogEx::OnCreate(lpCreateStruct) == -1)
+ return -1;
+
+ HWND hWnd = this->m_hWnd;
+
+ // Step 3 - Create a single WebView within the parent window
+ // Locate the browser and set up the environment for WebView
+ CreateCoreWebView2EnvironmentWithOptions(nullptr, nullptr, nullptr,
+ Callback<ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler>(
+ [hWnd, this](HRESULT result, ICoreWebView2Environment* env) -> HRESULT {
+
+ // Create a CoreWebView2Controller and get the associated CoreWebView2 whose parent is the main window hWnd
+ env->CreateCoreWebView2Controller(hWnd, Callback<ICoreWebView2CreateCoreWebView2ControllerCompletedHandler>(
+ [hWnd, this](HRESULT result, ICoreWebView2Controller* controller) -> HRESULT {
+ if (controller != nullptr) {
+ this->m_webviewController = controller;
+ this->m_webviewController->get_CoreWebView2(&this->m_webWiew);
+ }
+ // Add a few settings for the webview
+ // The demo step is redundant since the values are the default settings
+ wil::com_ptr<ICoreWebView2Settings> settings;
+ this->m_webWiew->get_Settings(&settings);
+ settings->put_IsScriptEnabled(TRUE);
+ settings->put_AreDefaultScriptDialogsEnabled(TRUE);
+ settings->put_IsWebMessageEnabled(TRUE);
+
+ // Resize WebView to fit the bounds of the parent window
+ RECT bounds;
+ ::GetClientRect(hWnd, &bounds);
+ this->m_webviewController->put_Bounds(bounds);
+ Resize();
+
+ EventRegistrationToken token;
+
+ // Step 5 - Scripting
+ // Schedule an async task to add initialization script that freezes the Object object
+ this->m_webWiew->AddScriptToExecuteOnDocumentCreated(L"Object.freeze(Object);", nullptr);
+ // Schedule an async task to get the document URL
+ this->m_webWiew->ExecuteScript(L"window.document.URL;", Callback<ICoreWebView2ExecuteScriptCompletedHandler>(
+ [](HRESULT errorCode, LPCWSTR resultObjectAsJson) -> HRESULT {
+ LPCWSTR URL = resultObjectAsJson;
+ return S_OK;
+ }).Get());
+
+
+ // Step 6 - Communication between host and web content
+ // Set an event handler for the host to return received message back to the web content
+ this->m_webWiew->add_WebMessageReceived(Callback<ICoreWebView2WebMessageReceivedEventHandler>(
+ [this](ICoreWebView2* webview, ICoreWebView2WebMessageReceivedEventArgs* args) -> HRESULT {
+ wil::unique_cotaskmem_string message;
+ args->TryGetWebMessageAsString(&message);
+ this->ProcessWebViewMessage(message);
+ return S_OK;
+ }).Get(), &token);
+
+ if (!m_strFilepath.empty()) {
+ wchar_t url[512];
+ swprintf(url, 512, L"file:///%hs", m_strFilepath.c_str());
+ m_webWiew->Navigate(url);
+ }
+
+ return S_OK;
+ }).Get());
+ return S_OK;
+ }).Get());
+
+ return 0;
+}
+
+
+void CTerminalDisplayDlg::OnTimer(UINT_PTR nIDEvent)
+{
+ // TODO: 在此添加消息处理程序代码和/或调用默认值
+ if (TIMER_ID_HIDE == nIDEvent) {
+ KillTimer(TIMER_ID_HIDE);
+ ShowWindow(SW_HIDE);
+ }
+
+ CDialogEx::OnTimer(nIDEvent);
+}
+
+void CTerminalDisplayDlg::OnBnClickedButtonClose()
+{
+ ShowWindow(SW_HIDE);
+}
+
+LRESULT CTerminalDisplayDlg::OnNcHitTest(CPoint point)
+{
+ return HTCAPTION;
+ return CDialogEx::OnNcHitTest(point);
+}
+
+void CTerminalDisplayDlg::ProcessWebViewMessage(wil::unique_cotaskmem_string& message)
+{
+ // 转换为CString
+ LPCWSTR wideStr = message.get();
+ int bufferSize = WideCharToMultiByte(CP_UTF8, 0, wideStr, -1, nullptr, 0, nullptr, nullptr);
+ if (bufferSize == 0)return;
+ char* charStr = new char[bufferSize];
+ WideCharToMultiByte(CP_UTF8, 0, wideStr, -1, charStr, bufferSize, nullptr, nullptr);
+ CString strMsg = charStr;
+ delete[] charStr;
+
+
+ // 取header, body
+ CString strHeader, strBody;
+ int n = strMsg.Find(":");
+ if (n < 0) return;
+ strHeader = strMsg.Left(n);
+ strBody = strMsg.Right(strMsg.GetLength() - n - 1);
+
+
+ // 背景色
+ if (strHeader.CompareNoCase("backgroundColor") == 0) {
+ int n1 = strBody.Find("rgb(");
+ int n2 = strBody.Find(",");
+ int n3 = strBody.Find(",", n2+1);
+ int n4 = strBody.Find(")");
+ if (n1 >= 0 && n2 > 0 && n3 > 0 && n4 > 0) {
+ CString strRed, strGreen, strBlue;
+ strRed = strBody.Mid(n1 + 4, n2 - n1 - 4);
+ strGreen = strBody.Mid(n2 + 1, n3 - n2 - 1);
+ strBlue = strBody.Mid(n3 + 1, n4 - n3 - 1);
+ m_crBkgnd = RGB(atoi(strRed), atoi(strGreen), atoi(strBlue));
+ if (m_hbrBkgnd != nullptr) {
+ ::DeleteObject(m_hbrBkgnd);
+ m_hbrBkgnd = nullptr;
+ Invalidate();
+ }
+ UpdateCloseBtn();
+ }
+ }
+}
+
+void CTerminalDisplayDlg::UpdateCloseBtn()
+{
+ m_btnClose.SetFrameColor(BS_NORMAL, m_crBkgnd);
+ m_btnClose.SetFrameColor(BS_HOVER, m_crBkgnd);
+ m_btnClose.SetFrameColor(BS_PRESS, m_crBkgnd);
+ m_btnClose.SetBkgndColor(BS_NORMAL, m_crBkgnd);
+ m_btnClose.Invalidate();
+}
\ No newline at end of file
diff --git a/SourceCode/Bond/Servo/TerminalDisplayDlg.h b/SourceCode/Bond/Servo/TerminalDisplayDlg.h
new file mode 100644
index 0000000..8fc3f21
--- /dev/null
+++ b/SourceCode/Bond/Servo/TerminalDisplayDlg.h
@@ -0,0 +1,57 @@
+#pragma once
+#include <iostream>
+#include <wrl.h>
+#include <wil/com.h>
+#include "WebView2.h"
+#include "BlButton.h"
+
+using namespace Microsoft::WRL;
+
+
+// CTerminalDisplayDlg 对话框
+
+class CTerminalDisplayDlg : public CDialogEx
+{
+ DECLARE_DYNAMIC(CTerminalDisplayDlg)
+
+public:
+ CTerminalDisplayDlg(CWnd* pParent = NULL); // 标准构造函数
+ virtual ~CTerminalDisplayDlg();
+
+public:
+ void SetTemplateHtml(const char* pszFilepath);
+ void ShowText(const char* pszText, unsigned int duration = -1);
+
+private:
+ void Resize();
+ void ProcessWebViewMessage(wil::unique_cotaskmem_string& message);
+ void UpdateCloseBtn();
+
+private:
+ wil::com_ptr<ICoreWebView2Controller> m_webviewController;
+ wil::com_ptr<ICoreWebView2> m_webWiew;
+ std::string m_strFilepath;
+ COLORREF m_crBkgnd;
+ HBRUSH m_hbrBkgnd;
+ CBlButton m_btnClose;
+
+
+// 对话框数据
+#ifdef AFX_DESIGN_TIME
+ enum { IDD = IDD_DIALOG_TERMINAL_DISPLAY };
+#endif
+
+protected:
+ virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
+
+ DECLARE_MESSAGE_MAP()
+public:
+ virtual BOOL OnInitDialog();
+ afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
+ afx_msg void OnDestroy();
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg void OnTimer(UINT_PTR nIDEvent);
+ afx_msg void OnBnClickedButtonClose();
+ afx_msg LRESULT OnNcHitTest(CPoint point);
+};
diff --git a/SourceCode/Bond/x64/Debug/Recipe/Default.xml b/SourceCode/Bond/x64/Debug/Recipe/Default.xml
new file mode 100644
index 0000000..bc321af
--- /dev/null
+++ b/SourceCode/Bond/x64/Debug/Recipe/Default.xml
@@ -0,0 +1,533 @@
+<?xml version="1.0"?>
+<Recipe>
+ <Axes>
+ <Axis id="1" number="M100-M1" description="Default_Axis1" start_address="ZR10000">
+ <jog_distance min="1" />
+ <jog_distance max="10" />
+ <jog_distance current="1" />
+ <manual_speed min="1" />
+ <manual_speed max="100" />
+ <manual_speed current="10" />
+ <auto_speed min="5" />
+ <auto_speed max="200" />
+ <auto_speed current="50" />
+ <acceleration_time min="1" />
+ <acceleration_time max="10" />
+ <acceleration_time current="1" />
+ <deceleration_time min="1" />
+ <deceleration_time max="10" />
+ <deceleration_time current="1" />
+ <Positions>
+ <Position description="Position 1" min="5" max="20" current="10" />
+ <Position description="Position 2" min="10" max="40" current="20" />
+ <Position description="Position 3" min="15" max="60" current="30" />
+ <Position description="Position 4" min="20" max="80" current="40" />
+ <Position description="Position 5" min="25" max="100" current="50" />
+ <Position description="Position 6" min="30" max="120" current="60" />
+ <Position description="Position 7" min="35" max="140" current="70" />
+ <Position description="Position 8" min="40" max="160" current="80" />
+ <Position description="Position 9" min="45" max="180" current="90" />
+ <Position description="Position 10" min="50" max="200" current="100" />
+ <Position description="Position 11" min="55" max="220" current="110" />
+ <Position description="Position 12" min="60" max="240" current="120" />
+ <Position description="Position 13" min="65" max="260" current="130" />
+ <Position description="Position 14" min="70" max="280" current="140" />
+ <Position description="Position 15" min="75" max="300" current="150" />
+ <Position description="Position 16" min="80" max="320" current="160" />
+ <Position description="Position 17" min="85" max="340" current="170" />
+ <Position description="Position 18" min="90" max="360" current="180" />
+ <Position description="Position 19" min="95" max="380" current="190" />
+ <Position description="Position 20" min="100" max="400" current="200" />
+ <Position description="Position 21" min="105" max="420" current="210" />
+ <Position description="Position 22" min="110" max="440" current="220" />
+ <Position description="Position 23" min="115" max="460" current="230" />
+ <Position description="Position 24" min="120" max="480" current="240" />
+ <Position description="Position 25" min="125" max="500" current="250" />
+ </Positions>
+ </Axis>
+ <Axis id="2" number="M100-M2" description="Default_Axis2" start_address="ZR10300">
+ <jog_distance min="1" />
+ <jog_distance max="10" />
+ <jog_distance current="1" />
+ <manual_speed min="1" />
+ <manual_speed max="100" />
+ <manual_speed current="10" />
+ <auto_speed min="5" />
+ <auto_speed max="200" />
+ <auto_speed current="50" />
+ <acceleration_time min="1" />
+ <acceleration_time max="10" />
+ <acceleration_time current="1" />
+ <deceleration_time min="1" />
+ <deceleration_time max="10" />
+ <deceleration_time current="1" />
+ <Positions>
+ <Position description="Position 1" min="5" max="20" current="10" />
+ <Position description="Position 2" min="10" max="40" current="20" />
+ <Position description="Position 3" min="15" max="60" current="30" />
+ <Position description="Position 4" min="20" max="80" current="40" />
+ <Position description="Position 5" min="25" max="100" current="50" />
+ <Position description="Position 6" min="30" max="120" current="60" />
+ <Position description="Position 7" min="35" max="140" current="70" />
+ <Position description="Position 8" min="40" max="160" current="80" />
+ <Position description="Position 9" min="45" max="180" current="90" />
+ <Position description="Position 10" min="50" max="200" current="100" />
+ <Position description="Position 11" min="55" max="220" current="110" />
+ <Position description="Position 12" min="60" max="240" current="120" />
+ <Position description="Position 13" min="65" max="260" current="130" />
+ <Position description="Position 14" min="70" max="280" current="140" />
+ <Position description="Position 15" min="75" max="300" current="150" />
+ <Position description="Position 16" min="80" max="320" current="160" />
+ <Position description="Position 17" min="85" max="340" current="170" />
+ <Position description="Position 18" min="90" max="360" current="180" />
+ <Position description="Position 19" min="95" max="380" current="190" />
+ <Position description="Position 20" min="100" max="400" current="200" />
+ <Position description="Position 21" min="105" max="420" current="210" />
+ <Position description="Position 22" min="110" max="440" current="220" />
+ <Position description="Position 23" min="115" max="460" current="230" />
+ <Position description="Position 24" min="120" max="480" current="240" />
+ <Position description="Position 25" min="125" max="500" current="250" />
+ </Positions>
+ </Axis>
+ <Axis id="3" number="M100-M3" description="Default_Axis3" start_address="ZR10600">
+ <jog_distance min="1" />
+ <jog_distance max="10" />
+ <jog_distance current="1" />
+ <manual_speed min="1" />
+ <manual_speed max="100" />
+ <manual_speed current="10" />
+ <auto_speed min="5" />
+ <auto_speed max="200" />
+ <auto_speed current="50" />
+ <acceleration_time min="1" />
+ <acceleration_time max="10" />
+ <acceleration_time current="1" />
+ <deceleration_time min="1" />
+ <deceleration_time max="10" />
+ <deceleration_time current="1" />
+ <Positions>
+ <Position description="Position 1" min="5" max="20" current="10" />
+ <Position description="Position 2" min="10" max="40" current="20" />
+ <Position description="Position 3" min="15" max="60" current="30" />
+ <Position description="Position 4" min="20" max="80" current="40" />
+ <Position description="Position 5" min="25" max="100" current="50" />
+ <Position description="Position 6" min="30" max="120" current="60" />
+ <Position description="Position 7" min="35" max="140" current="70" />
+ <Position description="Position 8" min="40" max="160" current="80" />
+ <Position description="Position 9" min="45" max="180" current="90" />
+ <Position description="Position 10" min="50" max="200" current="100" />
+ <Position description="Position 11" min="55" max="220" current="110" />
+ <Position description="Position 12" min="60" max="240" current="120" />
+ <Position description="Position 13" min="65" max="260" current="130" />
+ <Position description="Position 14" min="70" max="280" current="140" />
+ <Position description="Position 15" min="75" max="300" current="150" />
+ <Position description="Position 16" min="80" max="320" current="160" />
+ <Position description="Position 17" min="85" max="340" current="170" />
+ <Position description="Position 18" min="90" max="360" current="180" />
+ <Position description="Position 19" min="95" max="380" current="190" />
+ <Position description="Position 20" min="100" max="400" current="200" />
+ <Position description="Position 21" min="105" max="420" current="210" />
+ <Position description="Position 22" min="110" max="440" current="220" />
+ <Position description="Position 23" min="115" max="460" current="230" />
+ <Position description="Position 24" min="120" max="480" current="240" />
+ <Position description="Position 25" min="125" max="500" current="250" />
+ </Positions>
+ </Axis>
+ <Axis id="4" number="M100-M4" description="Default_Axis4" start_address="ZR10900">
+ <jog_distance min="1" />
+ <jog_distance max="10" />
+ <jog_distance current="1" />
+ <manual_speed min="1" />
+ <manual_speed max="100" />
+ <manual_speed current="10" />
+ <auto_speed min="5" />
+ <auto_speed max="200" />
+ <auto_speed current="50" />
+ <acceleration_time min="1" />
+ <acceleration_time max="10" />
+ <acceleration_time current="1" />
+ <deceleration_time min="1" />
+ <deceleration_time max="10" />
+ <deceleration_time current="1" />
+ <Positions>
+ <Position description="Position 1" min="5" max="20" current="10" />
+ <Position description="Position 2" min="10" max="40" current="20" />
+ <Position description="Position 3" min="15" max="60" current="30" />
+ <Position description="Position 4" min="20" max="80" current="40" />
+ <Position description="Position 5" min="25" max="100" current="50" />
+ <Position description="Position 6" min="30" max="120" current="60" />
+ <Position description="Position 7" min="35" max="140" current="70" />
+ <Position description="Position 8" min="40" max="160" current="80" />
+ <Position description="Position 9" min="45" max="180" current="90" />
+ <Position description="Position 10" min="50" max="200" current="100" />
+ <Position description="Position 11" min="55" max="220" current="110" />
+ <Position description="Position 12" min="60" max="240" current="120" />
+ <Position description="Position 13" min="65" max="260" current="130" />
+ <Position description="Position 14" min="70" max="280" current="140" />
+ <Position description="Position 15" min="75" max="300" current="150" />
+ <Position description="Position 16" min="80" max="320" current="160" />
+ <Position description="Position 17" min="85" max="340" current="170" />
+ <Position description="Position 18" min="90" max="360" current="180" />
+ <Position description="Position 19" min="95" max="380" current="190" />
+ <Position description="Position 20" min="100" max="400" current="200" />
+ <Position description="Position 21" min="105" max="420" current="210" />
+ <Position description="Position 22" min="110" max="440" current="220" />
+ <Position description="Position 23" min="115" max="460" current="230" />
+ <Position description="Position 24" min="120" max="480" current="240" />
+ <Position description="Position 25" min="125" max="500" current="250" />
+ </Positions>
+ </Axis>
+ <Axis id="5" number="M100-M5" description="Default_Axis5" start_address="ZR11200">
+ <jog_distance min="1" />
+ <jog_distance max="10" />
+ <jog_distance current="1" />
+ <manual_speed min="1" />
+ <manual_speed max="100" />
+ <manual_speed current="10" />
+ <auto_speed min="5" />
+ <auto_speed max="200" />
+ <auto_speed current="50" />
+ <acceleration_time min="1" />
+ <acceleration_time max="10" />
+ <acceleration_time current="1" />
+ <deceleration_time min="1" />
+ <deceleration_time max="10" />
+ <deceleration_time current="1" />
+ <Positions>
+ <Position description="Position 1" min="5" max="20" current="10" />
+ <Position description="Position 2" min="10" max="40" current="20" />
+ <Position description="Position 3" min="15" max="60" current="30" />
+ <Position description="Position 4" min="20" max="80" current="40" />
+ <Position description="Position 5" min="25" max="100" current="50" />
+ <Position description="Position 6" min="30" max="120" current="60" />
+ <Position description="Position 7" min="35" max="140" current="70" />
+ <Position description="Position 8" min="40" max="160" current="80" />
+ <Position description="Position 9" min="45" max="180" current="90" />
+ <Position description="Position 10" min="50" max="200" current="100" />
+ <Position description="Position 11" min="55" max="220" current="110" />
+ <Position description="Position 12" min="60" max="240" current="120" />
+ <Position description="Position 13" min="65" max="260" current="130" />
+ <Position description="Position 14" min="70" max="280" current="140" />
+ <Position description="Position 15" min="75" max="300" current="150" />
+ <Position description="Position 16" min="80" max="320" current="160" />
+ <Position description="Position 17" min="85" max="340" current="170" />
+ <Position description="Position 18" min="90" max="360" current="180" />
+ <Position description="Position 19" min="95" max="380" current="190" />
+ <Position description="Position 20" min="100" max="400" current="200" />
+ <Position description="Position 21" min="105" max="420" current="210" />
+ <Position description="Position 22" min="110" max="440" current="220" />
+ <Position description="Position 23" min="115" max="460" current="230" />
+ <Position description="Position 24" min="120" max="480" current="240" />
+ <Position description="Position 25" min="125" max="500" current="250" />
+ </Positions>
+ </Axis>
+ <Axis id="6" number="M100-M6" description="Default_Axis6" start_address="ZR11500">
+ <jog_distance min="1" />
+ <jog_distance max="10" />
+ <jog_distance current="1" />
+ <manual_speed min="1" />
+ <manual_speed max="100" />
+ <manual_speed current="10" />
+ <auto_speed min="5" />
+ <auto_speed max="200" />
+ <auto_speed current="50" />
+ <acceleration_time min="1" />
+ <acceleration_time max="10" />
+ <acceleration_time current="1" />
+ <deceleration_time min="1" />
+ <deceleration_time max="10" />
+ <deceleration_time current="1" />
+ <Positions>
+ <Position description="Position 1" min="5" max="20" current="10" />
+ <Position description="Position 2" min="10" max="40" current="20" />
+ <Position description="Position 3" min="15" max="60" current="30" />
+ <Position description="Position 4" min="20" max="80" current="40" />
+ <Position description="Position 5" min="25" max="100" current="50" />
+ <Position description="Position 6" min="30" max="120" current="60" />
+ <Position description="Position 7" min="35" max="140" current="70" />
+ <Position description="Position 8" min="40" max="160" current="80" />
+ <Position description="Position 9" min="45" max="180" current="90" />
+ <Position description="Position 10" min="50" max="200" current="100" />
+ <Position description="Position 11" min="55" max="220" current="110" />
+ <Position description="Position 12" min="60" max="240" current="120" />
+ <Position description="Position 13" min="65" max="260" current="130" />
+ <Position description="Position 14" min="70" max="280" current="140" />
+ <Position description="Position 15" min="75" max="300" current="150" />
+ <Position description="Position 16" min="80" max="320" current="160" />
+ <Position description="Position 17" min="85" max="340" current="170" />
+ <Position description="Position 18" min="90" max="360" current="180" />
+ <Position description="Position 19" min="95" max="380" current="190" />
+ <Position description="Position 20" min="100" max="400" current="200" />
+ <Position description="Position 21" min="105" max="420" current="210" />
+ <Position description="Position 22" min="110" max="440" current="220" />
+ <Position description="Position 23" min="115" max="460" current="230" />
+ <Position description="Position 24" min="120" max="480" current="240" />
+ <Position description="Position 25" min="125" max="500" current="250" />
+ </Positions>
+ </Axis>
+ <Axis id="7" number="M100-M7" description="Default_Axis7" start_address="ZR11800">
+ <jog_distance min="1" />
+ <jog_distance max="10" />
+ <jog_distance current="1" />
+ <manual_speed min="1" />
+ <manual_speed max="100" />
+ <manual_speed current="10" />
+ <auto_speed min="5" />
+ <auto_speed max="200" />
+ <auto_speed current="50" />
+ <acceleration_time min="1" />
+ <acceleration_time max="10" />
+ <acceleration_time current="1" />
+ <deceleration_time min="1" />
+ <deceleration_time max="10" />
+ <deceleration_time current="1" />
+ <Positions>
+ <Position description="Position 1" min="5" max="20" current="10" />
+ <Position description="Position 2" min="10" max="40" current="20" />
+ <Position description="Position 3" min="15" max="60" current="30" />
+ <Position description="Position 4" min="20" max="80" current="40" />
+ <Position description="Position 5" min="25" max="100" current="50" />
+ <Position description="Position 6" min="30" max="120" current="60" />
+ <Position description="Position 7" min="35" max="140" current="70" />
+ <Position description="Position 8" min="40" max="160" current="80" />
+ <Position description="Position 9" min="45" max="180" current="90" />
+ <Position description="Position 10" min="50" max="200" current="100" />
+ <Position description="Position 11" min="55" max="220" current="110" />
+ <Position description="Position 12" min="60" max="240" current="120" />
+ <Position description="Position 13" min="65" max="260" current="130" />
+ <Position description="Position 14" min="70" max="280" current="140" />
+ <Position description="Position 15" min="75" max="300" current="150" />
+ <Position description="Position 16" min="80" max="320" current="160" />
+ <Position description="Position 17" min="85" max="340" current="170" />
+ <Position description="Position 18" min="90" max="360" current="180" />
+ <Position description="Position 19" min="95" max="380" current="190" />
+ <Position description="Position 20" min="100" max="400" current="200" />
+ <Position description="Position 21" min="105" max="420" current="210" />
+ <Position description="Position 22" min="110" max="440" current="220" />
+ <Position description="Position 23" min="115" max="460" current="230" />
+ <Position description="Position 24" min="120" max="480" current="240" />
+ <Position description="Position 25" min="125" max="500" current="250" />
+ </Positions>
+ </Axis>
+ <Axis id="8" number="M100-M8" description="Default_Axis8" start_address="ZR12100">
+ <jog_distance min="1" />
+ <jog_distance max="10" />
+ <jog_distance current="1" />
+ <manual_speed min="1" />
+ <manual_speed max="100" />
+ <manual_speed current="10" />
+ <auto_speed min="5" />
+ <auto_speed max="200" />
+ <auto_speed current="50" />
+ <acceleration_time min="1" />
+ <acceleration_time max="10" />
+ <acceleration_time current="1" />
+ <deceleration_time min="1" />
+ <deceleration_time max="10" />
+ <deceleration_time current="1" />
+ <Positions>
+ <Position description="Position 1" min="5" max="20" current="10" />
+ <Position description="Position 2" min="10" max="40" current="20" />
+ <Position description="Position 3" min="15" max="60" current="30" />
+ <Position description="Position 4" min="20" max="80" current="40" />
+ <Position description="Position 5" min="25" max="100" current="50" />
+ <Position description="Position 6" min="30" max="120" current="60" />
+ <Position description="Position 7" min="35" max="140" current="70" />
+ <Position description="Position 8" min="40" max="160" current="80" />
+ <Position description="Position 9" min="45" max="180" current="90" />
+ <Position description="Position 10" min="50" max="200" current="100" />
+ <Position description="Position 11" min="55" max="220" current="110" />
+ <Position description="Position 12" min="60" max="240" current="120" />
+ <Position description="Position 13" min="65" max="260" current="130" />
+ <Position description="Position 14" min="70" max="280" current="140" />
+ <Position description="Position 15" min="75" max="300" current="150" />
+ <Position description="Position 16" min="80" max="320" current="160" />
+ <Position description="Position 17" min="85" max="340" current="170" />
+ <Position description="Position 18" min="90" max="360" current="180" />
+ <Position description="Position 19" min="95" max="380" current="190" />
+ <Position description="Position 20" min="100" max="400" current="200" />
+ <Position description="Position 21" min="105" max="420" current="210" />
+ <Position description="Position 22" min="110" max="440" current="220" />
+ <Position description="Position 23" min="115" max="460" current="230" />
+ <Position description="Position 24" min="120" max="480" current="240" />
+ <Position description="Position 25" min="125" max="500" current="250" />
+ </Positions>
+ </Axis>
+ <Axis id="9" number="M100-M9" description="Default_Axis9" start_address="ZR12400">
+ <jog_distance min="1" />
+ <jog_distance max="10" />
+ <jog_distance current="1" />
+ <manual_speed min="1" />
+ <manual_speed max="100" />
+ <manual_speed current="10" />
+ <auto_speed min="5" />
+ <auto_speed max="200" />
+ <auto_speed current="50" />
+ <acceleration_time min="1" />
+ <acceleration_time max="10" />
+ <acceleration_time current="1" />
+ <deceleration_time min="1" />
+ <deceleration_time max="10" />
+ <deceleration_time current="1" />
+ <Positions>
+ <Position description="Position 1" min="5" max="20" current="10" />
+ <Position description="Position 2" min="10" max="40" current="20" />
+ <Position description="Position 3" min="15" max="60" current="30" />
+ <Position description="Position 4" min="20" max="80" current="40" />
+ <Position description="Position 5" min="25" max="100" current="50" />
+ <Position description="Position 6" min="30" max="120" current="60" />
+ <Position description="Position 7" min="35" max="140" current="70" />
+ <Position description="Position 8" min="40" max="160" current="80" />
+ <Position description="Position 9" min="45" max="180" current="90" />
+ <Position description="Position 10" min="50" max="200" current="100" />
+ <Position description="Position 11" min="55" max="220" current="110" />
+ <Position description="Position 12" min="60" max="240" current="120" />
+ <Position description="Position 13" min="65" max="260" current="130" />
+ <Position description="Position 14" min="70" max="280" current="140" />
+ <Position description="Position 15" min="75" max="300" current="150" />
+ <Position description="Position 16" min="80" max="320" current="160" />
+ <Position description="Position 17" min="85" max="340" current="170" />
+ <Position description="Position 18" min="90" max="360" current="180" />
+ <Position description="Position 19" min="95" max="380" current="190" />
+ <Position description="Position 20" min="100" max="400" current="200" />
+ <Position description="Position 21" min="105" max="420" current="210" />
+ <Position description="Position 22" min="110" max="440" current="220" />
+ <Position description="Position 23" min="115" max="460" current="230" />
+ <Position description="Position 24" min="120" max="480" current="240" />
+ <Position description="Position 25" min="125" max="500" current="250" />
+ </Positions>
+ </Axis>
+ <Axis id="10" number="M100-M10" description="Default_Axis10" start_address="ZR12700">
+ <jog_distance min="1" />
+ <jog_distance max="10" />
+ <jog_distance current="1" />
+ <manual_speed min="1" />
+ <manual_speed max="100" />
+ <manual_speed current="10" />
+ <auto_speed min="5" />
+ <auto_speed max="200" />
+ <auto_speed current="50" />
+ <acceleration_time min="1" />
+ <acceleration_time max="10" />
+ <acceleration_time current="1" />
+ <deceleration_time min="1" />
+ <deceleration_time max="10" />
+ <deceleration_time current="1" />
+ <Positions>
+ <Position description="Position 1" min="5" max="20" current="10" />
+ <Position description="Position 2" min="10" max="40" current="20" />
+ <Position description="Position 3" min="15" max="60" current="30" />
+ <Position description="Position 4" min="20" max="80" current="40" />
+ <Position description="Position 5" min="25" max="100" current="50" />
+ <Position description="Position 6" min="30" max="120" current="60" />
+ <Position description="Position 7" min="35" max="140" current="70" />
+ <Position description="Position 8" min="40" max="160" current="80" />
+ <Position description="Position 9" min="45" max="180" current="90" />
+ <Position description="Position 10" min="50" max="200" current="100" />
+ <Position description="Position 11" min="55" max="220" current="110" />
+ <Position description="Position 12" min="60" max="240" current="120" />
+ <Position description="Position 13" min="65" max="260" current="130" />
+ <Position description="Position 14" min="70" max="280" current="140" />
+ <Position description="Position 15" min="75" max="300" current="150" />
+ <Position description="Position 16" min="80" max="320" current="160" />
+ <Position description="Position 17" min="85" max="340" current="170" />
+ <Position description="Position 18" min="90" max="360" current="180" />
+ <Position description="Position 19" min="95" max="380" current="190" />
+ <Position description="Position 20" min="100" max="400" current="200" />
+ <Position description="Position 21" min="105" max="420" current="210" />
+ <Position description="Position 22" min="110" max="440" current="220" />
+ <Position description="Position 23" min="115" max="460" current="230" />
+ <Position description="Position 24" min="120" max="480" current="240" />
+ <Position description="Position 25" min="125" max="500" current="250" />
+ </Positions>
+ </Axis>
+ <Axis id="11" number="M100-M11" description="Default_Axis11" start_address="ZR13000">
+ <jog_distance min="1" />
+ <jog_distance max="10" />
+ <jog_distance current="1" />
+ <manual_speed min="1" />
+ <manual_speed max="100" />
+ <manual_speed current="10" />
+ <auto_speed min="5" />
+ <auto_speed max="200" />
+ <auto_speed current="50" />
+ <acceleration_time min="1" />
+ <acceleration_time max="10" />
+ <acceleration_time current="1" />
+ <deceleration_time min="1" />
+ <deceleration_time max="10" />
+ <deceleration_time current="1" />
+ <Positions>
+ <Position description="Position 1" min="5" max="20" current="10" />
+ <Position description="Position 2" min="10" max="40" current="20" />
+ <Position description="Position 3" min="15" max="60" current="30" />
+ <Position description="Position 4" min="20" max="80" current="40" />
+ <Position description="Position 5" min="25" max="100" current="50" />
+ <Position description="Position 6" min="30" max="120" current="60" />
+ <Position description="Position 7" min="35" max="140" current="70" />
+ <Position description="Position 8" min="40" max="160" current="80" />
+ <Position description="Position 9" min="45" max="180" current="90" />
+ <Position description="Position 10" min="50" max="200" current="100" />
+ <Position description="Position 11" min="55" max="220" current="110" />
+ <Position description="Position 12" min="60" max="240" current="120" />
+ <Position description="Position 13" min="65" max="260" current="130" />
+ <Position description="Position 14" min="70" max="280" current="140" />
+ <Position description="Position 15" min="75" max="300" current="150" />
+ <Position description="Position 16" min="80" max="320" current="160" />
+ <Position description="Position 17" min="85" max="340" current="170" />
+ <Position description="Position 18" min="90" max="360" current="180" />
+ <Position description="Position 19" min="95" max="380" current="190" />
+ <Position description="Position 20" min="100" max="400" current="200" />
+ <Position description="Position 21" min="105" max="420" current="210" />
+ <Position description="Position 22" min="110" max="440" current="220" />
+ <Position description="Position 23" min="115" max="460" current="230" />
+ <Position description="Position 24" min="120" max="480" current="240" />
+ <Position description="Position 25" min="125" max="500" current="250" />
+ </Positions>
+ </Axis>
+ <Axis id="12" number="M100-M12" description="Default_Axis12" start_address="ZR13300">
+ <jog_distance min="1" />
+ <jog_distance max="10" />
+ <jog_distance current="1" />
+ <manual_speed min="1" />
+ <manual_speed max="100" />
+ <manual_speed current="10" />
+ <auto_speed min="5" />
+ <auto_speed max="200" />
+ <auto_speed current="50" />
+ <acceleration_time min="1" />
+ <acceleration_time max="10" />
+ <acceleration_time current="1" />
+ <deceleration_time min="1" />
+ <deceleration_time max="10" />
+ <deceleration_time current="1" />
+ <Positions>
+ <Position description="Position 1" min="5" max="20" current="10" />
+ <Position description="Position 2" min="10" max="40" current="20" />
+ <Position description="Position 3" min="15" max="60" current="30" />
+ <Position description="Position 4" min="20" max="80" current="40" />
+ <Position description="Position 5" min="25" max="100" current="50" />
+ <Position description="Position 6" min="30" max="120" current="60" />
+ <Position description="Position 7" min="35" max="140" current="70" />
+ <Position description="Position 8" min="40" max="160" current="80" />
+ <Position description="Position 9" min="45" max="180" current="90" />
+ <Position description="Position 10" min="50" max="200" current="100" />
+ <Position description="Position 11" min="55" max="220" current="110" />
+ <Position description="Position 12" min="60" max="240" current="120" />
+ <Position description="Position 13" min="65" max="260" current="130" />
+ <Position description="Position 14" min="70" max="280" current="140" />
+ <Position description="Position 15" min="75" max="300" current="150" />
+ <Position description="Position 16" min="80" max="320" current="160" />
+ <Position description="Position 17" min="85" max="340" current="170" />
+ <Position description="Position 18" min="90" max="360" current="180" />
+ <Position description="Position 19" min="95" max="380" current="190" />
+ <Position description="Position 20" min="100" max="400" current="200" />
+ <Position description="Position 21" min="105" max="420" current="210" />
+ <Position description="Position 22" min="110" max="440" current="220" />
+ <Position description="Position 23" min="115" max="460" current="230" />
+ <Position description="Position 24" min="120" max="480" current="240" />
+ <Position description="Position 25" min="125" max="500" current="250" />
+ </Positions>
+ </Axis>
+ </Axes>
+</Recipe>
diff --git a/SourceCode/Bond/x64/Debug/Res/Servo001_back.bmp b/SourceCode/Bond/x64/Debug/Res/Servo001_back.bmp
new file mode 100644
index 0000000..024cf3b
--- /dev/null
+++ b/SourceCode/Bond/x64/Debug/Res/Servo001_back.bmp
Binary files differ
diff --git a/SourceCode/Bond/x64/Debug/Res/TeminalMsg.html b/SourceCode/Bond/x64/Debug/Res/TeminalMsg.html
new file mode 100644
index 0000000..b50223c
--- /dev/null
+++ b/SourceCode/Bond/x64/Debug/Res/TeminalMsg.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html class="">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="referrer" content="always">
+ <title>瀹嬭瘝锛堜腑鍥芥枃瀛︼級_鐧惧害鐧剧</title>
+ <script>
+ window.onload = function() {
+ var body = document.body;
+ var computedStyle = window.getComputedStyle(body);
+ var backgroundColor = computedStyle.backgroundColor;
+ window.chrome.webview.postMessage("backgroundColor:" + backgroundColor.toString())
+ };
+ window.chrome.webview.addEventListener("message", (e) => {
+ document.getElementById("eap-msg").innerHTML = e.data;
+ })
+ </script>
+ </head>
+ <body style="background-color:#3d29a0;">
+ <h1 style="font-size:16px; color:#888888">鏉ヨ嚜EAP鐨勬秷鎭�</h1>
+ <div id="eap-msg" style="font-size:22px; color:#C8C8C8">ABCDEFG</div>
+ </body>
+</html>
\ No newline at end of file
diff --git a/SourceCode/Bond/x64/Debug/Res/close_white_24.ico b/SourceCode/Bond/x64/Debug/Res/close_white_24.ico
new file mode 100644
index 0000000..4224914
--- /dev/null
+++ b/SourceCode/Bond/x64/Debug/Res/close_white_24.ico
Binary files differ
--
Gitblit v1.9.3