#reactjs #react-native #bluetooth
#reactjs #react-native #bluetooth
Вопрос:
Я работаю над этим приложением, в котором я использую библиотеку Bluetooth (https://github.com/Polidea/react-native-ble-plx ) и мне нужно использовать base64 для передачи строки из пользовательского ввода в модуль Bluetooth. Я совсем новичок в React Native, так что вот мой подход к выполнению этой задачи:
- В конструкторе я создал новое состояние входной строки
constructor() {
super()
this.manager = new BleManager()
this.setState = {inputString: ''};
}
- Затем я добавил способ обновления состояния inputString при вводе строки:
<TextInput
style ={styles.input}
placeholder = 'e.g. Hello'
placeholderTextColor = 'white'
onChangeText = {inputString => this.setState({inputString})}/>
- Затем я добавил функцию для преобразования введенной пользователем строки в base64, чтобы я мог использовать ее для метода Bluetooth для записи в модуль:
encode = () =>{
var encodedName = base64.encode(this.state.inputString);
alert(encodedName);
}
- Наконец, я хочу использовать эту новую обновленную переменную (encodedName) в методе из библиотеки Bluetooth. Метод заключается в следующем —
device.writeCharacteristicWithResponseForService(
serviceUUID: UUID,
characteristicUUID: UUID,
valueBase64: Base64)
Вот моя версия этого кода:
device.writeCharacteristicWithResponseForService('12ab', '34cd', 'base64')
.then((characteristic) => {
console.log(characteristic.value);
return })
- Вот в чем моя проблема. Могу ли я просто вызвать функцию вместо ‘base64’, или есть какой-то другой способ вызвать обновленную переменную?
Заранее спасибо!
Ответ №1:
Похоже, что вместо этого вы должны передать закодированную строку в качестве третьего параметра функции записи:
const base64Data = base64.encode(this.state.inputString);
device.writeCharacteristicWithResponseForService('12ab', '34cd', base64Data);
Комментарии:
1. Возможно ли, что я неправильно закодировал строку? Я получаю сообщение об ошибке, в котором говорится, что «TypeError: input.charCodeAt не является функцией. (В ‘input.charCodeAt (i )’, ‘input.charCodeAt’ не определено)» в классе base64. Спасибо за вашу помощь!
2. Хм. Когда вы console.log
this.state.inputString
прямо перед его кодированием, имеет ли оно правильное значение? Используете ли вы функцию encode изreact-native-base64
или это другая библиотека?