При копировании копируется код целиком

This commit is contained in:
alisagerasimova
2026-02-20 12:33:04 +03:00
parent 5e2d7516e3
commit 00e884da83
7 changed files with 55 additions and 55 deletions
@@ -44,10 +44,6 @@ class ColorDetect():
else:
self.color = None
#в MAIN для вызова функции должно быть:
# cd = ColorDetect()
#color_sub = rospy.Subscriber('main_camera/image_raw', Image,
@@ -56,4 +52,3 @@ class ColorDetect():
# print(cd.getColor())
#rospy.sleep(2)
#color_sub.unregister()
@@ -18,8 +18,6 @@ navigate = rospy.ServiceProxy('navigate', srv.Navigate) #сервис для п
land = rospy.ServiceProxy('land', Trigger) #сервис для посадки
def navigate_wait(x=0, y=0, z=1, speed=0.5, frame_id='aruco_map', auto_arm=False, tolerance=0.2,sleep=2):
"""
Летит в указанную точку и ждет, пока дрон туда ДОЛЕТИТ.
@@ -36,9 +34,6 @@ def navigate_wait(x=0, y=0, z=1, speed=0.5, frame_id='aruco_map', auto_arm=False
rospy.sleep(sleep)
def emergency_stop():
"""Функция экстренной остановки, срабатывает при нажатии Ctrl + C"""
@@ -78,8 +73,6 @@ def emergency_stop():
print(f"Warning: {e}")
def signal_handler(sig, frame):
"""Перехват Ctrl+C: вместо аварийного завершения программы
@@ -98,9 +91,7 @@ def main():
#в дальнейшем не передавать переменной auto_arm значение True
# тут будут navigate_wait и подписчики
# navigate_wait(x=3,z=1,sleep=1)
# navigate_wait(y=5,x=2,z=1,sleep = 4)
<<navigate_wait>>
land() #посадка
+26
View File
@@ -0,0 +1,26 @@
class QrDetect():
def __init__(self):
self.qr_data = ''
def getQrData(self):
return self.qr_data
def qr_detection(self,data):
'''сканирование qr кода'''
if self.qr_data!= '':
return
cv_image = bridge.imgmsg_to_cv2(data, 'bgr8')
barcodes = pyzbar.decode(cv_image)
if barcodes:
self.qr_data = barcodes[0].data.decode('utf-8')
#в MAIN для вызова функции необходимо следующее:
#1. создаём и вызываем подписчика, который вызывает функцию чтения кьюаркода
qd = QrDetect()
qr_sub = rospy.Subscriber('main_camera/image_raw',Image, qd.qr_detection,queue_size=1)
#2. задаём время работы подписчика (за 1 секунду примерно 20 раз вызывается функция)
rospy.sleep(2)
#3. выключаем подписчика
qr_sub.unregister()
-26
View File
@@ -1,26 +0,0 @@
qr_data=''
def qr_detection(data):
'''сканирование qr кода'''
global qr_data
if qr_data!= '':
return
cv_image = bridge.imgmsg_to_cv2(data, 'bgr8')
barcodes = pyzbar.decode(cv_image)
if barcodes:
qr_data = barcodes[0].data.decode('utf-8')
return qr_data
#в MAIN для вызова функции необходимо следующее:
#1. создаём и вызываем подписчика, который вызывает функцию чтения кьюаркода
qr_sub = rospy.Subscriber('main_camera/image_raw',Image, qr_detection,queue_size=1)
#2. задаём время работы подписчика (за 1 секунду примерно 20 раз вызывается функция)
rospy.sleep(2)
#3. выключаем подписчика
qr_sub.unregister()
+21 -13
View File
@@ -13,7 +13,6 @@ const isModalVisible = ref(false)
let finallyText = '';
onMounted(()=>{
for (let i = 0; i < 100; i++) {
numbers.value.push({
variable: [],
@@ -43,7 +42,10 @@ function setNumber(item) {
//если нажимаем на ранее отмеченную клетку (не последнюю), то выводится ошибка
listOfTrips.value.push(item)
if (numbers.value[item.index].variable.at(-1) === clickCount.value-1) {
izitoast.error({title:'Ошибка', message:'Нельзя выбирать один и тот же aruco маркер 2 раза подряд'})
izitoast.error({
title:'Ошибка',
message:'Нельзя выбирать один и тот же aruco маркер 2 раза подряд'
})
return
}
numbers.value[item.index].variable.push(clickCount.value)
@@ -53,14 +55,15 @@ function setNumber(item) {
}
function saveResult() {
let navigate_waites = ''
for (const item of listOfTrips.value) {
finallyText += `navigate_wait(${item.x}, ${item.y})\n`;
navigate_waites += `navigate_wait(${item.x}, ${item.y})\n\t`;
}
console.log(finallyText);
izitoast.info({
title: 'Информация',
message: "Посмотри в консоли путь дрона. Ctrl + Shift + I или F12"
});
fetch('/shablons/emergency_and_navigate.txt')
.then(response => response.text())
.then(textOfCode => {
finallyText = textOfCode.replace('<<navigate_wait>>', navigate_waites);
});
isModalVisible.value = true
}
@@ -92,6 +95,14 @@ const handleKeydown = (event) => {
}
};
useEventListener('keydown', handleKeydown);
function copyAndToast(text){
copyToclipboard(text)
izitoast.success({
title:'Успешно',
message:'Код скопирован в буфер обмена'
})
}
</script>
<template>
@@ -119,16 +130,13 @@ useEventListener('keydown', handleKeydown);
<strong v-else>Код не готов!</strong>
</template>
<template #body>
<p v-if="listOfTrips.length">Это тело модального окна.
{{ finallyText }}
</p>
<p v-if="listOfTrips.length">Скопируйте или скачайте ваш код</p>
<p v-else>Выстройте маршрут перед сохранением кода.
</p>
</template>
<template #footer>
<button type="button" class="btn-green" @click="isModalVisible = false">Скачать код</button>
<button type="button" class="btn-green" @click="copyToclipboard(finallyText)">Скопировать код</button>
<button type="button" class="btn-green" @click="copyAndToast(finallyText)">Скопировать код</button>
<button type="button" class="btn-green" @click="isModalVisible = false">ОК</button>
</template>
</MyDialog>
+6
View File
@@ -94,6 +94,12 @@ function closeModal() {
padding: 5px;
margin: 0 5px;
}
.btn-green:hover {
background-color: #0fa386;
}
.btn-green:active {
background-color: #65ebd2;
}
.modal-fade-enter,
.modal-fade-leave-active {