DMX in Java mit FT232RL auf OSX! Hilfe!

OP #3520925
Lesenswert?

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
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren