DMX in Java mit FT232RL auf OSX! Hilfe!

OP #3520925
Hallo Forum!

Ich versuche jetzt seit Tagen einen FT232RL unter Java anzusteuern. Das 
Hat mit Hilfe von RXTX eigentlich auch funktioniert, bis ich eine 
spezielle Baudrate einstellen wollte (250kBaud).
Diese ist notwendig, da ich ein DMX Protkoll in Java implementieren 
möchte. Allerdings scheini RXTX keine nicht-Standart Baudraten 
zuzulassen.
Jetzt wollte ich das ganze mit jd2xx probieren, aber da weiß ich nicht 
wie ich ein Break senden soll (22x 0 Bit) und auch nicht wie ich den 
MarkAfterBreak senden kann.
Ich habe jetzt schon super viel gegoogeled und Quergelesen, aber ich bin 
noch kein Stück weiter.

Kann mir da jemand helfen oder hat ne Idee.

Was ich wohl weiß: Es muss irgendwie gehen, da es ein JAVA Lichttool 
gibt: Q Light Control und das hat mit dem Adapter auch schon 
funktioniert.

LG Oli
OP #3521966
So, ich bin jetzt schon ein Stück weiter. Kann jetzt mit Hilfe von jd2xx 
Daten über meinen Ft232RL senden.

Den Break hab ich jetzt realisiert, in dem ich die Baudrate von 
250kbit/s halbbiert habe und dann mit 125kbit/s ein Byte (0x00) + 1 
Startbit + 2 stopbit sende und dann wieder auf die volle Baudrate wieder 
Hochschalte. Ich sehe jetzt auch an meiner Testlampe das sie auf 
igrendwas reagiert, allerdings schaltet sie nicht so wie ich die Kanäle 
beschreibe.

Ich hänge mal den Quellcode an. Vielleicht fällt ja jemandem ein Fehler 
auf.
1
import java.io.IOException;
2

3
import jd2xx.JD2XX;
4
import jd2xx.JD2XX.ProgramData;
5
import jd2xx.JD2XXInputStream;
6
import jd2xx.JD2XXOutputStream;
7

8
public class dmx {
9
  
10
  public static void main (String[] args) throws IOException, InterruptedException{
11
    
12
    //Array Klasse mit 512 Byte feldern welche beim initalsieren auf 0xff gesetzt werden
13
    DmxBuffer db = new DmxBuffer();
14
    
15
    db.setValue(0, (byte)0x00);
16
    
17
    JD2XX jd = new JD2XX();
18
    
19
    jd.open(0);
20
    
21
    for(int t = 0; t < 10; t++) {
22
      byte[] b = db.getBuffer();
23
      jd.setBaudRate(125000);
24
      jd.setDataCharacteristics(JD2XX.BITS_8, JD2XX.STOP_BITS_2, JD2XX.PARITY_NONE);
25
      jd.setFlowControl(JD2XX.FLOW_NONE, 0, 0);
26
      jd.setTimeouts(1000,  1000);
27
      
28
      jd.write((byte)0x00);
29
      
30
      jd.setBaudRate(250000);
31
      jd.setDataCharacteristics(JD2XX.BITS_8, JD2XX.STOP_BITS_2, JD2XX.PARITY_NONE);
32
      jd.setFlowControl(JD2XX.FLOW_NONE, 0, 0);
33
      jd.setTimeouts(1000,  1000);
34
      
35
      jd.write((byte)0x00);
36
      
37
      for(int i = 0; i < b.length; i++) {
38
        jd.write(b[i]);
39
      }
40
      
41
      Thread.sleep(1000);
42
    }
43
  }
44
}

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.