diff --git a/index.html b/index.html
index 151627a..0694331 100644
--- a/index.html
+++ b/index.html
@@ -2,7 +2,7 @@
- Hello World!
+ Probody
diff --git a/package-lock.json b/package-lock.json
index 6e9288c..97674a5 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,6 +9,8 @@
"version": "1.0.0",
"license": "MIT",
"dependencies": {
+ "@vueuse/core": "^14.2.1",
+ "copy-to-clipboard": "^3.3.3",
"electron-squirrel-startup": "^1.0.1",
"izitoast": "^1.4.0",
"vue": "^3.5.28"
@@ -2510,6 +2512,12 @@
"@types/node": "*"
}
},
+ "node_modules/@types/web-bluetooth": {
+ "version": "0.0.21",
+ "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz",
+ "integrity": "sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==",
+ "license": "MIT"
+ },
"node_modules/@types/wrap-ansi": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz",
@@ -2652,6 +2660,44 @@
"integrity": "sha512-cfWa1fCGBxrvaHRhvV3Is0MgmrbSCxYTXCSCau2I0a1Xw1N1pHAvkWCiXPRAqjvToILvguNyEwjevUqAuBQWvQ==",
"license": "MIT"
},
+ "node_modules/@vueuse/core": {
+ "version": "14.2.1",
+ "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-14.2.1.tgz",
+ "integrity": "sha512-3vwDzV+GDUNpdegRY6kzpLm4Igptq+GA0QkJ3W61Iv27YWwW/ufSlOfgQIpN6FZRMG0mkaz4gglJRtq5SeJyIQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/web-bluetooth": "^0.0.21",
+ "@vueuse/metadata": "14.2.1",
+ "@vueuse/shared": "14.2.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "vue": "^3.5.0"
+ }
+ },
+ "node_modules/@vueuse/metadata": {
+ "version": "14.2.1",
+ "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-14.2.1.tgz",
+ "integrity": "sha512-1ButlVtj5Sb/HDtIy1HFr1VqCP4G6Ypqt5MAo0lCgjokrk2mvQKsK2uuy0vqu/Ks+sHfuHo0B9Y9jn9xKdjZsw==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@vueuse/shared": {
+ "version": "14.2.1",
+ "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-14.2.1.tgz",
+ "integrity": "sha512-shTJncjV9JTI4oVNyF1FQonetYAiTBd+Qj7cY89SWbXSkx7gyhrgtEdF2ZAVWS1S3SHlaROO6F2IesJxQEkZBw==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "vue": "^3.5.0"
+ }
+ },
"node_modules/@webassemblyjs/ast": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz",
@@ -3591,6 +3637,15 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/copy-to-clipboard": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz",
+ "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==",
+ "license": "MIT",
+ "dependencies": {
+ "toggle-selection": "^1.0.6"
+ }
+ },
"node_modules/cross-dirname": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/cross-dirname/-/cross-dirname-0.1.0.tgz",
@@ -7778,6 +7833,12 @@
"node": ">=8.0"
}
},
+ "node_modules/toggle-selection": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz",
+ "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==",
+ "license": "MIT"
+ },
"node_modules/tr46": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
diff --git a/package.json b/package.json
index dcbc836..f0de7b3 100644
--- a/package.json
+++ b/package.json
@@ -30,6 +30,8 @@
"vite": "^5.4.21"
},
"dependencies": {
+ "@vueuse/core": "^14.2.1",
+ "copy-to-clipboard": "^3.3.3",
"electron-squirrel-startup": "^1.0.1",
"izitoast": "^1.4.0",
"vue": "^3.5.28"
diff --git a/shablons/README.md b/public/shablons/README.md
similarity index 100%
rename from shablons/README.md
rename to public/shablons/README.md
diff --git a/shablons/color.py b/public/shablons/color.txt
similarity index 99%
rename from shablons/color.py
rename to public/shablons/color.txt
index 2ae7ea2..6571542 100644
--- a/shablons/color.py
+++ b/public/shablons/color.txt
@@ -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()
-
diff --git a/shablons/emergency_and_navigate.py b/public/shablons/emergency_and_navigate.txt
similarity index 95%
rename from shablons/emergency_and_navigate.py
rename to public/shablons/emergency_and_navigate.txt
index 6bea297..708ff95 100644
--- a/shablons/emergency_and_navigate.py
+++ b/public/shablons/emergency_and_navigate.txt
@@ -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,12 +91,10 @@ 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)
+ <>
land() #посадка
if __name__ == "__main__":
- main()
\ No newline at end of file
+ main()
diff --git a/public/shablons/qr.txt b/public/shablons/qr.txt
new file mode 100644
index 0000000..b31ddde
--- /dev/null
+++ b/public/shablons/qr.txt
@@ -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()
diff --git a/shablons/qr.py b/shablons/qr.py
deleted file mode 100644
index 8cd6251..0000000
--- a/shablons/qr.py
+++ /dev/null
@@ -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()
-
diff --git a/src/App.vue b/src/App.vue
index 73d85ad..f61d5cb 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -1,14 +1,18 @@
@@ -93,26 +123,52 @@ function cleanResult() {
+
+
+
+ Код готов!
+ Код не готов!
+
+
+ Скопируйте или скачайте ваш код
+ Выстройте маршрут перед сохранением кода.
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/copyToclipboard.js b/src/copyToclipboard.js
new file mode 100644
index 0000000..662f9e9
--- /dev/null
+++ b/src/copyToclipboard.js
@@ -0,0 +1,17 @@
+import copy from 'copy-to-clipboard';
+import iziToast from '@/iziToast.js';
+
+function copyToclipboard(text) {
+ try {
+ copy(text)
+ } catch (error) {
+ console.error("Ошибка при копировании текста: ", error);
+ iziToast.error({
+ title: 'Ошибка',
+ message: "Ошибка при копировании текста. Подробности смотри в консоли",
+ });
+ return;
+ }
+}
+
+export default copyToclipboard
\ No newline at end of file
diff --git a/vite.renderer.config.mjs b/vite.renderer.config.mjs
index 1c6c6ef..79f986d 100644
--- a/vite.renderer.config.mjs
+++ b/vite.renderer.config.mjs
@@ -1,7 +1,13 @@
import { defineConfig } from 'vite';
+import { resolve } from 'path';
import vue from '@vitejs/plugin-vue';
// https://vitejs.dev/config
export default defineConfig({
- plugins: [vue()]
+ plugins: [vue()],
+ resolve: {
+ alias: {
+ '@': resolve(__dirname, 'src'),
+ },
+ },
});
\ No newline at end of file