Gemeinsames Problem
Javacomm und RXTX haben bei der Installation verschiedene Dinge. Es wird dringend empfohlen, eine kleine Installation gemäß den Installationsanweisungen zu installieren. Wenn die Installationsanweisungen eine JAR -Datei oder eine freigegebene Bibliothek unter einem bestimmten Ordner erfordern, muss sie ernst genommen werden. Wenn eine bestimmte Datei oder ein bestimmtes Gerät über ein bestimmtes Eigentum oder ein bestimmtes Zugriff aufrecht muss, muss dies auch ernsthaft behandelt werden. Viele Installationsprobleme werden durch nicht gemäß den Anforderungen der Installationsanweisungen verursacht.
Es ist zu beachten, dass einige Versionen von Javacomm zwei Installationsanweisungen haben. Eine wird für Java 1.2 und später für eine Java 1.1 -Version verwendet. Die Verwendung der falschen Installationsanweisungen verursacht das Installationsergebnis, das nicht bearbeitet werden kann. Andererseits enthalten einige Versionen/Komponenten/Pakete von TXTX unvollständige Beschreibungen. In diesem Fall ist es erforderlich, den von RXTX veröffentlichten Quellcode zu erhalten, der vollständige Installationsanweisungen enthält.
Darüber hinaus ist zu beachten, dass das JDK -Installationsprogramm von Windows drei virtuelle Java -Maschinen enthält, sodass drei erweiterte Ordner vorhanden sind.
Außerdem ist auch der vierte JRE, der in der Verzeichnisstruktur von/Windows vorhanden ist. Javacomm sollte in JDK und allen öffentlichen JRE als Erweiterungen installiert werden.
Webstart
Javacomm
Ein häufiges Problem bei Javacomm und RXTX besteht darin, dass sie die Installation nicht über Java Webstart unterstützen: Javacomms berüchtigte liegt daran, dass Sie eine Datei namens Javax.com.Propertes auf das JDK LIB -Verzeichnis aufrufen müssen, und dies kann nicht über Java -Webstart abgeschlossen sein. Es ist sehr frustrierend, dass die Notwendigkeit dieser Datei einige unnötige Designs in Javacomm ist, und die Designer von Javacomm können dies leicht vermeiden. Sonne lehnte den Fehler hartnäckig ab, und sie betonten, dass dieser Mechanismus unerlässlich ist. Sie sprachen über Unsinn, besonders als sie Javacomm erwähnten, weil Java eine Dienstleisterarchitektur hatte, die sich lange auf solche Absichten spezialisiert hat.
Der Inhalt dieser Attributdatei enthält nur eine Zeile, die einen lokalen Java -Klassennamen enthält.
Driver = com.sun.win.win32Driver
Das Folgende ist eine Technik, mit der Javacomm über Web -Start bereitgestellt werden kann, um die Attributdatei zu ignorieren, die das Gehirn verletzt. Es gibt jedoch ernsthafte Mängel und kann beim Bereitstellen eines neueren Javacomm -Suns eine neue Version erstellen.
Schalten Sie zunächst den Sicherheitsmanager aus. Einige dumme Programmierer von Sun waren der Meinung, dass die Existenz der schrecklichen Javax.Comm.Properties -Dateien immer wieder cool war, insbesondere nachdem sie zum ersten Mal geladen wurden. Dies prüft nur, ob die Datei ohne andere Gründe existiert.
System.SetSecurityManager (NULL);
Als die Javacomm -API ursprünglich ursprünglich begonnen wurde, initialisierte der Fahrer manuell.
String -DROVEName = "com.sun.comm.win32Driver" oder als JNLP -ProPrTemCommdriver CommDriver = (CommDriver).
RXTX
RXTX muss das Eigentum ändern und auf einigen Plattformen auf das Recht des seriellen Geräts zugreifen. Dies ist auch eine Sache, die nicht über Webstart erfolgen kann.
Wenn das Programm beginnt, sollten Sie die Benutzer auffordern, die erforderlichen Einstellungen als Superbenutzer auszuführen. Insbesondere hat RXTX einen Modus -Matching -Algorithmus, um den "legalen" seriellen Geräteamen zu überprüfen. Wenn jemand nicht standardmäßige Geräte wie USB-to-Serial-Konverter verwenden möchte, macht dies oft die Dinge. Dieser Mechanismus kann durch Systemattribute blockiert werden. Weitere Informationen finden Sie in den Installationsanweisungen von RXTX.
Javacomm API
Einführung
Javas offizielle serielle Kommunikations -API ist die Javacomm -API. Diese API ist nicht Teil der Java 2 -Standardversion, daher muss die Implementierung dieser API separat heruntergeladen werden. Leider hat Javacomm nicht genug Aufmerksamkeit auf die Sonne bekommen, und die tatsächliche Wartungszeit war nicht sehr lang. Sun hat gerade gelegentlich einige unwichtige Insekten repariert, aber keine wichtige Wartung durchgeführt, die seit langem abgelaufen ist.
In diesem Abschnitt werden die Grundbetrieb der Javacomm -API erläutert. Der bereitgestellte Quellcode ist vereinfacht, um den Fokus anzuzeigen, und muss in praktischen Anwendungen verbessert werden.
Der Quellcode dieses Kapitels ist nicht der einzige verfügbare Beispielcode. Viele Beispiele enthalten Javacomm -Downloads. Diese Beispiele enthalten mehr Informationen darüber, wie es verwendet werden kann als die API -Dokumente. Leider hat Sun kein wirkliches Tutorial oder einige Erklärungsdokumente. Um den Mechanismus dieser API zu verstehen, lohnt es sich daher, diese Beispiele zu lernen, und Sie müssen diesen API -Dokument noch lernen. Der beste Weg ist jedoch, diese Beispiele zu lernen und zu verwenden. Aufgrund des Mangels an leicht zu verwendenden Anwendungen und dem Verständnis des Programmiermodells dieser APIs werden normalerweise APIs angegriffen. Im Vergleich zu ihrem Ruf und seiner Funktion ist diese API besser, aber das ist einfach.
Die API verwendet einen Rückrufmechanismus, um die neuen Daten des Programmierers zu benachrichtigen. Dies ist auch eine gute Idee, diesen Mechanismus zu lernen, anstatt sich auf den Anfragebort zu verlassen. Im Gegensatz zu anderen Callback -Schnittstellen in Java (z. B. in der grafischen Schnittstelle) kann diese Schnittstelle nur einen Monitor anhören. Wenn mehrere Hörer einige Vorfälle anfordern, muss das Hauptüberwachungsgerät implementiert werden, indem Informationen an andere sekundäre Hörer verteilt werden.
Herunterladen und Installation
herunterladen
Die Javacomm -Webseite von Sun verweist auf die Download -Adresse. Unter dieser Adresse bietet Sun derzeit (2007) die Javacom 3.0 -Version, die Solaris/SPARC unterstützt. Solaris/x86 hat bereits Linux x86. Downloads erfordert einen Bericht über eine Sonnenfirma. Die Download -Seite enthält einen Link zur Registrierungsseite. Der Zweck der Registrierung ist nicht klar. Bei der Registrierung können Benutzer JDK und JRES herunterladen, aber für diese fast trivialen Javacomm zitierte Sun Company rechtliche Bestimmungen und staatliche Beschränkungen für die Softwareverteilung und den Exporte.
Der Beamte stellt die Windows -Version von Javacomm nicht mehr zur Verfügung, und Sun hat seine eigene Produkt -Todesstrategie verletzt -kann in Java -Produkten heruntergeladen werden. Sie können jedoch die Windows -Version von 2.0 dennoch (Javacom 2.0) herunterladen.
Installieren
Installation mit den Installationsanweisungen mit Download. Einige Versionen von Javacomm 2.0 enthalten zwei Installationsanweisungen. Der offensichtlichste Unterschied zwischen diesen beiden Beschreibungen besteht darin, dass der falsche in der alten Java1.1 -Umgebung verwendet wird und der für Java 1.2 (JDK1.2.HTML) geeignete ist korrekt.
Windows -Benutzer erkennen möglicherweise nicht, dass sie die Kopie derselben VM an verschiedenen Stellen installiert haben (normalerweise 3 bis 4). Einige IDE- und Java -Anwendungen bringen möglicherweise auch ihre eigene Privat -JRE/JDK. Daher muss Javacomm wiederholt auf diese VM (JDK und JRE) installiert werden, damit serielle Anwendungen entwickelt und ausgeführt werden können.
IDE hat eine repräsentative IDE -Möglichkeit, eine neue Bibliothek (Klasse und Dokument) zu lernen. Normalerweise muss eine Bibliothek, in der Javacomm nicht nur von der IDE identifiziert werden muss, sondern auch jedes Projekt mit der Bibliothek identifiziert werden. Wenn Sie das IDE -Dokument lesen, sollten Sie auf die alte Version des alten Javacomm 2.0 achten, und die Javadoc -API -Dokumentation verwendet das Java 1.0 Java Doc -Layout. Einige moderne IDEs kennen diese Strukturen nicht mehr und können Javacomm2.0 -Dokumente nicht in ihre Hilfesysteme integrieren. In diesem Fall ist ein externer Browser erforderlich, um Dokumente zu lesen (empfohlene Aktivitäten)
Sobald die Software installiert ist, wird empfohlen, Proben und Javadoc -Verzeichnisse zu testen. Es ist sinnvoll, Beispielanwendungen zu erstellen und auszuführen, um zu bestätigen, ob die Installation korrekt ist. Das Beispielprogramm erfordert normalerweise einige kleine Anpassungen, um auf einer speziellen Plattform auszuführen (wie die COM -Port -Kennung, die Hardcodes neu geschrieben hat). Bei einem Beispielprogramm ist es am besten, eine serielle Hardware zu haben.
Serial_Programming: RS-232 Verbindungen und Serial_Programming: Modems und bei Befehlen enthält einige Informationen zum Erstellen einer seriellen Anwendungsentwicklungsumgebung.
Finden Sie den erwarteten seriellen Anschluss
Die ersten drei Dinge, die bei der Verwendung von Javacomm Serienprogrammierung durchgeführt werden müssen
Das Port -Logo der Aufzählungs- und Auswahlerwartungen ist im selben Zyklus abgeschlossen:
Javax.Comm.*; Als "com1" ... "comx" auch und nicht // durch ihre Unix-Geräte Namen "/dev/tty ...". Stattdessen konfigurieren Sie es. Kennung Wenn // (a) ein serieller (kein paralleler) Port angibt, und // (b) dem Entwurfsnamen entspricht. CommptionIdifier pid = (commptionIdifier) portablentifiers.NextElement (); ) {System.err.println ("Cant Find Wenig nicht" shoardsPortname); Standards auf Serienlogo -Liste der aufgehungbaren seriellen Logo in dem Treiber im Zusammenhang mit einer bestimmten Plattform, die gebunden ist. Diese Liste kann nicht über Javacomm konfiguriert werden. Methods CommptIdifier.Addportname () sind irreführend, da die Fahrerklasse mit der Plattform zusammenhängt und ihre Implementierung nicht Teil der öffentlichen API ist. Diese Portliste kann im Treiber im Treiber im Treiber konfiguriert/erweitert werden. Wenn Javacomm keinen bestimmten Port findet, helfen einige Änderungen am Treiber manchmal. Sobald eine bestimmte Port -Kennung gefunden wurde, können Sie sie verwenden, um den erwarteten Port: ////////////////////////// 0 zu erhalten für Konto // serialport port = null; e) System.
Initialisierungsanschluss
Die Initialisierung des seriellen Ports ist sehr intuitiv. Sie können die Kommunikationsparameter (Potter -Rate, Datenbit, Stopbit und Puppenüberprüfung) einzeln festlegen.
Als Teil der Initialisierung kann der Eingangs- und Ausgangsstrom der Kommunikation im folgenden Beispiel konfiguriert werden.
Java.io.*; ; null; // nur für Demo -Zwecke. Tenput-Stream: Nur Schreib- Modell draußen akzeptieren // Unicode für sein Commit. Hier passieren // reformreadwritecode (); //////////////////////. Port.
Einfache Datenübertragung einfach Daten schreiben
Das Schreiben der Daten in den seriellen Port ist so einfach wie das grundlegende Java IO. Es gibt jedoch immer noch einige Vorsichtsmaßnahmen, wenn Sie das At AT Hayes -Protokoll verwenden:
Zwischenablage
Zu tun:
Erklären Sie, wie Sie den Eingang und die Ausgabe von Binär- und Zeichen im selben Strom mischen
Ändern Sie das Beispielprogramm, um den Fluss zu verwenden
// in die Ausgabe einschreiben. Befehl, die Sie an sie gesendet haben.
Einfaches Daten lesen (Rotation)
Wenn Sie den Schreibvorgang korrekt verwenden (wie oben beschrieben), benötigen Sie nur einen einfachen Befehl.
// Lesen Sie die ResponseString -Antwort = is.readline ();
Einfaches Lesen und Schreiben Fragen
Das im vorherige Abschnitt gezeigte einfache serielle Lesen und Schreiben hat sehr schwerwiegende Defekte. Alle Operationen werden durch Blockieren von i/o durchgeführt. Dies bedeutet, dass, wenn es keine lesbaren Daten gibt oder der Ausgangspuffer voll ist (das Gerät kann nicht mehr Daten akzeptieren):
Lesen- und Schreibmethode (im vorherigen Beispiel ist os.print () oder is.readline ()) kehrt nicht zurück, wodurch die Anwendung ausgesetzt wird. Genauer gesagt werden die Lesen- und Schreibfäden blockiert. Wenn dieser Thread der Hauptfaden der Anwendung ist, wird die Anwendung gestoppt, bis die Blockierungsbedingungen veröffentlicht werden (dh lesbare Daten, die zu erreichen sind oder das Gerät wiederhergestellt wird).
Sofern die Anwendung nicht die primitivste ist, ist das Programm blockiert. Zumindest muss es Benutzern zumindest ermöglichen, Kommunikationsvorgänge zu stornieren. Dies erfordert die Verwendung von nicht blockierenden E/O oder asynchronem E/O. Javacomm basiert jedoch auf dem Standard -E/A -System (InputStream, OutputStream), kann jedoch eine später angezeigte Deformationstechnik verwenden.
Die sogenannte "Deformationstechnik" ist eine begrenzte Unterstützung des Javacomm für den asynchronen I/O -Mechanismus. Die gemeinsamen Lösungen, um nicht blockierende E/A in Java zu realisieren, um E/A zu blockieren, sind jedoch Threads. Diese Lösung für den seriellen Port -Schreibbetrieb ist praktisch und machbar.
Lesevorgänge sollten auch in einem separaten Thread verarbeitet werden, es ist jedoch nicht erforderlich, den Javacomm -Vorfall -Benachrichtigungsmechanismus zu verwenden. Zusammenfassen:
Operation lesen und Ereignisbenachrichtigungen und/oder separates Thread verwenden;
Verwenden Sie separate Threads, um Operationen zu schreiben, und der Ereignisbenachrichtigungsmechanismus kann ausgewählt werden.
Der nächste Teil wird einige weitere Details einführen.
Event -Antrieb serielle Kommunikation Einführung
Die Javacomm -API bietet einen Ereignisbenachrichtigungsmechanismus, um die Probleme zu überwinden, die durch das Blockieren der I/O verursacht werden. Dieser Mechanismus ist jedoch auch bei dieser typischen Sonnenmethode problematisch.
Im Prinzip kann ein Antrag einen Ereignismonitor an einem bestimmten seriellen Port registrieren, um Benachrichtigungen zu erhalten, um wichtige Ereignisse in diesem Port zu erhalten. Die zwei interessantesten Ereignisse des Lesens und Schreibens sind Daten
javax.comm.serialPorpent.data_available und javax.comm.SerialPorpent.output_Buffer_Empty.
Dies bringt aber auch zwei Fragen:
Vor der Durchführung detaillierter Diskussionen zeigt der nächste Abschnitt die Hauptmethode zur Implementierung und Registrierung eines seriellen Ereignisprozessors. Denken Sie daran, dass es in einem seriellen Port nur einen Ereignisverfahren gibt und sich mit allen möglichen Ereignissen befassen muss.
Serienereignisprozessor festlegen
Javax.Comm. Information * über die Kommunikation, z. B. ein bestimmtes Kommunikationsprotokoll Methode. Event.GetEventType ()) {case serialPortevent.output_Empty: outputbuferEmpty (Ereignis); ; Break-SerialPorter. / ** * Ausgangspuffer leere Ereignisse. / Implementieren Sie Wu -Daten hier}/ ** * Verwandte Daten verfügbare Ereignisse. Sobald der Hörer implementiert ist, kann er verwendet werden, um bestimmte serielle Vorfälle zu überwachen. Dazu müssen Sie eine Instanz des Anhörens des seriellen Ports hinzufügen. Darüber hinaus erfordert der Empfang jedes Ereignisarts separate Anwendungen.
Serialport Port = ...; Images Die serviceVerlistener -Schnittstelle // wird ///port.addeVentristener (dies) eingerufen. e); ;
Daten schreiben
Das Schreiben von Daten mit separater Trennung ist nur ein Zweck: Um den gesamten Anwendungsblock gesperrt zu vermeiden, da ein serieller Port nicht bereit ist, Daten zu schreiben.
Eine einfache Realisierung von Faden -sicherer Ringpuffer
Verwenden Sie einen von der Hauptprogramme unabhängigen Thread, um Operationen zu schreiben, um anzuzeigen, dass die Daten, die in irgendeiner Weise geschrieben werden müssen, aus dem Haupt -Anwendungs -Thread (Haupt -Thread) in den Schreibbeauftragten übermittelt werden. Dies kann einen gemeinsam genutzten asynchronen Ereignispuffer wie ein Byte -Array verwenden. Darüber hinaus benötigt das Hauptprogramm auch eine Möglichkeit, festzustellen, ob die Daten oder der Datenpuffer in den Datenpuffer geschrieben werden können. Wenn der Datenpuffer voll ist, zeigt er an, dass der serielle Port nicht bereit ist, Vorgänge zu schreiben, und die zu ausgegebenen Daten sind Warteschlangen. Das Hauptprogramm muss neue freie Speicherplatz im freigegebenen Datenpuffer erkundigen. In der Lücke zwischen dem Hauptprogramm können Sie jedoch einige andere Dinge erledigen, z.
Auf den ersten Blick ist PipeDInputStream/PipeDoutputStream eine gute Idee für diese Kommunikation. Aber wenn der Pipeline -Fluss wirklich nützlich ist, dann ist die Sonne keine Sonne. Wenn der entsprechende PipeDoutStream nicht rechtzeitig gereinigt wird, blockiert PipeDInputStream, wodurch der Anwendungsgewinde blockiert wird. Selbst wenn Sie unabhängige Themen verwenden, können Sie es nicht vermeiden. Java.nio.pipe hat auch das gleiche Problem wie dieses. Die Behinderung hängt mit der Plattform zusammen. Es ist nicht sehr gut, die traditionelle E/A -Verwendung von Javacomm in NIO zu ändern.
In diesem Artikel wird in diesem Artikel ein sehr einfacher Synchron -Ring -Pufferbereich für die Übertragung von Threaddaten verwendet. Anwendungen in der realen Welt verwenden wahrscheinlich komplexere Puffer. Zum Beispiel erfordert die Verwirklichung einer realen Welt einen Betriebspuffer aus der Perspektive des Eingangs- und Ausgangsflusss.
Ein solcher Ringpuffer ist nicht besonders und es gibt kein besonderes Attribut in der Thread -Verarbeitung. Es ist nur eine einfache Datenstruktur, die hier verwendet wird, um Datenpuffer bereitzustellen. Der Puffer wurde hier implementiert, um sicherzustellen, dass der Zugriff auf die Datenstruktur die Sicherheit der Thread ist.
/*** Synchronisierte Raing -Puffer. ** Größe des Puffers ** / geschützte int -Größe; Größe von 1k. Clear ();} / ** * Löschen Sie den Pufferinhalt. Seien Sie während des normalen Betriebs überschrieben. Es ist nicht gültig, wenn Daten aus dem * Puffer gelesen werden oder den Puffer schreiben. Int data () {return start <= Ende? . Daten wie besitzt. Param -Datenarray Halten Sie Daten zum Schreiben * @Param Off -Offering von Daten in Array * @param n Datenmenge zum Schreiben, beginnend ab. Int n) {if (n <= 0) return 0; ) -end); Ende> = Start? } / ** * Lesen Sie so viele Daten wie Besitz aus dem Puffer. Länge);} /** * Lesen Sie so viele Daten wie Besitz aus dem Puffer. */ int read (Bytedaten [], int Office Deckel: 0 = <= off <data.length; Ausnahme werfen, wenn nicht int i = math.min (bleiben, (Ende <start? puffer.length: end) -Start ); 0;} i = math.min (bleiben, ende> = 0: Ende); i;} return n -Remain;}}}}}Durch die Verwendung dieses Ringpuffers können Sie jetzt Daten von einem Thread zu einem anderen Thread senden. Natürlich sind andere Themen sicher und nicht blockierende Methoden. Der entscheidende Punkt hier ist, dass, wenn der Puffer voll ist oder der Puffer leer ist, das Lesen und Schreiben der Daten keine Blockade verursacht.
Gemäß der Umrisse der Ereignisprozessordemonstration der Abschnittdemonstration im "Serienunternehmensprozessor erstellen" können Sie den in dem "einfachen, thread sicheren Ringpuffer" eingeführten gemeinsam genutzten Ringpuffer verwenden, um das Ereignis output_buffer_empy zu unterstützen. Nicht alle Javacomm -Implementierung unterstützt dieses Ereignis, daher wird dieser Code möglicherweise nie aufgerufen. Wenn dies jedoch möglich ist, ist dies Teil der Sicherstellung des besten Datendurchsatzes, da der serielle Port für eine lange Zeit in einem Zustand der Müßigheit gestalten kann.
Der Umriss des Ereignismonitors muss eine Methode für OutputBuffReMpty () bereitstellen.
RingBuffer Databuffer = ...; OutputBuff on (SerialPorPent Ereignis) {}Das folgende Beispiel geht davon aus, dass das Ziel der Daten eine Datei ist. Wenn die Daten eingehen, wird sie aus dem seriellen Port entfernt und in die Zieldatei geschrieben. Dies ist nur eine raffinierte Ansicht, da Sie tatsächlich das EOF -Logo der Daten überprüfen müssen, um das Modem (normalerweise als "Katze" bezeichnet) als Befehlsmodus zu regulieren.
Javax.Comm. *; ** * Serienereignis handeln. SerialPorEvent.data_available: // // alle aktuell verfügbaren Daten in die Datei // try {int c; Catch (ioException ex) {...} break; );}
Ändern Sie die Demodulatorsteuerung
Javacomm ist hauptsächlich besorgt über eine serielle Verarbeitung und Übertragung von Daten am seriellen Anschluss. Es versteht oder bietet keine Unterstützung für Protokolle mit hoher Ebene, wie z. B. Hayes -Modulation und Demodulationsanweisungen werden normalerweise zur Kontrolle von Katzen von Kunden -Level verwendet. Dies ist weder Javacomms Aufgabe noch ein Fehler.
Wie bei anderen speziellen Seriengeräten müssen Sie, wenn Sie eine Katze mit Javacomm steuern möchten, den erforderlichen Code auf Javacomm schreiben. Die Seite "Hayes-Commposition-Modems und an Befehlen" enthält die erforderlichen grundlegenden Informationen, um Hayes Cats zu verarbeiten.
Einige Betriebssysteme wie Windows oder einen Linux -Steuerbefehl zur Konfiguration eines speziellen Typs oder einer Marke von Cat Control -Befehlen bieten mehr oder weniger Standards. Beispielsweise besteht der "Treiber" von Windows -Katzen normalerweise nur registrierte Eingänge und beschreibt einzelne Katzen (der eigentliche Treiber ist ein universeller Serienmodulations -Treiber). Javacomm kann keine spezifischen Daten solcher Betriebssysteme erhalten. Daher muss entweder ein separates Java -Tool bereitgestellt werden, damit Benutzer eine Anwendung für die Verwendung einzelner Katzen konfigurieren oder einen entsprechenden Plattformcode (lokal) hinzufügen können.
RXTX
Übersicht und Version
Da Sun keine Javacomm -Referenzimplementierung für Linux bereitstellte, haben die Menschen RXTX für Java und Linux entwickelt. Später wurde RXTX auf andere Plattformen transplantiert. Es ist bekannt, dass die neueste Version von RXTX mehr als 100 Plattformen ausführt, darunter Linux, Windows, Mac OS, Solaris und andere Betriebssysteme.
RXTX kann unabhängig von der Javacomm -API verwendet werden, oder es kann auch als sogenannter Java Commum -API -Dienst verwendet werden. Wenn letzteres ein Verpackungspaket namens JCL verwendet. JCL und RXTX sind normalerweise mit Linux/Java gepackt, oder JCL ist vollständig in den Code integriert. Schauen Sie sich daher vor dem Herunterladen nacheinander die CD der Linux -Distribution -Version von CD an.
Aufgrund der begrenzten Unterstützung von Sun und der unangemessenen Dokumentation von Javacomm gab er die Javacomm -API auf und wandte sich direkt um RXTX anstelle des JCL -Verpackungspakets. Die Dokumente von RXTX sind jedoch sehr selten. Insbesondere RXTX -Entwickler machen ihre Versionen und Tascheninhalte gerne zu einem Durcheinander (z. B. Verwendung oder nicht verwendete integrierte JCL). Ab Version 1.5 enthält RXTX eine alternative Klasse der öffentlichen Javacomm -Klasse. Aus rechtlichen Gründen befanden sie sich nicht im Java.pomm -Paket, sondern unter GUI.IO. Die beiden vorhandenen Versionen des Verpackungsinhalts ist jedoch sehr unterschiedlich.
Wenn Sie daher die ursprüngliche Javacomm -API programmieren möchten
Sun Javacomm General Edition. Beim Schreiben dieses Artikels ist das UNIX -Paket (einschließlich der Unterstützung verschiedener Arten von UNIX -Systemen wie Linux oder Solaris), auch unter Windows, dieses UNIX -Paket muss auch verwendet werden, um eine universelle Implementierung von Java.Comm bereitzustellen. Die Verwendung von Java, um diesen Teil zu implementieren, wird verwendet, aber die lokale Bibliothek von UNIX wird ignoriert.
RXTX 2.0, um verschiedene Anbieter in der universellen Version des Javacomm zu haben, im Gegensatz zu dem unter dem Javacomm -Paket. Wenn Sie das Paket jedoch nur durch GNU.IO ersetzen möchten, müssen Sie nur eine Javacomm -Anwendung in eine RXTX -Anwendung konvertieren.
Wenn Sie eines von vielen Mitgliedern der vielen Mitglieder aufgeben, die Javacomm machen, die von dem Verhalten der Unterstützung von Windows enttäuscht sind, sollten Sie Ihr Javacomm auf RXTX übertragen. Wie Sie oben sehen können, gibt es zwei Möglichkeiten, dies zu vervollständigen.
Der erste Punkt oben wurde früher erläutert und der zweite Artikel ist recht einfach.对于需要将JavaComm应用移植到RxTx 2.1上来的人,只需要将应用源代码中所有对“java.comm”包的引用换成“gnu.io”包,如果原始的JavaComm应用编写恰当,这里就没有其他的事情需要去做。
在Unix平台上,RxTx 2.1甚至提供了工具“contrib/ChangePackage.sh”去在源代码树形结构中执行全局的替换,这样的替换在其他的平台很容易使用支持重构功能的IDE(集成开发环境)来完成。