LAPTOP-SNT8I5JK\Boounion
2025-02-10 f6f12fd688599e1abb1b9a7400b5f6a2936ecfa5
1.初充提交
已添加7个文件
已修改1个文件
899 ■■■■■ 文件已修改
.gitignore 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/Servo.vcxproj.user 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/TerminalDisplayDlg.cpp 274 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/TerminalDisplayDlg.h 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/x64/Debug/Recipe/Default.xml 533 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/x64/Debug/Res/Servo001_back.bmp 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/x64/Debug/Res/TeminalMsg.html 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/x64/Debug/Res/close_white_24.ico 补丁 | 查看 | 原始文档 | blame | 历史
.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/
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>
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();
}
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);
};
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>
SourceCode/Bond/x64/Debug/Res/Servo001_back.bmp
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>
SourceCode/Bond/x64/Debug/Res/close_white_24.ico