@@ -22,14 +22,16 @@ Java.
22
22
<dependency >
23
23
<groupId >com.github.kurbatov</groupId >
24
24
<artifactId >firmata4j</artifactId >
25
- <version >2.3.6 </version >
25
+ <version >2.3.7 </version >
26
26
</dependency >
27
27
```
28
28
29
29
## Использование
30
30
Основной сценарий использования:
31
31
``` java
32
- IODevice device = new FirmataDevice (" /dev/ttyUSB0" ); // создать экземпляр устройства Firmata используя имя порта
32
+ // создать экземпляр устройства Firmata
33
+ IODevice device = new FirmataDevice (" /dev/ttyUSB0" ); // используя имя порта
34
+ // IODevice device = new FirmataDevice(new NetworkTransport("192.168.1.18:4334")); // используя сетевой адрес
33
35
// подписаться на события при помощи device.addEventListener(...);
34
36
// и/или device.getPin(n).addEventListener(...);
35
37
device. start(); // начать обмен сообщениями с устройствами
@@ -105,23 +107,6 @@ pin.setMode(Pin.Mode.OUTPUT); // наши обработчики получат
105
107
pin. setValue(1 ); // ... а после и об этом изменении
106
108
```
107
109
108
- Визуальное представление состояний портов устройства можно получить при помощи
109
- компонента ` JPinboard ` .
110
-
111
- ``` java
112
- JPinboard pinboard = new JPinboard (device);
113
- JFrame frame = new JFrame (" Pinboard Example" );
114
- frame. add(pinboard);
115
- frame. pack();
116
- frame. setVisible(true );
117
- ```
118
-
119
- ` JPinboard ` позволяет установить режим порта из контекстного меню. Состояние
120
- порта вывода может быть изменено двойным щелчком на его изображении.
121
-
122
- Пример использования ` JPinboard ` может быть найден в классе
123
- [ ` org.firmata4j.Example ` ] ( https://github.com/kurbatov/firmata4j/blob/master/src/main/java/org/firmata4j/Example.java ) .
124
-
125
110
## I2C
126
111
** firmata4j** поддерживает взаимодействие с I2C устройствами. Получить ссылку на
127
112
I2C устройство можно следующим способом:
@@ -140,6 +125,72 @@ I2CDevice i2cDevice = device.getI2CDevice(i2cAddress);
140
125
и
141
126
[ ` I2CExample ` ] ( https://github.com/kurbatov/firmata4j/blob/master/src/main/java/org/firmata4j/I2CExample.java ) .
142
127
128
+ ## Низкоуровневые сообщения и события
129
+
130
+ ** firmata4j** позволяет отослать произвольное бинарное сообщение устройству.
131
+ Например, установка интервала измерений значения аналоговых портов (sampling
132
+ intervall) с использованием низкоуровневого сообщения:
133
+
134
+ ``` java
135
+ device. sendMessage(FirmataMessageFactory . setSamplingInterval(12 ));
136
+ ```
137
+
138
+ Также поддерживаются обработчики низкоуровневых событий. Они могут быть полезны
139
+ для отладки или обработки сообщений от устройства с модифицированной
140
+ имплементацией Firmata.
141
+
142
+ ``` java
143
+ device. addProtocolMessageHandler(FirmataEventType . SYSEX_CUSTOM_MESSAGE , new Consumer<Event > () {
144
+ @Override
145
+ public void accept (Event evt ) {
146
+ byte [] message = (byte []) evt. getBodyItem(FirmataEventType . SYSEX_CUSTOM_MESSAGE );
147
+ byte messageType = message[0 ];
148
+ // и так далее
149
+ }
150
+ });
151
+ ```
152
+
153
+ ## Контроль подключения
154
+
155
+ Обработчики низкоуровневых событий помогают имплементировать контроль
156
+ подключения к устройству:
157
+
158
+ ``` java
159
+ IODevice device = new FirmataDevice (port);
160
+ // ...
161
+ FirmataWatchdog watchdog = new FirmataWatchdog (3000 , new Runnable () {
162
+ @Override
163
+ public void run () {
164
+ // действия, если в течение 3000 мс не произошло ни одного низкоуровневого события
165
+ }
166
+ });
167
+ device. addProtocolMessageHandler(FirmataEventType . ANY , watchdog);
168
+ // ...
169
+ device. start();
170
+ ```
171
+
172
+ ` FirmatWatchdog ` активируется первым с момента регистрации сообщением. Поэтому
173
+ экземпляр ` FirmatWatchdog ` должен быть зарегистрирован до начала взаимодействия
174
+ с устройством.
175
+
176
+ ## Визуализация
177
+ Визуальное представление состояний портов устройства можно получить при помощи
178
+ компонента ` JPinboard ` .
179
+
180
+ ``` java
181
+ JPinboard pinboard = new JPinboard (device);
182
+ JFrame frame = new JFrame (" Pinboard Example" );
183
+ frame. add(pinboard);
184
+ frame. pack();
185
+ frame. setVisible(true );
186
+ ```
187
+
188
+ ` JPinboard ` позволяет установить режим порта из контекстного меню. Состояние
189
+ порта вывода может быть изменено двойным щелчком на его изображении.
190
+
191
+ Пример использования ` JPinboard ` может быть найден в классе
192
+ [ ` org.firmata4j.Example ` ] ( https://github.com/kurbatov/firmata4j/blob/master/src/main/java/org/firmata4j/Example.java ) .
193
+
143
194
## Версии
144
195
** firmata4j** придерживается версий протокола Firmata. Первая доступная версия
145
196
** firmata4j** - 2.3.1.
0 commit comments