مشكلة شائعة
لدى Javacomm و RxtX بعض الأشياء المختلفة عند التثبيت. يوصى بشدة بتثبيت القليل من التثبيت وفقًا لتعليمات التثبيت. إذا كانت تعليمات التثبيت تتطلب ملف جرة أو مكتبة مشتركة يجب أن تكون ضمن مجلد معين ، مما يعني أنه يجب اتخاذها على محمل الجد. إذا احتاج ملف أو جهاز معين إلى ملكية محددة أو وصول بشكل صحيح ، فهذا يعني أيضًا أنه يجب التعامل معه على محمل الجد. العديد من مشكلات التثبيت ناتجة عن عدم وفقًا لمتطلبات تعليمات التثبيت.
تجدر الإشارة إلى أن بعض إصدارات JavaComm سيكون لها تعليمين للتثبيت. يتم استخدام واحد لـ Java 1.2 وبعد ذلك ، واحد لإصدار Java 1.1. سيؤدي استخدام تعليمات التثبيت الخاطئة إلى نتيجة التثبيت التي لا يمكن عملها. من ناحية أخرى ، ستحتوي بعض الإصدارات/المكونات/الحزم من TXTX على أوصاف غير مكتملة. في هذه الحالة ، من الضروري الحصول على الكود المصدري الذي نشره RXTX ، والذي يحتوي على تعليمات التثبيت الكاملة.
بالإضافة إلى ذلك ، تجدر الإشارة إلى أن برنامج تثبيت JDK في Windows سيحتوي على ثلاث أجهزة افتراضية Java ، لذلك سيكون هناك ثلاثة مجلدات ممتدة.
ما هو أكثر من ذلك ، حتى JRE الرابع ، الموجود في بنية الدليل/Windows. يجب تثبيت Javacomm في JDK وجميع JRE العامة كملحقات.
WebStart
جافاكوم
هناك مشكلة شائعة حول JavaComm و RXTX وهي أنها لا تدعم التثبيت من خلال Java WebStart: Javacomm الشهير هو أنك تحتاج إلى استدعاء ملف يسمى javax.com.properties إلى دليل JDK Lib ، ولا يمكن إكمال ذلك عبر Java WebStart. إنه لأمر محبط للغاية أن الحاجة إلى هذا الملف هي بعض التصميمات غير الضرورية في Javacomm ، ويمكن لمصممي Javacomm تجنب ذلك بسهولة. رفضت الشمس بعناد الخطأ ، وأكدوا أن هذه الآلية ضرورية. كانوا يتحدثون الهراء ، خاصة عندما ذكروا Javacomm ، لأن Java كان لديه بنية مزود خدمة متخصصة في مثل هذه النوايا لفترة طويلة.
لا يوجد سوى سطر واحد في محتوى ملف السمة هذا ، والذي يوفر اسم فئة Java المحلي.
Driver = com.sun.win.win32driver
فيما يلي تقنية يمكنها نشر JavaComm من خلال ويب تبدأ في تجاهل ملف السمة الذي يؤذي الدماغ. لكن لديها عيوب خطيرة وقد تفشل عند نشر جافاكوم الأحدث -ستقوم Sun Sun بتقديم نسخة جديدة.
أولاً ، أطفئ مدير الأمن. شعر بعض المبرمجين الغبيين في Sun أن وجود ملفات Javax.Comm.Properties الرهيبة كان رائعًا مرارًا وتكرارًا ، خاصةً عندما تم تحميله لأول مرة. هذا فقط يتحقق مما إذا كان الملف موجودًا بدون أسباب أخرى.
System.SetSecurityManager (NULL) ؛
ثم ، عندما تم تشغيل API Javacomm في الأصل ، قامت بتهيئة السائق يدويًا.
string rivename = "com.sun.comm.win32driver" ؛
RXTX
يحتاج RXTX إلى تغيير ملكية الجهاز التسلسلي والوصول إليه على بعض الأنظمة الأساسية. هذا أيضًا شيء لا يمكن القيام به من خلال WebStart.
عندما يبدأ البرنامج ، يجب أن تطلب من المستخدمين تنفيذ الإعدادات اللازمة كمستخدمين فائقين. على وجه الخصوص ، لدى RXTX خوارزمية مطابقة للوضع للتحقق من اسم المعدات التسلسلية "القانونية". عندما يريد شخص ما استخدام الأجهزة غير القياسية ، مثل محول USB إلى Serial ، فإن هذا غالبًا ما يعبث بالأشياء. يمكن حظر هذه الآلية بواسطة سمات النظام. للحصول على التفاصيل ، راجع تعليمات التثبيت الخاصة بـ RXTX.
Javacomm API
مقدمة
واجهة برمجة تطبيقات Java الرسمية للاتصالات التسلسلية هي Javacomm API. API هذا ليس جزءًا من الإصدار القياسي Java 2 ، لذلك يجب تنزيل تطبيق API بشكل منفصل. لسوء الحظ ، لم يحصل Javacomm على ما يكفي من الاهتمام للشمس ، ولم يكن وقت الصيانة الفعلي طويلًا جدًا. قامت Sun بإصلاح بعض الأخطاء غير المهمة أحيانًا ، لكنها لم تفعل بعض الصيانة المهمة التي انتهت صلاحيتها منذ فترة طويلة.
يشرح هذا القسم التشغيل الأساسي ل API Javacomm. تم تبسيط رمز المصدر المقدم لعرض التركيز ، ويجب تحسينه في التطبيقات العملية.
رمز المصدر لهذا الفصل ليس هو رمز المثال الوحيد المتاح. العديد من الأمثلة تحتوي على تنزيلات javacomm. تتضمن هذه الأمثلة المزيد من المعلومات حول كيفية استخدامها من مستندات API الخاصة بها. لسوء الحظ ، ليس لدى Sun تعليمي حقيقي أو بعض مستندات التفسير. لذلك ، لفهم آلية واجهة برمجة التطبيقات هذه ، فإن تعلم هذه الأمثلة يستحق ذلك ، وما زلت بحاجة إلى تعلم وثيقة API هذه. ولكن أفضل طريقة هي تعلم هذه الأمثلة واستخدامها. نظرًا لعدم وجود تطبيقات سهلة للاستخدام وفهم نموذج البرمجة في واجهات برمجة التطبيقات هذه ، عادة ما يتم هجوم واجهات برمجة التطبيقات. بالمقارنة مع سمعتها ووظائفها ، فإن واجهة برمجة التطبيقات هذه أفضل ، لكن هذا عادل.
يستخدم API آلية رد الاتصال لإخطار البيانات الجديدة للمبرمج. هذه أيضًا فكرة جيدة لتعلم هذه الآلية ، بدلاً من الاعتماد على منفذ الاستقصاء. على عكس واجهات رد الاتصال الأخرى في Java (مثل: في الواجهة الرسومية) ، تتيح هذه الواجهة شاشة واحدة فقط للاستماع. إذا طلب مستمعون متعددون بعض الحوادث ، فيجب تنفيذ جهاز المراقبة الرئيسي عن طريق توزيع المعلومات على مستمعين ثانويين آخرين.
تنزيل وتثبيت
تحميل
تشير صفحة الويب الخاصة بـ Sun's Javacomm إلى عنوان التنزيل. بموجب هذا العنوان ، توفر Sun NARS (2007) إصدار Javacom 3.0 الذي يدعم Solaris/SPARC ، Solaris/X86 لديه Linux X86 بالفعل. تتطلب التنزيلات حساب شركة Sun. توفر صفحة التنزيل رابطًا إلى صفحة التسجيل. الغرض من التسجيل غير واضح. عند التسجيل ، يمكن للمستخدمين تنزيل JDK و JRES ، ولكن بالنسبة لهذه Javacomm تقريبًا ، نقلت شركة Sun Company الأحكام القانونية والقيود الحكومية على توزيع البرمجيات وصادراتها.
لم يعد المسؤول يوفر إصدار Windows من JavaComm ، وقد انتهك Sun استراتيجية موت المنتج الخاصة به -يمكن تنزيلها في منتجات Java. ولكن لا يزال بإمكانك تنزيل إصدار Windows من 2.0 من هذا (Javacom 2.0).
ثَبَّتَ
التثبيت مع تعليمات التثبيت مع التنزيل. ستتضمن بعض إصدارات Javacomm 2.0 تعليمين للتثبيت. الفرق الأكثر وضوحًا بين هذين الوصفين هو أن الخاطئ يستخدم في بيئة Java1.1 القديمة ، والفواصل المناسبة لـ Java 1.2 (JDK1.2.html) صحيحة.
قد لا يدرك مستخدمو Windows أنهم قاموا بتثبيت نسخة من نفس VM في أماكن مختلفة (عادةً من 3 إلى 4). قد تجلب بعض طلبات IDE و Java أيضًا JRE/JDK الخاصة بهم. لذلك ، يجب تثبيت Javacomm بشكل متكرر على VM (JDK و JRE) بحيث من أجل تطوير وتنفيذ التطبيقات التسلسلية.
IDE لديها طريقة IDE التمثيلية لتعلم مكتبة جديدة (الفصل والوثيقة). عادةً ما يجب تحديد مكتبة لا تحتاج إلى تحديد جافاكوم فقط من قبل IDE ، ولكن أيضًا يجب أيضًا تحديد كل مشروع باستخدام المكتبة. عند قراءة وثيقة IDE ، يجب أن تنتبه إلى الإصدار القديم من Javacomm 2.0 القديم ووثائق Javadoc API استخدم تخطيط Java 1.0 Java Doc. لم تعد بعض IDEs الحديثة تعرف هذه الهياكل ولا يمكنها دمج مستندات JavaComm2.0 في أنظمة المساعدة الخاصة بهم. في هذه الحالة ، هناك حاجة إلى متصفح خارجي لقراءة المستندات (الأنشطة الموصى بها)
بمجرد تثبيت البرنامج ، يوصى باختبار العينات ودليل Javadoc. من المنطقي إنشاء تطبيقات العينات وتشغيلها لتأكيد ما إذا كان التثبيت صحيحًا. يتطلب برنامج العينة عادة بعض التعديلات الصغيرة لتشغيلها على منصة خاصة (مثل معرف منفذ COM الذي أعاد كتابة الرموز الصلبة). عند تشغيل برنامج عينة ، من الأفضل أن يكون لديك بعض الأجهزة التسلسلية.
Serial_programming: توصيلات RS-232 و Serial_Programming: يوفر المودم والأوامر بعض المعلومات حول كيفية بناء بيئة تطوير التطبيق التسلسلية.
ابحث عن المنفذ التسلسلي المتوقع
يتم القيام بالأشياء الثلاثة الأولى عند استخدام البرمجة التسلسلية JavaComm
يتم الانتهاء من شعار الميناء للتعداد وتوقعات الاختيار في نفس الدورة:
استيراد javax.comm.* كـ "COM1" ... "comx" أيضًا ، وليس // بأسماء أجهزة UNIX الخاصة بهم "/dev/tty ...". بدلاً من ذلك ، اجعله مستخدمًا قابلاً للتكوين. معرف إذا كان // (أ) يشير إلى منفذ مسلسل (وليس موازيا) ، و // (ب) يطابق اسم التصميم. commptionidifier pid = (commptionIdifier) portablentifiers.nextElement () ؛ ) {system.err.println ("لا يمكن العثور على المنفذ التسلسلي" + WantsportName) ؛ قائمة الشعار التسلسلية الافتراضية التي يمكن الوصول إليها في برنامج التشغيل المتعلق بمنصة محددة ملزمة. لا يمكن في الواقع تكوين هذه القائمة من خلال JavaComm. الأساليب commptidIfier.adDportName () مضللة ، لأن فئة السائق مرتبطة بالمنصة ، وتنفيذها ليس جزءًا من واجهة برمجة التطبيقات العامة. بالاعتماد على برنامج التشغيل ، قد يتم تكوين/تمديد قائمة المنافذ هذه في برنامج التشغيل. لذلك ، إذا لم يجد Javacomm منفذًا معينًا ، فسيساعد بعض التغييرات على السائق أحيانًا. بمجرد العثور على معرف منفذ معين ، يمكنك استخدامه للحصول على المنفذ المتوقع: ////////////////////////////// 0 استخدم معرف المنفذ للحساب / / منفذ SerialPort = NULL ؛ E) ؛
تهيئة الميناء التسلسلي
تهيئة المنفذ التسلسلي بديهي للغاية. يمكنك تعيين معلمات الاتصال (معدل الخزاف ، بتة البيانات ، بتوقف ، والتحقق من الدمى) واحدة تلو الأخرى.
كجزء من التهيئة ، يمكن تكوين دفق الإدخال والإخراج للاتصال في المثال التالي.
استيراد java.io. ؛ NULL ؛ تيار Tenput: الكتابة فقط ") ؛ أنظمة Linux جديدة تعتمد Unicode ، لذلك قد يكون من الاحتياجات // تحديد مخطط الترميز المراد استخدامه.) ، أو ISO Latin 1 (8 بت // الاتصال نموذج قبول // Unicode لالتزامه. تحدث هنا // performwritecode () ؛ ميناء.
نقل البيانات البسيط ببساطة كتابة البيانات
يعد كتابة البيانات في المنفذ التسلسلي بسيطًا مثل Java IO الأساسي. ولكن لا تزال هناك بعض الاحتياطات عند استخدام بروتوكول AT Hayes:
الحافظة
للقيام:
اشرح كيفية مزج إدخال وإخراج الشخصيات الثنائية والأحرف في نفس الدفق
تعديل برنامج العينة لاستخدام التدفق
// اكتب إلى OPT.PRINT ("AT") ؛ OS.PRINT ("/r/n") ؛ الأمر الذي أرسلته إليه.قراءة بيانات بسيطة (دوران)
إذا كنت تستخدم عملية الكتابة بشكل صحيح (كما هو موضح أعلاه) ، فأنت بحاجة فقط إلى أمر بسيط.
// اقرأ استجابة الاستجابة = IS.ReadLine () ؛
أسئلة القراءة والكتابة البسيطة
القراءة والكتابة التسلسلية البسيطة الواردة في القسم السابق لها عيوب خطيرة للغاية. تتم جميع العمليات عن طريق منع I/O. هذا يعني أنه عندما لا توجد بيانات قابلة للقراءة ، أو أن المخزن المؤقت للإخراج ممتلئ (لا يمكن للجهاز قبول المزيد من البيانات):
لن يتم تعليق طريقة القراءة والكتابة (في المثال السابق OS.PRINT () أو IS.ReadLine ()) ، مما يتسبب في تعليق التطبيق. بتعبير أدق ، يتم حظر مؤشرات ترابط القراءة والكتابة. إذا كان هذا الموضوع هو مؤشر الترابط الرئيسي للتطبيق ، فسيتوقف التطبيق حتى يتم إصدار شروط الحظر (أي ، البيانات القابلة للقراءة للوصول إليها أو إعادة إعادة الجهاز).
ما لم يكن التطبيق هو الأكثر بدائية ، يتم حظر البرنامج. على سبيل المثال ، على الأقل يجب أن تسمح للمستخدمين بإلغاء عمليات الاتصال. هذا يتطلب استخدام الإدخال/الإخراج غير المتزامن غير المتزامن. ومع ذلك ، يعتمد JavaComm على نظام الإدخال/الإخراج القياسي (InputStream ، OutputStream) ، ولكن يمكنه استخدام تقنية تشوه معروضة لاحقًا.
إن "تقنية التشوه" التي تم تسهيلها هي دعم محدود قدمه Javacomm إلى I/O غير المتزامن من خلال آلية إخطار الحادث. ومع ذلك ، فإن الحلول الشائعة لتحقيق I/O غير المحفورة في Java لمنع I/O هي مؤشرات ترابط. هذا الحل لعملية كتابة المنافذ التسلسلية عملية ومجدية.
يجب أيضًا معالجة عمليات القراءة في موضوع منفصل ، لكن ليس من الضروري استخدام آلية إشعار حادث Javacomm. تلخيص:
قراءة التشغيل واستخدم إشعار الحدث و/أو موضوع منفصل ؛
استخدم مؤشرات ترابط منفصلة لكتابة العمليات ، ويمكن اختيار آلية إشعار الحدث.
الجزء التالي سيقدم بعض التفاصيل الأخرى.
مقدمة التواصل التسلسلي لقيادة الحدث
يوفر JavaComm API آلية إخطار الحدث للتغلب على المشكلات الناجمة عن حظر الإدخال/الإخراج. لكن هذه الآلية هي أيضا مشكلة في طريقة الشمس النموذجية هذه.
من حيث المبدأ ، يمكن للتطبيق تسجيل مراقبة الحدث على منفذ تسلسلي معين لتلقي الإخطارات لتلقي أحداث مهمة في هذا المنفذ. الحدثان الأكثر إثارة للاهتمام في قراءة البيانات وكتابة
javax.comm.serialportevent.data_available و javax.comm.serialportevent.output_buffer_empty.
لكن هذا يجلب أيضًا سؤالين:
قبل إجراء مناقشات مفصلة ، سيظهر القسم التالي الطريقة الرئيسية لتنفيذ وتسجيل معالج الأحداث التسلسلي. تذكر أن هناك معالج أحداث واحد فقط في منفذ تسلسلي ، وعليه التعامل مع جميع الأحداث الممكنة.
تعيين معالج الأحداث التسلسلية
استيراد javax.comm. المعلومات * على سبيل المثال ، عند اتباع بروتوكول معين. طريقة الحدث. event.geteventtype () CASE SerialPortex ؛ CASE SerialPortevent. / ** * التعامل مع الأحداث الفارغة. / تنفيذ بيانات WU هنا}/ ** * تعامل مع الأحداث المتاحة للبيانات.
بمجرد تنفيذ المستمع ، يمكن استخدامه لمراقبة حوادث تسلسلية محددة. للقيام بذلك ، تحتاج إلى إضافة مثيل للاستماع إلى المنفذ التسلسلي. بالإضافة إلى ذلك ، يتطلب استلام كل نوع حدث تطبيقات منفصلة.
Serialport Port = ... صور ServiceStlistener // سيتم إنشاء ///port.addeventristener (هذا) ؛ E) ؛
كتابة البيانات
إن كتابة البيانات بفصل منفصل هي غرض واحد فقط: لتجنب كتلة التطبيق بالكامل المقفل لأن المنفذ التسلسلي غير جاهز لكتابة البيانات.
إدراك عازلة حلقة آمنة بسيطة
استخدم مؤشر ترابط مستقل عن برنامج البرنامج الرئيسي لكتابة العمليات ، مما يشير إلى أن البيانات التي يجب كتابتها بطريقة ما يتم تقديمها إلى مؤشر ترابط الكتابة من مؤشر ترابط التطبيق الرئيسي (مؤشر الترابط الرئيسي). يمكن أن يستخدم هذا المخزن المؤقت للحدث غير المتزامن المشترك ، مثل صفيف البايت. بالإضافة إلى ذلك ، يحتاج البرنامج الرئيسي أيضًا إلى بعض الطرق لتحديد ما إذا كان يمكن كتابة البيانات أو المخزن المؤقت للبيانات في المخزن المؤقت للبيانات. إذا كان المخزن المؤقت للبيانات ممتلئًا ، فهذا يشير إلى أن المنفذ التسلسلي غير مستعد للكتابة ، وأن البيانات المراد إخراجها تصطف. يحتاج البرنامج الرئيسي إلى الاستفسار عن مساحة مجانية جديدة متوفرة في المخزن المؤقت للبيانات المشتركة. ومع ذلك ، في الفجوة بين البرنامج الرئيسي ، يمكنك القيام ببعض الأشياء الأخرى ، مثل تحديث واجهة المستخدم (GUI) ، وتوفير موجه أوامر يمكنه الخروج من البيانات ، وما إلى ذلك.
للوهلة الأولى ، تعتبر PipedInputStream/PipedOutputStream فكرة جيدة لهذا التواصل. ولكن إذا كان تدفق خط الأنابيب مفيدًا حقًا ، فإن Sun ليس الشمس. إذا لم يتم تنظيف PipedOutStream المقابل في الوقت المناسب ، فسيحظر PipedInputStream ، مما سيمنع مؤشر ترابط التطبيق. حتى لو كنت تستخدم مؤشرات ترابط مستقلة ، لا يمكنك تجنب ذلك. Java.nio.pipe لديه أيضا نفس المشكلة مثل هذا. يرتبط انسداده بالمنصة. ليس من الجيد جدًا تغيير الإدخال/الإخراج التقليدي باستخدام Javacomm إلى NIO.
يتم استخدام منطقة عازلة حلقة متزامنة بسيطة للغاية في هذه المقالة لنقل بيانات الموضوع. من المحتمل أن تستخدم التطبيقات في العالم الحقيقي المخزن المؤقت أكثر تعقيدًا. على سبيل المثال ، يتطلب إدراك العالم الحقيقي عازلة عملية من منظور تدفق الإدخال والمخرجات.
مثل هذا المخزن المؤقت الحلقي ليس خاصًا ، ولا توجد سمة خاصة في معالجة الخيط. إنه مجرد بنية بيانات بسيطة تستخدم هنا لتوفير مخزن مؤقت للبيانات. تم تنفيذ المخزن المؤقت هنا للتأكد من أن الوصول إلى بنية البيانات هو أمان مؤشر الترابط.
/*** مزامنة المخزن المؤقت. ** حجم المخزن المؤقت ** int المحمي ؛ حجم 1K. Clear () ؛} ** يتم الكتابة فوقها أثناء التشغيل العادي. ، ليس صحيحًا بعد قراءة البيانات من * المخزن المؤقت. int data () {inting end؟ . البيانات كما تملك. Param Array Hold Conting * @Param Off Data في Array * param n مقدار البيانات للكتابة ، بدءًا int n) {if (n <= 0) return 0 ؛ -end) ؛ end> = ابدأ؟ / ** * اقرأ أكبر قدر من البيانات من المخزن المؤقت. ) ؛} /** * اقرأ أكبر قدر من البيانات من المخزن المؤقت. / int read (byte data [] ، int Office LID: 0 = <= Off <data.length ؛ rem request in int int i = math.min (تبقى ، (end <start؟ buffer.length: end) -start) ؛ ؛} i = math.min (تبقى ، end> = end: end) ؛ ؛} return n -remain ؛}}}}}باستخدام هذا المخزن المؤقت الحلقي ، يمكنك الآن إرسال البيانات من مؤشر ترابط إلى مؤشر ترابط آخر. بالطبع ، خيوط أخرى هي طرق آمنة وغير محفوظة. النقطة الأساسية هنا هي أنه عندما يكون المخزن المؤقت ممتلئًا أو أن المخزن المؤقت فارغًا ، فإن قراءة البيانات وكتابتها لن تتسبب في انسداد.
وفقًا للمخطط التفصيلي لظهور معالج الأحداث لتوضيح القسم في "Create Serial Enterprise Processor" ، يمكنك استخدام المخزن المؤقت الحلقة المشتركة التي تم تقديمها في "المخزن المؤقت SAFE RING البسيط" لدعم الحدث Output_Buffer_empty. لا يدعم تطبيق Javacomm هذا الحدث ، لذلك قد لا يتم استدعاء هذا الرمز أبدًا. ولكن إذا كان بإمكانه ذلك ، فهو جزء من ضمان أفضل إنتاجية للبيانات ، لأنه يمكن أن يجعل المنفذ التسلسلي في حالة من الخمول لفترة طويلة.
يجب أن يكون الخطوط العريضة لمراقبة الحدث توفير طريقة OutpudbuffRempty.
Ringbuffer DataBuffer = ... OutputBuff على (حدث SerialPortEvent) {}يفترض المثال التالي أن وجهة البيانات هي ملف. عند وصول البيانات ، ستتم إزالتها من المنفذ التسلسلي وكتابتها في ملف الوجهة. هذا مجرد عرض دقيق ، لأنه في الواقع تحتاج إلى التحقق من شعار EOF للبيانات لتنظيم المودم (عادة ما يسمى "CAT") كوضع الأوامر.
استيراد javax.comm. *؛ ** * التعامل مع الحدث التسلسلي. SerialPortevent.data_available: // نقل جميع البيانات المتاحة حاليًا إلى الملف // {int c ؛ Catch (IoException ex) {... ) ؛}
تعديل عنصر التحكم في Demodulator
تهتم Javacomm بشكل أساسي بشأن المعالجة التسلسلية ونقل البيانات على المنفذ التسلسلي. إنه لا يفهم أو يوفر الدعم للبروتوكولات عالية المستوى ، مثل تعديل هايز وإلغاء التشكيل عادةً ما يتم استخدامه للتحكم في القطط على مستوى العملاء. هذه ليست مهمة جافاكوم ، كما أنها ليست خطأ.
مثل الأجهزة التسلسلية الخاصة الأخرى ، إذا كنت ترغب في التحكم في قطة مع JavaComm ، فيجب عليك كتابة الرمز الضروري على JavaComm. توفر صفحة "مودم جائزة Hayes و Outs" المعلومات الأساسية اللازمة لمعالجة القطط Hayes.
توفر بعض أنظمة التشغيل ، مثل Windows أو أمر التحكم في Linux لتكوين نوع خاص أو علامة تجارية لأوامر التحكم Cat ، معايير أكثر أو أقل. على سبيل المثال ، عادة ما يكون "برنامج تشغيل" Windows Cats مجرد مداخل مسجلة ، ويصف القطط الفردية (السائق الحقيقي هو برنامج تشغيل تعديل متسلسل عالمي). لا يمكن لجافاكوم الحصول على بيانات محددة لأنظمة التشغيل هذه. لذلك ، يجب توفير أداة منفصلة لـ Java للسماح للمستخدمين بتكوين تطبيق لاستخدام القطط الفردية ، أو إضافة بعض التعليمات البرمجية المقابلة للمنصة (المحلية).
RXTX
نظرة عامة ونسخة
نظرًا لأن Sun لم تقدم تطبيق Javacomm Reference لـ Linux ، فقد طور الأشخاص RXTX لـ Java و Linux. في وقت لاحق ، تم زرع RXTX إلى منصات أخرى. من المعروف أن أحدث إصدار من RXTX يعمل أكثر من 100 منصة ، بما في ذلك Linux و Windows و Mac OS و Solaris وأنظمة التشغيل الأخرى.
يمكن استخدام RXTX بشكل مستقل عن Javacomm API ، أو يمكن أيضًا استخدامه كخدمة API Commum Commum. إذا كان الأخير يستخدم حزمة تغليف تسمى JCL. عادةً ما يتم تعبئة JCL و RXTX مع Linux/Java ، أو JCL مدمجة تمامًا مع الرمز. لذلك ، قبل تنزيلها واحدًا تلو الآخر ، ألقِ نظرة على قرص مضغوط لإصدار توزيع Linux من القرص المضغوط.
نظرًا لدعم Sun المحدود والتوثيق غير المناسب لـ JavaComm ، فقد تخلى عن Javacomm API وتحول مباشرة إلى RXTX بدلاً من حزمة تعبئة JCL. ومع ذلك ، فإن مستندات RXTX نادرة جدا. على وجه الخصوص ، يحب مطورو RXTX إنشاء إصداراتهم ومحتوى حقيبة الفوضى (مثل استخدام أو غير مستخدم JCL المتكامل). بدءًا من الإصدار 1.5 ، يتضمن RXTX فئة بديلة من فئة Javacomm العامة. لأسباب قانونية ، لم يكونوا في حزمة Java.pomm ، ولكن تحت gui.io. ومع ذلك ، فإن الإصدارين الحاليين من محتوى التغليف مختلفان تمامًا.
لذلك ، إذا كنت ترغب في برمجة API Javacomm الأصلي
صن جافاكوم الطبعة العامة. عند كتابة هذه المقالة ، تكون هذه المقالة في الواقع حزمة UNIX (بما في ذلك دعم أنواع مختلفة من أنظمة UNIX ، مثل Linux أو Solaris) ، حتى على Windows ، يجب أيضًا استخدام حزمة UNIX لتوفير التنفيذ الشامل لـ java.com. سيتم استخدام Java فقط لتنفيذ هذا الجزء ، ولكن سيتم تجاهل مكتبة UNIX المحلية.
RXTX 2.0 ، من أجل الحصول على مزودي مختلفين في الإصدار العالمي من Javacomm ، على عكس تلك الموجودة تحت حزمة JavaComm. ومع ذلك ، إذا كنت ترغب فقط في استبدال الحزمة بـ GNU.IO ، فأنت بحاجة فقط إلى تحويل تطبيق JavaComm إلى تطبيق RXTX.
إذا تخليت عن أحد أعضاء العديد من الأعضاء الذين يصنعون JavaComm الذين خيبوا أملكهم من سلوك دعم النوافذ ، فيجب عليك نقل Javacomm إلى RXTX. كما ترون أعلاه ، هناك طريقتان لإكمال ذلك.
تم شرح العنصر الأول أعلاه سابقًا ، والبند الثاني بسيط للغاية.对于需要将JavaComm应用移植到RxTx 2.1上来的人,只需要将应用源代码中所有对“java.comm”包的引用换成“gnu.io”包,如果原始的JavaComm应用编写恰当,这里就没有其他的事情需要去做。
在Unix平台上,RxTx 2.1甚至提供了工具“contrib/ChangePackage.sh”去在源代码树形结构中执行全局的替换,这样的替换在其他的平台很容易使用支持重构功能的IDE(集成开发环境)来完成。