يستمع مشغل TCP/IP لطلبات JSON مفصولة بأسطر من عميل ويطلب إجراءات التطبيق المعروضة. تم تصميمه لأتمتة محلية، وأتمتة LAN موثوقة، والتحقق من التطوير. يرتبط بالحلقة المحلية بشكل افتراضي ويتطلب رمزًا قبل أن يقبل أي أمر.

بالنسبة لـ ControlMyNikon، فإن معرفات الإجراءات المعروضة الحالية هي CameraShoot وCameraToggleConnection وCameraAutoFocus. لا تتوفر إجراءات التطبيق الأخرى لمشغل TCP/IP ما لم يتم عرضها بشكل صريح في إصدار لاحق.

قبل أن تبدأ

  • استخدم مشغل TCP/IP فقط مع العملاء الذين تتحكم فيهم.
  • احتفظ بعنوان الربط عند 127.0.0.1 للبرامج النصية التي تعمل على نفس الكمبيوتر.
  • استخدم عنوان IPv4 لشبكة LAN فقط على شبكة خاصة موثوقة.
  • احتفظ بالإجراءات معطلة أثناء اختبار الاتصال والرموز.
  • قم بتشغيل الإجراءات فقط عندما يتم إثبات مسار الطلب.
  • قم بتجديد الرمز إذا تم مشاركته مع عميل لم تعد تثق به.

يستخدم مشغل TCP/IP JSON نصي ورمز حامل. لا تعرضه من خلال إعادة توجيه منفذ الموجه، أو Wi-Fi العامة، أو VPNs غير الموثوقة، أو قواعد جدار الحماية الموجهة للإنترنت. استخدم مشغل HTML عندما تريد صفحة متصفح هاتف بها أزرار إجراءات كبيرة بدلاً من برنامج نصي أو عميل TCP/IP مخصص. لا يوجد تخطيط لمشغل UDP.

عناصر التحكم في الصفحة

  • يبدأ البدء في الاستماع على عنوان الحلقة المحلية والمنفذ المكونين.
  • يتوقف الإيقاف عن الاستماع ويحرر المنفذ.
  • يحدد عنوان الربط العنوان المحلي للاستماع عليه.
  • استخدم 127.0.0.1 للبرامج النصية على نفس الكمبيوتر.
  • استخدم عنوان IPv4 المعين لهذا الكمبيوتر لعملاء LAN الموثوقين.
  • العناوين العامة مثل 0.0.0.0 غير مدعومة.
  • يحدد المنفذ منفذ TCP.
  • تسمح الإجراءات المفعلة بتشغيل طلبات الإجراءات المقبولة.
  • تسمح الإجراءات المعطلة لك باختبار الأوامر دون تشغيل الإجراءات.
  • يظهر الرمز رمز الطلب المطلوب.
  • نسخ الرمز يضع الرمز في الحافظة.
  • تجديد الرمز ينشئ رمزًا جديدًا ويجعل القديم غير صالح.
  • تبدأ سجل الأحداث بمعرفات الإجراءات المعروضة حاليًا لمشغل TCP/IP، ثم تظهر حالة المستمع، والأوامر المقبولة، والأوامر المرفوضة، والإجراءات المطلوبة.

إذا كان مشغل TCP/IP يستمع عند حفظ الملف الشخصي الحالي أو إغلاق التطبيق، فإن هذا الملف الشخصي يبدأ المستمع مرة أخرى في المرة التالية. إذا لم يعد العنوان المحفوظ مخصصًا لهذا الكمبيوتر أو كان المنفذ مشغولًا، تستمر عملية البدء مع توقف مشغل TCP/IP ويشرح سجل الأحداث الفشل.

تنسيق الأمر

ترسل العملاء كائن JSON واحد لكل سطر. يعيد المستمع استجابة JSON واحدة لكل سطر.

شكل طلب الإجراء الأساسي هو:

{"token":"your-token","command":"action","action":"CameraShoot"}

تبدو الاستجابة الناجحة كالتالي:

{"ok":true,"message":"Action requested.","action":"CameraShoot","actions":null,"error":null}

تتضمن الاستجابة المرفوضة رمز خطأ ثابت:

{"ok":false,"error":"InvalidToken","message":"Token is invalid.","action":null,"actions":null}

الأوامر الأولى هي:

  • الإجراء يطلب إجراءً معروضًا.
  • ping يتحقق من أن المستمع والرمز يعملان.
  • الإجراءات تعيد معرفات الإجراءات المعروضة حاليًا لمشغل TCP/IP.

عميل اختبار Python

يستخدم هذا البرنامج النصي مكتبة Python القياسية فقط. ابدأ مشغل TCP/IP أولاً، ثم الصق الرمز من الصفحة في TOKEN. اترك SEND_ACTION كـ False بينما تكون الإجراءات معطلة. قم بتعيين SEND_ACTION إلى True فقط بعد أن تعمل ping والإجراءات وتكون الإجراءات مفعلة. يتم حفظ نسخة من هذا البرنامج النصي في شجرة المصدر في Shared\Common\Triggers\pyscripts\tcpip_trigger_test_client.py. لبرنامج Visual Studio، افتح Shared\Common\Triggers\pyscripts\TcpIpTriggerPythonClient.sln.

import json
import socket
HOST = "127.0.0.1"
PORT = 50505
TOKEN = "paste-token-from-page"
SEND_ACTION = False
ACTION_ID = "CameraShoot"
def send_command(command):
    line = json.dumps(command, separators=(",", ":")) + "\n"
    with socket.create_connection((HOST, PORT), timeout=5) as sock:
        sock.sendall(line.encode("utf-8"))
        response = sock.makefile("r", encoding="utf-8", newline="\n").readline()
    return json.loads(response)
print("ping:", send_command({
    "token": TOKEN,
    "command": "ping"
}))
print("actions:", send_command({
    "token": TOKEN,
    "command": "actions"
}))
if SEND_ACTION:
    print("action:", send_command({
        "token": TOKEN,
        "command": "action",
        "action": ACTION_ID
    }))

السلامة

يمكن لمشغل TCP/IP طلب إجراءات التطبيق دون إدخال لوحة مفاتيح محلية أو ماسح ضوئي أو صوت أو إدخال صوت. لهذا السبب، يبدأ معطلاً، ويرتبط بالحلقة المحلية بشكل افتراضي، ويتطلب رمزًا حتى على الحلقة المحلية.

تمنع الإجراءات المعطلة إرسال الإجراءات ولكن لا تزال تسمح لك بالتحقق من JSON، ومعالجة الرموز، واستجابات الأوامر الأساسية. استخدمها أثناء بناء أو اختبار عميل.

ربط LAN هو تحكم موثوق به فقط في LAN. أي شخص يمكنه الاتصال بالمستمع ويعرف الرمز يمكنه طلب الإجراءات المعروضة بينما تكون الإجراءات مفعلة. احتفظ بالرمز خاصًا وقم بتجديده بعد مشاركته مع برامج نصية أو عملاء مؤقتين.

استكشاف الأخطاء وإصلاحها

إذا كان البدء معطلاً:

  • تحقق من أن المنفذ بين 1 و 65535.
  • تأكد من أن الرمز ليس فارغًا.
  • أوقف أي حالة مستمع سابقة قبل تغيير المنفذ.

إذا فشل البدء:

  • قد تكون عملية أخرى تستخدم المنفذ بالفعل.
  • اختر منفذًا آخر وحاول مرة أخرى.
  • تحقق من سجل الأحداث للحصول على رسالة الفشل.

إذا لم يتمكن عميل من الاتصال:

  • تأكد من بدء مشغل TCP/IP.
  • تأكد من أن العميل يتصل بعنوان الربط والمنفذ المعروضين.
  • للبرامج النصية على نفس الكمبيوتر، استخدم 127.0.0.1.
  • لجهاز LAN آخر، استخدم عنوان IPv4 لشبكة LAN الخاص بالكمبيوتر وتأكد من أن جدار حماية Windows أو أدوات النقاط النهائية تسمح بالاتصال الوارد.
  • تأكد من أن عنوان الربط مخصص لهذا الكمبيوتر.

إذا تم رفض الطلب:

  • تأكد من أن الطلب هو كائن JSON واحد في سطر واحد.
  • تأكد من أن الرمز يتطابق تمامًا مع الرمز الموجود على الصفحة.
  • تأكد من أن الأمر هو إجراء أو ping أو إجراءات.
  • تأكد من أن الإجراء المطلوب هو أحد معرفات الإجراءات المعروضة بواسطة أمر الإجراءات، مثل CameraShoot.
  • قم بتشغيل الإجراءات المفعلة قبل توقع تشغيل طلبات الإجراءات.

لتطوير عميل Python أو PowerShell، راقب سجل الأحداث أثناء الاختبار. يسجل أحداث الاتصال والانفصال للعميل، وأوامر ping والإجراءات المقبولة، وJSON المرفوض، والرموز المفقودة أو غير الصالحة، والأوامر غير المعروفة، والإجراءات غير المعروفة، والإجراءات المعطلة، وإرسال الإجراءات الناجحة. لا يتم كتابة الرمز نفسه في سجل الأحداث.

إعدادات ذات صلة

استخدم مفاتيح الاختصار عندما يجب أن يطلب إدخال لوحة المفاتيح إجراءات. استخدم الماسح الضوئي عندما يجب أن يملأ إدخال الرمز الشريطي الحقول أو يحفز الإجراءات. استخدم مشغل الصوت عندما يجب أن تطلب العبارات المنطوقة إجراءات. استخدم مشغل الصوت عندما يجب أن تطلب تجاوزات مستوى الصوت إجراءات.