• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

RS232 Schnittstelle vom Browser ansteuern

xorg1990

New member
Hallo, ich habe mal wider was ganz spezielles.

Ich möchte für mein "QRSSB" Projekt die com/RS232(Heute RS-485) Schnittstelle ansteuern uns zwar nur RTS und/oder DTR.
Also Nur die bits auf HIGH setzen. Damit sage den Transeiver "jetzt wird gesendet ".

Das erste was ich via google gefunden habe ist jUART
Basiert aber auf NPAPI Plugins und ist veraltet.

In Chrome gibt es eine Erweiterung Serial
Das klingt ganz vielversprechend aber ich kann den docs nicht entnehmen wie ich RTS/DTR auf HIGH setze.?

Was mache ich mit FireFox??
Es gibt noch die Möglichkeit des Native Messaging

Eine weitere Möglichkeit ist das StrokeReader ActiveX Plugin
Davon gibt es eine Kostenfreie demo Version.
Dann sperre ich aber Linux und Mac user aus.
Es gibt dann ein Plugin IE Tab, was Active X in Chrome und FF, usw. ermöglicht. Aber ob dann noch die Web Audio Api funktioniert weiß ich ebenfalls nicht genau.

Über Edge und Safari hab ich noch nicht nachgedacht , aber ich möchte die Anwendung einen breitrandigen Spektrum zu Verfügung stellen und nicht sagen ihr braucht Chrome und Windows.

Asso, das HTML file wird lokal ausgeführt, kann aber auch online ausgeführt werden. Stelle beides zu Verfügung.#

Die Kernfrage ist:
Wie setze ich RTS/DTR auf HIGH in möglicht Firefox, Chrome, Edge und Safari. In möglichst jeden OS, Windows bevorzugt?

Was ist eigentlich mit Java Applets und Flash?
 
Zuletzt bearbeitet:
RTS und DTR solltest du eigentlich nie per Hand setzen müssen. Das übernimmt doch normalerweise der Treiber.

Aber ich sehe deinen Ansatz, über JS im Browser die serielle Schnittstelle anzusprechen, sehr fragwürdig. Wenn dann würde ich hier wirklich über Flash gehen (wenn das überhaupt geht - hab' da keine Erfahrung).
Aber bevor du erwartest, dass die Benutzer ein so mächtiges Plugin installieren, würde ich einfach selber ein kleines Programm schreiben, das die dann installieren können. Sonst könnte ja jede beliebige Webseite mit den seriellen Schnittstellen (ja, und dazu gehört auch USB!) machen, was sie will.
 
kkapsner schrieb:
RTS und DTR solltest du eigentlich nie per Hand setzen müssen. Das übernimmt doch normalerweise der Treiber.
Klingt einleuchtend und wenn es kein Treiber gibt? RTS bzw DTR, je nach Transceiver schalten eigentlich nur ein Relay/Transistor auf Durchgang. Deswegen nutz man kein USB, da gibt es nur Strom und Datenports.
csm_KENWOOD_Interface_f7dc585cea.jpg

kkapsner schrieb:
Wenn dann würde ich hier wirklich über Flash gehen (wenn das überhaupt geht - hab' da keine Erfahrung).
Mit flash gehts nicht, zumiest findet Google nichts gescheites. Java Applets sind ein Alternative.
Aber der Umgang mit Java Applets ist auch ein Gräuel.


=kkapsner schrieb:
würde ich einfach selber ein kleines Programm schreiben, das die dann installieren können.
In wie fern?
- Als separates C Programm? Keine Change zu viele Betriebssysteme.
- Als natives addon und dann via native Messaging darauf zu greifen?
- oder als java applet?


kkapsner schrieb:
Sonst könnte ja jede beliebige Webseite mit den seriellen Schnittstellen (ja, und dazu gehört auch USB!) machen, was sie will.
Naja, usb und die alte com Schnittstelle sind schon noch ein unterschied. aber stimmt wenn man in Chrome das das native addon "serial" aktivert, dann kann man darauf zugreifen. oder es kommt ein Fenster das sagt ob des Fenster auf com port A zugreifen möchte wie bei createMediaStreamSource().

Apropos USB:
USB im Browser wird kommen:
https://wicg.github.io/webusb/

Zum einen gibt es im googel Store schon DVB-T Programme bzw. Radio Empfänger.
https://github.com/google/radioreceiver
usb steuerung in JS:
https://github.com/google/radioreceiver/blob/master/extension/rtl2832u.js
3D Drucker/Scanner sind auch im Kommen.
Eye-Tracking, VR-Brillen
 
Zuletzt bearbeitet:
kkapsner schrieb:
Ich hätte jetzt eher an ein nodejs oder Python-Skript gedacht, dass der Benutzer starten muss, bevor er deine Seite nutzen kann. Über WebSockets kannst du dann mit diesem reden.
Jagut, dann müsste ich jeden sagen ihr müsste node js installieren. Dann hätte ich gleich alles in Java programmiert. Aber Java ist und beliebt mir ein greul. Auch die JRE ist immer so ein schwarzes loch auf den System. Andauernd Updates und wenn man es mal verpasst Virus.

Dann doch lieber ein C Programm was sich dann via pipes mit den Browser unterhält.

Mittlerweile hab ich ein Problemen, Die Transceiver schalten nicht den lineIn auf Durchgang wenn am am Mikrofon auf den Tester drückt. Mann muss also den weg über rs232 machen, wenn das Signal aus dem Computer kommt.

kkapsner schrieb:
Gut - ich würde es trotzdem nicht machen.
Jedem das seine.

Eins noch, ich verstehe die Aussage nicht ganz:
You must add the "serial" permission to the manifest file:
https://developer.chrome.com/apps/app_serial

So wie ich das verstehe gibt es ein File namens manifest.json wo ich diese Zeile hinzufügen muss.
Ich finde aber viele Manifest.json welche ist den nun gemint?

Habe alle geöffnet aber keines entspricht annähernd den Schema:
https://developer.chrome.com/extensions/manifest
Die meisten enthalten hash Zeugs.
 
xorg1990 schrieb:
:p

tsseh schrieb:
Aha und wo muss ich die dann speichern? Oder muss der user die erst importieren im Reiter extensions?

tsseh schrieb:
die du ja überhaupt nicht machen willst.
Wer sagt das?

-Es würde nur meine Seite betreffen
-Es ist ein Afu Projekt.
-Sowieso, muss jetzt eine Lösung her, sonst kann ich/andere nicht senden.

Denke gerade über Perl oder Python nach. VB Script / Linux shell würde auch gehen.
Immerhin noch besser als Java.

Der nachteil wäre ich brauch ebenfalls eine manifest um die pieps zu ermöglichen. Würde dann aber in chrome und Firefox funktionieren.

Java hat den vorteil das redet ohne weiteres mit Javascript.
 
Asso, jetzt versteh ich. Man schreibt also seine eigne app.
Ich glaube mit einem kleinen Java Applet fahre ich am besten. Zumal JS direkt mit den Applet reden kann.
 
Ich glaube mit einem kleinen Java Applet fahre ich am besten.
Die Sicherheitsanforderungen sind extrem hochgeschraubt worden. Ein Java Applet zu erstellen und im Browser zuzulassen ist mittlerweile ein halber Studiengang. :mad:
Und es ist auch nicht zukunftstauglich. Müsste ich nochmal genau recherchieren ob Oracle oder die Browserhersteller das einstampfen wollten.
Nicht der Java Code an sich sondern der ganze Zusatzmist Manifest, Berechtigungen, Gestattung im Browser, Softwarezertifikat usw.

Ich würden sehr gern mitarbeiten, wenn ich darf.
Hab da schon ein bisschen Erfahrung gesammelt. :confused:
 
mikdoe schrieb:
Die Sicherheitsanforderungen sind extrem hochgeschraubt worden. Ein Java Applet zu erstellen und im Browser zuzulassen ist mittlerweile ein halber Studiengang.
Echt so schlimm. Ich kenne das Thema noch vom ersten WEB_SDR
Der war auch Java basierend, weil es zu der Zeit noch keine Web audio api gab, aber in Firefox die Audio data api. Aber Chrome User waren ausgesperrt oder nutzten Java.
Irgendwann war dann Gottseidank die web audio api da, wiederum nur in Chrome:mad: kam dann erst später in FF hinzu und die Bugs am anfrag Junge Junge.
WebSDR problem with the latest Java update


mikdoe schrieb:
Und es ist auch nicht zukunftstauglich.
Muss es ja nicht, in der Zeit kommt die USB API, dann kann man mit einem usb zur rs232 Dongle hantieren.:icon7:

mikdoe schrieb:
Ich würden sehr gern mitarbeiten, wenn ich darf.
Hab da schon ein bisschen Erfahrung gesammelt.
Damit habe ich kein Problem.
Ist ein Funkamateur Projekt.
Ziel und Zweck des Amateurfunkdienstes ist die Wissenschaft und Forschung, Bildung und Erziehung, Völkerverständigung, aber auch die Unterstützung der Behörden beim Aufbau von Nachrichtenverbindungen in Katastrophenfällen.
https://de.wikipedia.org/wiki/Ham_Spirit

Ziel ist es für ein möglichst breites Spektrum an Systemen, ein Software zu entwickeln die Sprache auf eine Bandbreite von ~300Hz drückt. Realtime Gespräche finden nicht statt .
Das habe ich nun schon gelöst.

Problem ist nun den rs232 Port in gang zu bekommen.
Das Applet muss auch nicht viele können nur DTR oder RTS auf high stellen wenn JS loslegt mit senden.
Problem ist die Serielle Schnittstelle in Java zu bespaßen ist auch nicht ohne weiters möglich:
There are some tricks involved in getting the Java Communications API to correctly interact with the Windows system. Among the items that you download from Sun are three very important files:
The Java Communications API: A Working Example - By Rick Proctor

Geschreiben steht:
win32com.dll should be placed in:

%JAVA_HOME%/bin

%JAVA_HOME%/jre/bin

%windir%System32
Kann man das nicht auch das Applet erledigen lassen?
Also gucken ob Datei schon vorhanden wenn nicht kopieren.
Die Datei liegt auf den host. Besser noch gleich mit in die jar Datei.
64bit Systeme müsse auch noch beachtet werden.
 
via pipes mit den Browser unterhält.
Da würde ich gerne wissen, wie das geht.

Also gucken ob Datei schon vorhanden wenn nicht kopieren.
Die Datei liegt auf den host.
Du willst in die System32 eine dll von einem Server reinkopieren... von einem Applet... du willst das Applet also mit Administrator-Rechten laufen lassen... wirklich?

Ich würde da wirklich irgendwas lokal installieren lassen... z.B. nodejs oder python + ein kleines Kommunikationsskript. Alles andere klingt irgendwie nach einem Sicherheitsalbtraum.
 
kkapsner schrieb:
Da würde ich gerne wissen, wie das geht.
In Chrome geht das via Native Client:
https://developer.chrome.com/native-client

Ob das direkt pipes sind weiß ich nicht. Dafür gibt es dann eine andre manifest.
https://developer.chrome.com/native-client/reference/nacl-manifest-format

Sicherheitsalbtraum.
Die Eloquenz:eek: Sicherheitsalbtraum. das hört sich geil an.
Java Applets laufen in einer sandbox somit fällt Der Systemzugriff ins Wasser. Die Serielle Schnittstelle wohl damit auch.:(

Ich habe schon darüber nachgedacht den Midi Anschluss aufzuopfern.
Allerdings hat das kaum einer. USB zu MIDI interface kosten Geld UND das midi Interface ist was kommerzielles hat nicht mit Afu zu tun. Das wird nicht gern Angesehen. (midi Anschlüsse gibt es auch im rs-232 Format. Die Sampler aus dem 198ern waren damit ausgestattet. kann man schön schaden machen)
audiophile_2496.jpg

e-mu-emax-rack-578889.jpg
 
kkapsner schrieb:
Ach mit einem Add-on/plugin...
Ja, ich war falsch sry:beaten: nicht native Client sondern Native Messaging
Chrome starts each native messaging host in a separate process and communicates with it using standard input (stdin) and standard output (stdout).
https://developer.chrome.com/extensions/nativeMessaging

In Firefox:
https://wiki.mozilla.org/WebExtensions/Native_Messaging
The host manifest file will contain:

{
"name": "com.my_company.my_application",
"description": "My Application",
"path": "C:\\Program Files\\My Application\\chrome_native_messaging_host.exe",
"type": "stdio",
"allowed_extensions": [ "myextension@mycompany.com" ]
}

- - - Aktualisiert - - -

In Linux kann man direkt pipen:
how to make firefox read stdin - Unix & Linux Stack Exchange
 
So. Falls es jemanden interessiert, die com Ports sind in JAVA Linux/Ubuntu ruck zuck eingerichtet.

Schritt 1 RXTX installieren:
apt-get install librxtx-java

Schritt 2:
Chmod rechte setzen:
sudo chmod a+rw /dev/ttyS?
Wobei ? alle verfügbaren ports auswählt

Example ausführen:
Code:
import gnu.io.*; // RXTX
//import javax.comm.*; // SUN
import java.util.Enumeration;


public class ErsteSchritte {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		System.out.println("Program started");
		
		//System.out.println(java.library.path);
	    CommPortIdentifier serialPortId;
	    //static CommPortIdentifier sSerialPortId;
	    Enumeration enumComm;
	    //SerialPort serialPort;

	    enumComm = CommPortIdentifier.getPortIdentifiers();
	    while (enumComm.hasMoreElements()) {
	     	serialPortId = (CommPortIdentifier) enumComm.nextElement();
	     	if(serialPortId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
	    		System.out.println(serialPortId.getName());
	    	}
	    }

		System.out.println("Finished successfully");
	}
}
Ausgegeben wird:
Program started
/dev/ttyS0
Finished successfully

Habe ein 64bit Linux und musste nix neu Compilieren.

Asso, das gnu.io.* package findet man unter /usr/share/java/RXTXcomm-2.2pre2.jar

- - - Aktualisiert - - -

Ich weiß das Thema nervt.
Weiß zufällig jemand wie man variablen von JAVA nach Js bekommt und andersrum?
Ich finde nur wie man die Java Methoden ausführt.

Noch ne frage habe vorhin mit den Auftraggeber telefoniert, weil ich noch ein Fehler in der Modulation hatte egal... .
Ich habe ihn gefragt warum man noch den Alten COM Port nutzt der eh kaum noch auf den Mainboards zu finden ist.
Es ist so, der Transceiver ist gar nicht direkt mit den Computer verbunden via Kabel. Sondern der Transceiver verlangt nur nach einer Massevebindung, also zwichen COM Port und Transceiver ist ein Optokoppler(für euch Relay).
Mann muss allso nur irgendwie eine Gleichspannung anlegen und gut ist.

Die Frage ist halt, kann man dafür nicht auch midi nutzen? Midi ist halt nur digital.
Dachte man speilt eine Note, egal welche,im härtesten Anschlag delay 0.
Technisch gesehen ist midi ja rs232, ein usb zu midi Interface kostet 5 Euro bei ebay.
Auftraggeber meint das ist zu vertreten.

ein ein paar links zu midi:
The MIDI Physical Layer
How to connect a MIDI interface with a standard RS-232 port
https://www2.informatik.uni-hamburg.de/~schaetti/musiksynth/technik/MIDI.html
 
Applet in HTML einbinden z. B. mit
<object type="application/x-java-applet" width="0" height="0" name="applet">...</object>

Funktionsaufruf in JS z. B. mit
applet.funktionsname('param');

Im Applet:
public boolean funktionsname(String param) {...}

Hilft das?
 
Zurück
Oben