يستمع مشغل 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 لشبكة الكمبيوتر وتأكد من أن جدار حماية Windows أو أدوات النقاط النهائية تسمح بالاتصال الوارد.
  • تأكد من أن عنوان الربط مخصص لهذا الكمبيوتر.

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

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

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

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

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