Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
ddd6e90c6d
@ -5,7 +5,8 @@
|
|||||||
### Things to do
|
### Things to do
|
||||||
|
|
||||||
* **[Getting Started](/getting-started)**
|
* **[Getting Started](/getting-started)**
|
||||||
* [Ten projects](/projects)
|
* [Projects](/projects)
|
||||||
|
* [Lessons](/lessons)
|
||||||
|
|
||||||
### Micro:bit reference
|
### Micro:bit reference
|
||||||
|
|
||||||
@ -16,16 +17,15 @@
|
|||||||
|
|
||||||
* [Blocks language](/blocks)
|
* [Blocks language](/blocks)
|
||||||
* [JavaScript language](/javascript)
|
* [JavaScript language](/javascript)
|
||||||
* [Streaming data](/streaming)
|
|
||||||
|
|
||||||
### More questions?
|
### More questions?
|
||||||
|
|
||||||
* [Frequently Asked Question](/faq)
|
* [Frequently Asked Question](/faq)
|
||||||
* [Embedding project](/share)
|
|
||||||
* [Help Translate](/translate)
|
* [Help Translate](/translate)
|
||||||
* [Release notes](/release-notes)
|
* [Embedding project](/share)
|
||||||
|
|
||||||
### Developers
|
### Developers
|
||||||
|
|
||||||
* [Command Line Interface](/cli)
|
* [Command Line Interface](/cli)
|
||||||
* Learn about [packages](/packages)
|
* Learn about [packages](/packages)
|
||||||
|
* [Release notes](/release-notes)
|
||||||
|
@ -2,6 +2,14 @@
|
|||||||
|
|
||||||
Support for additional Bluetooth services.
|
Support for additional Bluetooth services.
|
||||||
|
|
||||||
|
### ~hint
|
||||||
|
![](/static/bluetooth/Bluetooth_SIG.png)
|
||||||
|
|
||||||
|
For another device like a smartphone to use any of the Bluetooth "services" which the micro:bit has, it must first be [paired with the micro:bit](/reference/bluetooth/bluetooth-pairing). Once paired, the other device may connect to the micro:bit and exchange data relating to many of the micro:bit's features.
|
||||||
|
|
||||||
|
### ~
|
||||||
|
|
||||||
|
|
||||||
```cards
|
```cards
|
||||||
bluetooth.startAccelerometerService();
|
bluetooth.startAccelerometerService();
|
||||||
bluetooth.startButtonService();
|
bluetooth.startButtonService();
|
||||||
@ -9,20 +17,34 @@ bluetooth.startIOPinService();
|
|||||||
bluetooth.startLEDService();
|
bluetooth.startLEDService();
|
||||||
bluetooth.startMagnetometerService();
|
bluetooth.startMagnetometerService();
|
||||||
bluetooth.startTemperatureService();
|
bluetooth.startTemperatureService();
|
||||||
bluetooth.uartRead("");
|
bluetooth.onBluetoothConnected(() => {});
|
||||||
bluetooth.uartWrite("");
|
bluetooth.onBluetoothDisconnected(() => {});
|
||||||
bluetooth.onBluetoothConnected(() => {
|
```
|
||||||
|
|
||||||
});
|
## UART
|
||||||
bluetooth.onBluetoothDisconnected(() => {
|
|
||||||
|
```cards
|
||||||
});
|
bluetooth.startUartService();
|
||||||
|
bluetooth.uartReadUntil("");
|
||||||
|
bluetooth.uartWriteString("");
|
||||||
|
bluetooth.uartWriteNumber(0);
|
||||||
|
bluetooth.uartWriteValue("", 0);
|
||||||
```
|
```
|
||||||
|
|
||||||
```package
|
```package
|
||||||
microbit-bluetooth
|
microbit-bluetooth
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Advanced
|
||||||
|
|
||||||
|
For more advanced information on the micro:bit Bluetooth UART service including information on using a smartphone, see the [Lancaster University micro:bit runtime technical documentation](http://lancaster-university.github.io/microbit-docs/ble/uart-service/)
|
||||||
|
|
||||||
### See Also
|
### See Also
|
||||||
|
|
||||||
[startAccelerometerService](/reference/bluetooth/start-accelerometer-service), [startButtonService](/reference/bluetooth/start-button-service), [startIOPinService](/reference/bluetooth/start-io-pin-service), [startLEDService](/reference/bluetooth/start-led-service), [startMagnetometerService](/reference/bluetooth/start-magnetometer-service), [startTemperatureService](/reference/bluetooth/start-temperature-service), [uartRead](/reference/bluetooth/uart-read), [uartWrite](/reference/bluetooth/uart-write), [onBluetoothConnected](/reference/bluetooth/on-bluetooth-connected), [onBluetoothDisconnected](/reference/bluetooth/on-bluetooth-disconnected)
|
[startAccelerometerService](/reference/bluetooth/start-accelerometer-service), [startButtonService](/reference/bluetooth/start-button-service), [startIOPinService](/reference/bluetooth/start-io-pin-service), [startLEDService](/reference/bluetooth/start-led-service), [startMagnetometerService](/reference/bluetooth/start-magnetometer-service), [startTemperatureService](/reference/bluetooth/start-temperature-service),
|
||||||
|
[startUartService](/reference/bluetooth/start-uart-service),
|
||||||
|
[uartReadUntil](/reference/bluetooth/uart-read-until),
|
||||||
|
[uartWriteString](/reference/bluetooth/uart-write-string),
|
||||||
|
[uartWriteNumber](/reference/bluetooth/uart-write-number),
|
||||||
|
[uartWriteValue](/reference/bluetooth/uart-write-value),
|
||||||
|
[onBluetoothConnected](/reference/bluetooth/on-bluetooth-connected), [onBluetoothDisconnected](/reference/bluetooth/on-bluetooth-disconnected)
|
||||||
|
4
docs/reference/bluetooth/uart-read.md → docs/reference/bluetooth/uart-read-until.md
Executable file → Normal file
4
docs/reference/bluetooth/uart-read.md → docs/reference/bluetooth/uart-read-until.md
Executable file → Normal file
@ -12,7 +12,7 @@ The [Bluetooth UART service](start-uart-service.md) allows another device such a
|
|||||||
With the Bluetooth UART service running, this block allows a micro:bit to read data which has been received from a Bluetooth connected device, terminating reading and returning the value obtained as soon as a specified delimiter character is encountered. This means that connected devices can send data to the micro:bit and indicate that the complete message has been sent by appending the message with the delimiter character.
|
With the Bluetooth UART service running, this block allows a micro:bit to read data which has been received from a Bluetooth connected device, terminating reading and returning the value obtained as soon as a specified delimiter character is encountered. This means that connected devices can send data to the micro:bit and indicate that the complete message has been sent by appending the message with the delimiter character.
|
||||||
|
|
||||||
```sig
|
```sig
|
||||||
bluetooth.uartRead("");
|
bluetooth.uartReadUntil("");
|
||||||
```
|
```
|
||||||
|
|
||||||
### Example: Starting the Bluetooth UART service and then reading data received from another device which is terminated by ":" character and then displaying it
|
### Example: Starting the Bluetooth UART service and then reading data received from another device which is terminated by ":" character and then displaying it
|
||||||
@ -25,7 +25,7 @@ bluetooth.onBluetoothConnected(() => {
|
|||||||
basic.showString("C");
|
basic.showString("C");
|
||||||
connected = 1;
|
connected = 1;
|
||||||
while (connected == 1) {
|
while (connected == 1) {
|
||||||
uartData = bluetooth.uartRead(":");
|
uartData = bluetooth.uartReadUntil(":");
|
||||||
basic.showString(uartData);
|
basic.showString(uartData);
|
||||||
}
|
}
|
||||||
});
|
});
|
28
docs/reference/bluetooth/uart-write-number.md
Normal file
28
docs/reference/bluetooth/uart-write-number.md
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
# UART Write Number
|
||||||
|
|
||||||
|
### ~hint
|
||||||
|
![](/static/bluetooth/Bluetooth_SIG.png)
|
||||||
|
|
||||||
|
For another device like a smartphone to use any of the Bluetooth "services" which the micro:bit has, it must first be [paired with the micro:bit](/reference/bluetooth/bluetooth-pairing). Once paired, the other device may connect to the micro:bit and exchange data relating to many of the micro:bit's features.
|
||||||
|
|
||||||
|
### ~
|
||||||
|
|
||||||
|
The [Bluetooth UART service](/reference/bluetooth/start-uart-service.md) allows another device such as a smartphone to exchange any data it wants to with the micro:bit, in small chunks.
|
||||||
|
|
||||||
|
With the Bluetooth UART service running, this block allows a micro:bit to send data to a Bluetooth connected device.
|
||||||
|
|
||||||
|
```sig
|
||||||
|
bluetooth.uartWriteNumber(42);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Advanced
|
||||||
|
|
||||||
|
For more advanced information on the micro:bit Bluetooth UART service including information on using a smartphone, see the [Lancaster University micro:bit runtime technical documentation](http://lancaster-university.github.io/microbit-docs/ble/uart-service/)
|
||||||
|
|
||||||
|
### See also
|
||||||
|
|
||||||
|
[About Bluetooth](/reference/bluetooth/about-bluetooth), [micro:bit Bluetooth profile overview ](http://lancaster-university.github.io/microbit-docs/ble/profile/), [micro:bit Bluetooth profile reference](http://lancaster-university.github.io/microbit-docs/resources/bluetooth/microbit-profile-V1.9-Level-2.pdf), [Bluetooth on micro:bit resources](http://bluetooth-mdw.blogspot.co.uk/p/bbc-microbit.html), [Bluetooth SIG](https://www.bluetooth.com)
|
||||||
|
|
||||||
|
```package
|
||||||
|
microbit-bluetooth
|
||||||
|
```
|
8
docs/reference/bluetooth/uart-write.md → docs/reference/bluetooth/uart-write-string.md
Executable file → Normal file
8
docs/reference/bluetooth/uart-write.md → docs/reference/bluetooth/uart-write-string.md
Executable file → Normal file
@ -1,4 +1,4 @@
|
|||||||
# UART Write
|
# UART Write String
|
||||||
|
|
||||||
### ~hint
|
### ~hint
|
||||||
![](/static/bluetooth/Bluetooth_SIG.png)
|
![](/static/bluetooth/Bluetooth_SIG.png)
|
||||||
@ -7,12 +7,12 @@ For another device like a smartphone to use any of the Bluetooth "services" whic
|
|||||||
|
|
||||||
### ~
|
### ~
|
||||||
|
|
||||||
The [Bluetooth UART service](start-uart-service.md) allows another device such as a smartphone to exchange any data it wants to with the micro:bit, in small chunks.
|
The [Bluetooth UART service](/reference/bluetooth/start-uart-service.md) allows another device such as a smartphone to exchange any data it wants to with the micro:bit, in small chunks.
|
||||||
|
|
||||||
With the Bluetooth UART service running, this block allows a micro:bit to send data to a Bluetooth connected device.
|
With the Bluetooth UART service running, this block allows a micro:bit to send data to a Bluetooth connected device.
|
||||||
|
|
||||||
```sig
|
```sig
|
||||||
bluetooth.uartWrite("");
|
bluetooth.uartWriteString("");
|
||||||
```
|
```
|
||||||
|
|
||||||
### Example: Starting the Bluetooth UART service and then sending "HELLO" whenever button A is pressed and another device has connected over Bluetooth
|
### Example: Starting the Bluetooth UART service and then sending "HELLO" whenever button A is pressed and another device has connected over Bluetooth
|
||||||
@ -29,7 +29,7 @@ bluetooth.onBluetoothDisconnected(() => {
|
|||||||
});
|
});
|
||||||
input.onButtonPressed(Button.A, () => {
|
input.onButtonPressed(Button.A, () => {
|
||||||
if (connected == 1) {
|
if (connected == 1) {
|
||||||
bluetooth.uartWrite("HELLO");
|
bluetooth.uartWriteString("HELLO");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
```
|
```
|
28
docs/reference/bluetooth/uart-write-value.md
Normal file
28
docs/reference/bluetooth/uart-write-value.md
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
# UART Write Value
|
||||||
|
|
||||||
|
### ~hint
|
||||||
|
![](/static/bluetooth/Bluetooth_SIG.png)
|
||||||
|
|
||||||
|
For another device like a smartphone to use any of the Bluetooth "services" which the micro:bit has, it must first be [paired with the micro:bit](/reference/bluetooth/bluetooth-pairing). Once paired, the other device may connect to the micro:bit and exchange data relating to many of the micro:bit's features.
|
||||||
|
|
||||||
|
### ~
|
||||||
|
|
||||||
|
The [Bluetooth UART service](/reference/bluetooth/start-uart-service.md) allows another device such as a smartphone to exchange any data it wants to with the micro:bit, in small chunks.
|
||||||
|
|
||||||
|
With the Bluetooth UART service running, this block allows a micro:bit to send data to a Bluetooth connected device.
|
||||||
|
|
||||||
|
```sig
|
||||||
|
bluetooth.uartWriteValue("x", 42);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Advanced
|
||||||
|
|
||||||
|
For more advanced information on the micro:bit Bluetooth UART service including information on using a smartphone, see the [Lancaster University micro:bit runtime technical documentation](http://lancaster-university.github.io/microbit-docs/ble/uart-service/)
|
||||||
|
|
||||||
|
### See also
|
||||||
|
|
||||||
|
[About Bluetooth](/reference/bluetooth/about-bluetooth), [micro:bit Bluetooth profile overview ](http://lancaster-university.github.io/microbit-docs/ble/profile/), [micro:bit Bluetooth profile reference](http://lancaster-university.github.io/microbit-docs/resources/bluetooth/microbit-profile-V1.9-Level-2.pdf), [Bluetooth on micro:bit resources](http://bluetooth-mdw.blogspot.co.uk/p/bbc-microbit.html), [Bluetooth SIG](https://www.bluetooth.com)
|
||||||
|
|
||||||
|
```package
|
||||||
|
microbit-bluetooth
|
||||||
|
```
|
@ -16,13 +16,9 @@ You will find two files in that project:
|
|||||||
|
|
||||||
## Translating the blocks and reference documentation
|
## Translating the blocks and reference documentation
|
||||||
|
|
||||||
The project below contains the resources from the blocks and functions using in the https://codethemicrobit.com.
|
You will find package files under ``/microbit`` , one for the block definition and one for the descriptions:
|
||||||
|
|
||||||
* [https://crowdin.com/project/pxt-microbit](https://crowdin.com/project/pxt-microbit)
|
* ``core-strings.json``: contains the block definitions
|
||||||
|
* ``core-jsdoc-strings.json``: contains the descriptions
|
||||||
You will find two files for each package available in the micro:bit, one for the block definition and one for the descriptions:
|
|
||||||
|
|
||||||
* ``microbit-strings.json``: contains the block definitions
|
|
||||||
* ``microbit-jsdoc-strings.json``: contains the descriptions
|
|
||||||
|
|
||||||
The block definition should be carefully translated using the [block definition syntax](https://www.pxt.io/defining-blocks).
|
The block definition should be carefully translated using the [block definition syntax](https://www.pxt.io/defining-blocks).
|
@ -4,22 +4,6 @@
|
|||||||
|
|
||||||
using namespace pxt;
|
using namespace pxt;
|
||||||
|
|
||||||
enum Delimiters {
|
|
||||||
//% block="new line"
|
|
||||||
NewLine = 1,
|
|
||||||
//% block=","
|
|
||||||
Comma = 2,
|
|
||||||
//% block="$"
|
|
||||||
Dollar = 3,
|
|
||||||
//% block=":"
|
|
||||||
Colon = 4,
|
|
||||||
//% block="."
|
|
||||||
Fullstop = 5,
|
|
||||||
//% block="#"
|
|
||||||
Hash = 6,
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Support for additional Bluetooth services.
|
* Support for additional Bluetooth services.
|
||||||
*/
|
*/
|
||||||
@ -27,12 +11,33 @@ enum Delimiters {
|
|||||||
namespace bluetooth {
|
namespace bluetooth {
|
||||||
MicroBitUARTService *uart = NULL;
|
MicroBitUARTService *uart = NULL;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Starts the Bluetooth accelerometer service
|
||||||
|
*/
|
||||||
|
//% help=bluetooth/start-accelerometer-service
|
||||||
|
//% blockId=bluetooth_start_accelerometer_service block="bluetooth accelerometer service"
|
||||||
|
//% parts="bluetooth" weight=90 blockGap=8
|
||||||
|
void startAccelerometerService() {
|
||||||
|
new MicroBitAccelerometerService(*uBit.ble, uBit.accelerometer);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Starts the Bluetooth button service
|
||||||
|
*/
|
||||||
|
//% help=bluetooth/start-button-service
|
||||||
|
//% blockId=bluetooth_start_button_service block="bluetooth button service" blockGap=8
|
||||||
|
//% parts="bluetooth" weight=89
|
||||||
|
void startButtonService() {
|
||||||
|
new MicroBitButtonService(*uBit.ble);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Starts the Bluetooth IO pin service.
|
* Starts the Bluetooth IO pin service.
|
||||||
*/
|
*/
|
||||||
//% help=bluetooth/start-io-pin-service
|
//% help=bluetooth/start-io-pin-service
|
||||||
//% blockId=bluetooth_start_io_pin_service block="bluetooth io pin service" blockGap=8
|
//% blockId=bluetooth_start_io_pin_service block="bluetooth io pin service" blockGap=8
|
||||||
//% parts="bluetooth"
|
//% parts="bluetooth" weight=88
|
||||||
void startIOPinService() {
|
void startIOPinService() {
|
||||||
new MicroBitIOPinService(*uBit.ble, uBit.io);
|
new MicroBitIOPinService(*uBit.ble, uBit.io);
|
||||||
}
|
}
|
||||||
@ -42,7 +47,7 @@ namespace bluetooth {
|
|||||||
*/
|
*/
|
||||||
//% help=bluetooth/start-led-service
|
//% help=bluetooth/start-led-service
|
||||||
//% blockId=bluetooth_start_led_service block="bluetooth led service" blockGap=8
|
//% blockId=bluetooth_start_led_service block="bluetooth led service" blockGap=8
|
||||||
//% parts="bluetooth"
|
//% parts="bluetooth" weight=87
|
||||||
void startLEDService() {
|
void startLEDService() {
|
||||||
new MicroBitLEDService(*uBit.ble, uBit.display);
|
new MicroBitLEDService(*uBit.ble, uBit.display);
|
||||||
}
|
}
|
||||||
@ -52,7 +57,7 @@ namespace bluetooth {
|
|||||||
*/
|
*/
|
||||||
//% help=bluetooth/start-temperature-service
|
//% help=bluetooth/start-temperature-service
|
||||||
//% blockId=bluetooth_start_temperature_service block="bluetooth temperature service" blockGap=8
|
//% blockId=bluetooth_start_temperature_service block="bluetooth temperature service" blockGap=8
|
||||||
//% parts="bluetooth"
|
//% parts="bluetooth" weight=86
|
||||||
void startTemperatureService() {
|
void startTemperatureService() {
|
||||||
new MicroBitTemperatureService(*uBit.ble, uBit.thermometer);
|
new MicroBitTemperatureService(*uBit.ble, uBit.thermometer);
|
||||||
}
|
}
|
||||||
@ -61,38 +66,19 @@ namespace bluetooth {
|
|||||||
* Starts the Bluetooth magnetometer service
|
* Starts the Bluetooth magnetometer service
|
||||||
*/
|
*/
|
||||||
//% help=bluetooth/start-magnetometer-service
|
//% help=bluetooth/start-magnetometer-service
|
||||||
//% blockId=bluetooth_start_magnetometer_service block="bluetooth magnetometer service" blockGap=8
|
//% blockId=bluetooth_start_magnetometer_service block="bluetooth magnetometer service"
|
||||||
//% parts="bluetooth"
|
//% parts="bluetooth" weight=85
|
||||||
void startMagnetometerService() {
|
void startMagnetometerService() {
|
||||||
new MicroBitMagnetometerService(*uBit.ble, uBit.compass);
|
new MicroBitMagnetometerService(*uBit.ble, uBit.compass);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Starts the Bluetooth accelerometer service
|
|
||||||
*/
|
|
||||||
//% help=bluetooth/start-accelerometer-service
|
|
||||||
//% blockId=bluetooth_start_accelerometer_service block="bluetooth accelerometer service" blockGap=8
|
|
||||||
//% parts="bluetooth"
|
|
||||||
void startAccelerometerService() {
|
|
||||||
new MicroBitAccelerometerService(*uBit.ble, uBit.accelerometer);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Starts the Bluetooth button service
|
|
||||||
*/
|
|
||||||
//% help=bluetooth/start-button-service
|
|
||||||
//% blockId=bluetooth_start_button_service block="bluetooth button service" blockGap=8
|
|
||||||
//% parts="bluetooth"
|
|
||||||
void startButtonService() {
|
|
||||||
new MicroBitButtonService(*uBit.ble);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Starts the Bluetooth UART service
|
* Starts the Bluetooth UART service
|
||||||
*/
|
*/
|
||||||
//% help=bluetooth/start-uart-service
|
//% help=bluetooth/start-uart-service
|
||||||
//% blockId=bluetooth_start_uart_service block="bluetooth uart service" blockGap=8
|
//% blockId=bluetooth_start_uart_service block="bluetooth uart service"
|
||||||
//% parts="bluetooth"
|
//% parts="bluetooth" advanced=true
|
||||||
void startUartService() {
|
void startUartService() {
|
||||||
if (uart) return;
|
if (uart) return;
|
||||||
// 61 octet buffer size is 3 x (MTU - 3) + 1
|
// 61 octet buffer size is 3 x (MTU - 3) + 1
|
||||||
@ -102,13 +88,13 @@ namespace bluetooth {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//%
|
//%
|
||||||
void uartWrite(StringData *data) {
|
void uartWriteString(StringData *data) {
|
||||||
startUartService();
|
startUartService();
|
||||||
uart->send(ManagedString(data));
|
uart->send(ManagedString(data));
|
||||||
}
|
}
|
||||||
|
|
||||||
//%
|
//%
|
||||||
StringData* uartRead(StringData *del) {
|
StringData* uartReadUntil(StringData *del) {
|
||||||
startUartService();
|
startUartService();
|
||||||
return uart->readUntil(ManagedString(del)).leakData();
|
return uart->readUntil(ManagedString(del)).leakData();
|
||||||
}
|
}
|
||||||
@ -133,7 +119,5 @@ namespace bluetooth {
|
|||||||
//% parts="bluetooth"
|
//% parts="bluetooth"
|
||||||
void onBluetoothDisconnected(Action body) {
|
void onBluetoothDisconnected(Action body) {
|
||||||
registerWithDal(MICROBIT_ID_BLE, MICROBIT_BLE_EVT_DISCONNECTED, body);
|
registerWithDal(MICROBIT_ID_BLE, MICROBIT_BLE_EVT_DISCONNECTED, body);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
@ -1,42 +1,48 @@
|
|||||||
|
/**
|
||||||
|
* Support for additional Bluetooth services.
|
||||||
|
*/
|
||||||
|
//% color=#0082FB weight=20
|
||||||
namespace bluetooth {
|
namespace bluetooth {
|
||||||
/**
|
|
||||||
* Returns the delimiter corresponding string
|
|
||||||
*/
|
|
||||||
//% blockId="bluetooth_uart_delimiter_conv" block="%del"
|
|
||||||
//% weight=1 parts="bluetooth"
|
|
||||||
export function delimiters(del: Delimiters): string {
|
|
||||||
// even though it might not look like, this is more
|
|
||||||
// (memory) efficient than the C++ implementation, because the
|
|
||||||
// strings are statically allocated and take no RAM
|
|
||||||
switch (del) {
|
|
||||||
case Delimiters.NewLine: return "\n"
|
|
||||||
case Delimiters.Comma: return ","
|
|
||||||
case Delimiters.Dollar: return "$"
|
|
||||||
case Delimiters.Colon: return ":"
|
|
||||||
case Delimiters.Fullstop: return "."
|
|
||||||
case Delimiters.Hash: return "#"
|
|
||||||
default: return "\n"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Writes to the Bluetooth UART service buffer. From there the data is transmitted over Bluetooth to a connected device.
|
* Writes to the Bluetooth UART service buffer. From there the data is transmitted over Bluetooth to a connected device.
|
||||||
*/
|
*/
|
||||||
//% help=bluetooth/uart-write
|
//% help=bluetooth/uart-write-string weight=80
|
||||||
//% blockId=bluetooth_uart_write block="bluetooth uart write %data" blockGap=8
|
//% blockId=bluetooth_uart_write block="bluetooth uart|write string %data" blockGap=8
|
||||||
//% parts="bluetooth" shim=bluetooth::uartWrite
|
//% parts="bluetooth" shim=bluetooth::uartWriteString advanced=true
|
||||||
export function uartWrite(data: string): void {
|
export function uartWriteString(data: string): void {
|
||||||
// dummy implementation for simulator
|
// dummy implementation for simulator
|
||||||
console.log("UART Write: " + data)
|
console.log("UART Write: " + data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prints a numeric value to the serial
|
||||||
|
*/
|
||||||
|
//% help=bluetooth/uart-write-number weight=79
|
||||||
|
//% weight=89 blockGap=8 advanced=true
|
||||||
|
//% blockId=bluetooth_uart_writenumber block="bluetooth uart|write number %value"
|
||||||
|
export function uartWriteNumber(value: number): void {
|
||||||
|
uartWriteString(value.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Writes a ``name: value`` pair line to the serial.
|
||||||
|
* @param name name of the value stream, eg: x
|
||||||
|
* @param value to write
|
||||||
|
*/
|
||||||
|
//% weight=88 weight=78
|
||||||
|
//% help=bluetooth/uart-write-value advanced=true
|
||||||
|
//% blockId=bluetooth_uart_writevalue block="bluetooth uart|write value %name|= %value"
|
||||||
|
export function uartWriteValue(name: string, value: number): void {
|
||||||
|
uartWriteString(name + ":" + value + "\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reads from the Bluetooth UART service buffer, returning its contents when the specified delimiter character is encountered.
|
* Reads from the Bluetooth UART service buffer, returning its contents when the specified delimiter character is encountered.
|
||||||
*/
|
*/
|
||||||
//% help=bluetooth/uart-read
|
//% help=bluetooth/uart-read-until weight=75
|
||||||
//% blockId=bluetooth_uart_read block="bluetooth uart read %del=bluetooth_uart_delimiter_conv" blockGap=8
|
//% blockId=bluetooth_uart_read block="bluetooth uart|read until %del=serial_delimiter_conv"
|
||||||
//% parts="bluetooth" shim=bluetooth::uartRead
|
//% parts="bluetooth" shim=bluetooth::uartReadUntil advanced=true
|
||||||
export function uartRead(del: string): string {
|
export function uartReadUntil(del: string): string {
|
||||||
// dummy implementation for simulator
|
// dummy implementation for simulator
|
||||||
return "???"
|
return "???"
|
||||||
}
|
}
|
||||||
|
16
libs/bluetooth/enums.d.ts
vendored
16
libs/bluetooth/enums.d.ts
vendored
@ -1,20 +1,4 @@
|
|||||||
// Auto-generated. Do not edit.
|
// Auto-generated. Do not edit.
|
||||||
|
|
||||||
|
|
||||||
declare enum Delimiters {
|
|
||||||
//% block="new line"
|
|
||||||
NewLine = 1,
|
|
||||||
//% block=","
|
|
||||||
Comma = 2,
|
|
||||||
//% block="$"
|
|
||||||
Dollar = 3,
|
|
||||||
//% block=":"
|
|
||||||
Colon = 4,
|
|
||||||
//% block="."
|
|
||||||
Fullstop = 5,
|
|
||||||
//% block="#"
|
|
||||||
Hash = 6,
|
|
||||||
}
|
|
||||||
declare namespace bluetooth {
|
declare namespace bluetooth {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
74
libs/bluetooth/shims.d.ts
vendored
74
libs/bluetooth/shims.d.ts
vendored
@ -7,44 +7,12 @@
|
|||||||
//% color=#0082FB weight=20
|
//% color=#0082FB weight=20
|
||||||
declare namespace bluetooth {
|
declare namespace bluetooth {
|
||||||
|
|
||||||
/**
|
|
||||||
* Starts the Bluetooth IO pin service.
|
|
||||||
*/
|
|
||||||
//% help=bluetooth/start-io-pin-service
|
|
||||||
//% blockId=bluetooth_start_io_pin_service block="bluetooth io pin service" blockGap=8
|
|
||||||
//% parts="bluetooth" shim=bluetooth::startIOPinService
|
|
||||||
function startIOPinService(): void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Starts the Bluetooth LED service
|
|
||||||
*/
|
|
||||||
//% help=bluetooth/start-led-service
|
|
||||||
//% blockId=bluetooth_start_led_service block="bluetooth led service" blockGap=8
|
|
||||||
//% parts="bluetooth" shim=bluetooth::startLEDService
|
|
||||||
function startLEDService(): void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Starts the Bluetooth temperature service
|
|
||||||
*/
|
|
||||||
//% help=bluetooth/start-temperature-service
|
|
||||||
//% blockId=bluetooth_start_temperature_service block="bluetooth temperature service" blockGap=8
|
|
||||||
//% parts="bluetooth" shim=bluetooth::startTemperatureService
|
|
||||||
function startTemperatureService(): void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Starts the Bluetooth magnetometer service
|
|
||||||
*/
|
|
||||||
//% help=bluetooth/start-magnetometer-service
|
|
||||||
//% blockId=bluetooth_start_magnetometer_service block="bluetooth magnetometer service" blockGap=8
|
|
||||||
//% parts="bluetooth" shim=bluetooth::startMagnetometerService
|
|
||||||
function startMagnetometerService(): void;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Starts the Bluetooth accelerometer service
|
* Starts the Bluetooth accelerometer service
|
||||||
*/
|
*/
|
||||||
//% help=bluetooth/start-accelerometer-service
|
//% help=bluetooth/start-accelerometer-service
|
||||||
//% blockId=bluetooth_start_accelerometer_service block="bluetooth accelerometer service" blockGap=8
|
//% blockId=bluetooth_start_accelerometer_service block="bluetooth accelerometer service"
|
||||||
//% parts="bluetooth" shim=bluetooth::startAccelerometerService
|
//% parts="bluetooth" weight=90 blockGap=8 shim=bluetooth::startAccelerometerService
|
||||||
function startAccelerometerService(): void;
|
function startAccelerometerService(): void;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -52,15 +20,47 @@ declare namespace bluetooth {
|
|||||||
*/
|
*/
|
||||||
//% help=bluetooth/start-button-service
|
//% help=bluetooth/start-button-service
|
||||||
//% blockId=bluetooth_start_button_service block="bluetooth button service" blockGap=8
|
//% blockId=bluetooth_start_button_service block="bluetooth button service" blockGap=8
|
||||||
//% parts="bluetooth" shim=bluetooth::startButtonService
|
//% parts="bluetooth" weight=89 shim=bluetooth::startButtonService
|
||||||
function startButtonService(): void;
|
function startButtonService(): void;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Starts the Bluetooth IO pin service.
|
||||||
|
*/
|
||||||
|
//% help=bluetooth/start-io-pin-service
|
||||||
|
//% blockId=bluetooth_start_io_pin_service block="bluetooth io pin service" blockGap=8
|
||||||
|
//% parts="bluetooth" weight=88 shim=bluetooth::startIOPinService
|
||||||
|
function startIOPinService(): void;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Starts the Bluetooth LED service
|
||||||
|
*/
|
||||||
|
//% help=bluetooth/start-led-service
|
||||||
|
//% blockId=bluetooth_start_led_service block="bluetooth led service" blockGap=8
|
||||||
|
//% parts="bluetooth" weight=87 shim=bluetooth::startLEDService
|
||||||
|
function startLEDService(): void;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Starts the Bluetooth temperature service
|
||||||
|
*/
|
||||||
|
//% help=bluetooth/start-temperature-service
|
||||||
|
//% blockId=bluetooth_start_temperature_service block="bluetooth temperature service" blockGap=8
|
||||||
|
//% parts="bluetooth" weight=86 shim=bluetooth::startTemperatureService
|
||||||
|
function startTemperatureService(): void;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Starts the Bluetooth magnetometer service
|
||||||
|
*/
|
||||||
|
//% help=bluetooth/start-magnetometer-service
|
||||||
|
//% blockId=bluetooth_start_magnetometer_service block="bluetooth magnetometer service"
|
||||||
|
//% parts="bluetooth" weight=85 shim=bluetooth::startMagnetometerService
|
||||||
|
function startMagnetometerService(): void;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Starts the Bluetooth UART service
|
* Starts the Bluetooth UART service
|
||||||
*/
|
*/
|
||||||
//% help=bluetooth/start-uart-service
|
//% help=bluetooth/start-uart-service
|
||||||
//% blockId=bluetooth_start_uart_service block="bluetooth uart service" blockGap=8
|
//% blockId=bluetooth_start_uart_service block="bluetooth uart service"
|
||||||
//% parts="bluetooth" shim=bluetooth::startUartService
|
//% parts="bluetooth" advanced=true shim=bluetooth::startUartService
|
||||||
function startUartService(): void;
|
function startUartService(): void;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
16
libs/core/enums.d.ts
vendored
16
libs/core/enums.d.ts
vendored
@ -312,6 +312,22 @@ declare namespace motors {
|
|||||||
//% block=9600
|
//% block=9600
|
||||||
BaudRate9600 = 9600,
|
BaudRate9600 = 9600,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
declare enum Delimiters {
|
||||||
|
//% block="new line"
|
||||||
|
NewLine = 1,
|
||||||
|
//% block=","
|
||||||
|
Comma = 2,
|
||||||
|
//% block="$"
|
||||||
|
Dollar = 3,
|
||||||
|
//% block=":"
|
||||||
|
Colon = 4,
|
||||||
|
//% block="."
|
||||||
|
Fullstop = 5,
|
||||||
|
//% block="#"
|
||||||
|
Hash = 6,
|
||||||
|
}
|
||||||
declare namespace serial {
|
declare namespace serial {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include "ksbit.h"
|
#include "ksbit.h"
|
||||||
|
|
||||||
enum class SerialPin {
|
enum SerialPin {
|
||||||
P0 = MICROBIT_ID_IO_P0,
|
P0 = MICROBIT_ID_IO_P0,
|
||||||
P1 = MICROBIT_ID_IO_P1,
|
P1 = MICROBIT_ID_IO_P1,
|
||||||
P2 = MICROBIT_ID_IO_P2,
|
P2 = MICROBIT_ID_IO_P2,
|
||||||
@ -12,36 +12,52 @@ enum class SerialPin {
|
|||||||
//P16 = MICROBIT_ID_IO_P16
|
//P16 = MICROBIT_ID_IO_P16
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class BaudRate {
|
enum BaudRate {
|
||||||
//% block=115200
|
//% block=115200
|
||||||
BaudRate115200 = 115200,
|
BaudRate115200 = 115200,
|
||||||
//% block=9600
|
//% block=9600
|
||||||
BaudRate9600 = 9600
|
BaudRate9600 = 9600
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum Delimiters {
|
||||||
|
//% block="new line"
|
||||||
|
NewLine = 1,
|
||||||
|
//% block=","
|
||||||
|
Comma = 2,
|
||||||
|
//% block="$"
|
||||||
|
Dollar = 3,
|
||||||
|
//% block=":"
|
||||||
|
Colon = 4,
|
||||||
|
//% block="."
|
||||||
|
Fullstop = 5,
|
||||||
|
//% block="#"
|
||||||
|
Hash = 6,
|
||||||
|
};
|
||||||
|
|
||||||
//% weight=2 color=30
|
//% weight=2 color=30
|
||||||
//% advanced=true
|
//% advanced=true
|
||||||
namespace serial {
|
namespace serial {
|
||||||
// note that at least one // followed by % is needed per declaration!
|
// note that at least one // followed by % is needed per declaration!
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reads a line of text from the serial port.
|
* Reads a line of text from the serial port and returns the buffer when the delimiter is met.
|
||||||
|
* @param delimiter text delimiter that separates each text chunk
|
||||||
*/
|
*/
|
||||||
//% help=serial/read-line
|
//% help=serial/read-until
|
||||||
//% blockId=serial_read_line block="serial read line"
|
//% blockId=serial_read_until block="serial|read until %delimiter=serial_delimiter_conv"
|
||||||
//% weight=20
|
//% weight=19
|
||||||
StringData* readLine() {
|
StringData* readUntil(StringData* delimiter) {
|
||||||
return uBit.serial.readUntil(ManagedString("\n")).leakData();
|
return uBit.serial.readUntil(ManagedString(delimiter)).leakData();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sends a piece of text through Serial connection.
|
* Reads a line of text from the serial port.
|
||||||
*/
|
*/
|
||||||
//% help=serial/write-string
|
//% help=serial/read-line
|
||||||
//% weight=87
|
//% blockId=serial_read_line block="serial|read line"
|
||||||
//% blockId=serial_writestring block="serial write string %text"
|
//% weight=20 blockGap=8
|
||||||
void writeString(StringData *text) {
|
StringData* readLine() {
|
||||||
uBit.serial.send(ManagedString(text));
|
return readUntil(ManagedString("\n").leakData());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -49,12 +65,22 @@ namespace serial {
|
|||||||
* @param delimiters the characters to match received characters against. eg:"\n"
|
* @param delimiters the characters to match received characters against. eg:"\n"
|
||||||
*/
|
*/
|
||||||
// help=serial/on-data-received
|
// help=serial/on-data-received
|
||||||
// weight=19
|
// weight=18
|
||||||
void onDataReceived(StringData* delimiters, Action body) {
|
void onDataReceived(StringData* delimiters, Action body) {
|
||||||
uBit.serial.eventOn(ManagedString(delimiters));
|
uBit.serial.eventOn(ManagedString(delimiters));
|
||||||
registerWithDal(MICROBIT_ID_SERIAL, MICROBIT_SERIAL_EVT_DELIM_MATCH, body);
|
registerWithDal(MICROBIT_ID_SERIAL, MICROBIT_SERIAL_EVT_DELIM_MATCH, body);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sends a piece of text through Serial connection.
|
||||||
|
*/
|
||||||
|
//% help=serial/write-string
|
||||||
|
//% weight=87
|
||||||
|
//% blockId=serial_writestring block="serial|write string %text"
|
||||||
|
void writeString(StringData *text) {
|
||||||
|
uBit.serial.send(ManagedString(text));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Dynamically configuring the serial instance to use pins other than USBTX and USBRX.
|
* Dynamically configuring the serial instance to use pins other than USBTX and USBRX.
|
||||||
* @param tx the new transmission pins
|
* @param tx the new transmission pins
|
||||||
@ -63,7 +89,7 @@ namespace serial {
|
|||||||
*/
|
*/
|
||||||
//% weight=10
|
//% weight=10
|
||||||
//% help=serial/redirect-to
|
//% help=serial/redirect-to
|
||||||
//% blockId=serial_redirect block="serial redirect to|TX %tx|RX %rx|at baud rate %rate"
|
//% blockId=serial_redirect block="serial|redirect to|TX %tx|RX %rx|at baud rate %rate"
|
||||||
//% blockExternalInputs=1
|
//% blockExternalInputs=1
|
||||||
void redirect(SerialPin tx, SerialPin rx, BaudRate rate) {
|
void redirect(SerialPin tx, SerialPin rx, BaudRate rate) {
|
||||||
uBit.serial.redirect((PinName)tx, (PinName)rx);
|
uBit.serial.redirect((PinName)tx, (PinName)rx);
|
||||||
|
@ -46,4 +46,24 @@ namespace serial {
|
|||||||
export function onLineReceived(body: Action): void {
|
export function onLineReceived(body: Action): void {
|
||||||
// serial.onDataReceived("\n", body);
|
// serial.onDataReceived("\n", body);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the delimiter corresponding string
|
||||||
|
*/
|
||||||
|
//% blockId="serial_delimiter_conv" block="%del"
|
||||||
|
//% weight=1
|
||||||
|
export function delimiters(del: Delimiters): string {
|
||||||
|
// even though it might not look like, this is more
|
||||||
|
// (memory) efficient than the C++ implementation, because the
|
||||||
|
// strings are statically allocated and take no RAM
|
||||||
|
switch (del) {
|
||||||
|
case Delimiters.NewLine: return "\n"
|
||||||
|
case Delimiters.Comma: return ","
|
||||||
|
case Delimiters.Dollar: return "$"
|
||||||
|
case Delimiters.Colon: return ":"
|
||||||
|
case Delimiters.Fullstop: return "."
|
||||||
|
case Delimiters.Hash: return "#"
|
||||||
|
default: return "\n"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
17
libs/core/shims.d.ts
vendored
17
libs/core/shims.d.ts
vendored
@ -671,12 +671,21 @@ declare namespace pins {
|
|||||||
//% advanced=true
|
//% advanced=true
|
||||||
declare namespace serial {
|
declare namespace serial {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reads a line of text from the serial port and returns the buffer when the delimiter is met.
|
||||||
|
* @param delimiter text delimiter that separates each text chunk
|
||||||
|
*/
|
||||||
|
//% help=serial/read-until
|
||||||
|
//% blockId=serial_read_until block="serial|read until %delimiter=serial_delimiter_conv"
|
||||||
|
//% weight=19 shim=serial::readUntil
|
||||||
|
function readUntil(delimiter: string): string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reads a line of text from the serial port.
|
* Reads a line of text from the serial port.
|
||||||
*/
|
*/
|
||||||
//% help=serial/read-line
|
//% help=serial/read-line
|
||||||
//% blockId=serial_read_line block="serial read line"
|
//% blockId=serial_read_line block="serial|read line"
|
||||||
//% weight=20 shim=serial::readLine
|
//% weight=20 blockGap=8 shim=serial::readLine
|
||||||
function readLine(): string;
|
function readLine(): string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -684,7 +693,7 @@ declare namespace serial {
|
|||||||
*/
|
*/
|
||||||
//% help=serial/write-string
|
//% help=serial/write-string
|
||||||
//% weight=87
|
//% weight=87
|
||||||
//% blockId=serial_writestring block="serial write string %text" shim=serial::writeString
|
//% blockId=serial_writestring block="serial|write string %text" shim=serial::writeString
|
||||||
function writeString(text: string): void;
|
function writeString(text: string): void;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -695,7 +704,7 @@ declare namespace serial {
|
|||||||
*/
|
*/
|
||||||
//% weight=10
|
//% weight=10
|
||||||
//% help=serial/redirect-to
|
//% help=serial/redirect-to
|
||||||
//% blockId=serial_redirect block="serial redirect to|TX %tx|RX %rx|at baud rate %rate"
|
//% blockId=serial_redirect block="serial|redirect to|TX %tx|RX %rx|at baud rate %rate"
|
||||||
//% blockExternalInputs=1 shim=serial::redirect
|
//% blockExternalInputs=1 shim=serial::redirect
|
||||||
function redirect(tx: SerialPin, rx: SerialPin, rate: BaudRate): void;
|
function redirect(tx: SerialPin, rx: SerialPin, rate: BaudRate): void;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "pxt-calliope",
|
"name": "pxt-calliope",
|
||||||
"version": "0.5.22",
|
"version": "0.5.24",
|
||||||
"description": "calliope target for PXT",
|
"description": "calliope target for PXT",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"JavaScript",
|
"JavaScript",
|
||||||
@ -29,6 +29,6 @@
|
|||||||
"typescript": "^1.8.7"
|
"typescript": "^1.8.7"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"pxt-core": "0.4.62"
|
"pxt-core": "0.4.65"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -80,6 +80,13 @@
|
|||||||
"microbit-pins": "",
|
"microbit-pins": "",
|
||||||
"microbit-serial": ""
|
"microbit-serial": ""
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "api",
|
||||||
|
"map": {
|
||||||
|
"bluetooth\\.uartRead\\((.*?)\\)" : "bluetooth.uartReadUntil($1)",
|
||||||
|
"bluetooth\\.uartWrite\\((.*?)\\)" : "bluetooth.uartWriteUntil($1)"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -168,7 +168,7 @@ namespace pxsim.bluetooth {
|
|||||||
export function uartWrite(s : string): void {
|
export function uartWrite(s : string): void {
|
||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
export function uartRead(): string {
|
export function uartReadUntil(del: string): string {
|
||||||
// TODO
|
// TODO
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
@ -43,6 +43,10 @@ namespace pxsim.serial {
|
|||||||
return board().serialState.readSerial();
|
return board().serialState.readSerial();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function readUntil(del: string): string {
|
||||||
|
return readLine();
|
||||||
|
}
|
||||||
|
|
||||||
export function onDataReceived(delimiters: string, handler: RefAction) {
|
export function onDataReceived(delimiters: string, handler: RefAction) {
|
||||||
let b = board();
|
let b = board();
|
||||||
b.bus.listen(DAL.MICROBIT_ID_SERIAL, DAL.MICROBIT_SERIAL_EVT_DELIM_MATCH, handler);
|
b.bus.listen(DAL.MICROBIT_ID_SERIAL, DAL.MICROBIT_SERIAL_EVT_DELIM_MATCH, handler);
|
||||||
|
Loading…
Reference in New Issue
Block a user