-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_system.py
More file actions
185 lines (149 loc) · 6.23 KB
/
test_system.py
File metadata and controls
185 lines (149 loc) · 6.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
#!/usr/bin/env python3
"""
اختبار سريع لنظام ROV Control System
يقوم بإنشاء محاكاة بسيطة للنظام
"""
import sys
import os
# إضافة المسار الحالي لـ Python path
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
def test_imports():
"""اختبار استيراد جميع الوحدات"""
print("🔍 اختبار استيراد الوحدات...")
try:
# اختبار Utils
from utils.config import Config
from utils.logger import ROVLogger
from utils.calibration import CalibrationManager
print("✅ utils - تم بنجاح")
# اختبار Communication
from communication.serial_comm import SerialCommunication
from communication.network_comm import NetworkCommunication
from communication.packet_handler import PacketHandler
print("✅ communication - تم بنجاح")
# اختبار Controller
from controller.motors import MotorController
from controller.joystick_input import JoystickInput
from controller.rov_controller import ROVController
print("✅ controller - تم بنجاح")
# اختبار Sensors
from sensors.imu import IMUSensor
from sensors.pressure_sensor import PressureSensor
from sensors.temperature_sensor import TemperatureSensor
print("✅ sensors - تم بنجاح")
return True
except ImportError as e:
print(f"❌ خطأ في الاستيراد: {e}")
return False
def test_basic_functionality():
"""اختبار الوظائف الأساسية"""
print("\n🧪 اختبار الوظائف الأساسية...")
try:
# اختبار الإعدادات
from utils.config import Config
config = Config()
print("✅ إنشاء كائن الإعدادات")
# اختبار السجلات
from utils.logger import setup_logger, ROVLogger
setup_logger()
logger = ROVLogger('Test')
logger.info("اختبار نظام السجلات")
print("✅ نظام السجلات يعمل")
# اختبار متحكم المحركات
from controller.motors import MotorController
motor_controller = MotorController(config)
motor_controller.set_manual_control(50, 0, 0, 0)
print("✅ متحكم المحركات يعمل")
# اختبار الحساسات
from sensors.imu import IMUSensor
imu = IMUSensor()
imu_data = imu.get_all_data()
print("✅ حساس IMU يعمل")
return True
except Exception as e:
print(f"❌ خطأ في الاختبار: {e}")
return False
def test_gui_components():
"""اختبار مكونات واجهة المستخدم"""
print("\n🖥️ اختبار واجهة المستخدم...")
try:
# محاولة استيراد PyQt6
from PyQt6.QtWidgets import QApplication
from PyQt6.QtCore import QTimer
print("✅ PyQt6 متاح")
# إنشاء تطبيق وهمي
app = QApplication([])
# اختبار مكونات GUI
from gui.camera_feed import CameraFeedWidget
from gui.control_panel import ControlPanelWidget
from gui.telemetry_display import TelemetryDisplayWidget
# إنشاء كائنات الاختبار
from utils.config import Config
config = Config()
camera_widget = CameraFeedWidget(config)
print("✅ أداة الكاميرا")
telemetry_widget = TelemetryDisplayWidget(config)
print("✅ أداة التيليمتري")
app.quit()
return True
except ImportError as e:
print(f"⚠️ PyQt6 غير متاح: {e}")
print(" تشغيل: pip install PyQt6")
return False
except Exception as e:
print(f"❌ خطأ في اختبار GUI: {e}")
return False
def show_system_info():
"""عرض معلومات النظام"""
print("\n📊 معلومات النظام:")
print(f"🐍 Python: {sys.version}")
print(f"💻 المنصة: {sys.platform}")
# فحص المكتبات المتاحة
libraries = [
("PyQt6", "واجهة المستخدم"),
("cv2", "معالجة الفيديو"),
("serial", "الاتصال التسلسلي"),
("pygame", "دعم الجويستيك"),
("numpy", "العمليات الرياضية"),
("yaml", "ملفات YAML")
]
print("\n📚 المكتبات:")
for lib_name, description in libraries:
try:
__import__(lib_name)
print(f" ✅ {lib_name} - {description}")
except ImportError:
print(f" ❌ {lib_name} - {description} (غير متاح)")
def main():
"""الدالة الرئيسية للاختبار"""
print("🚀 اختبار سريع لنظام ROV Control System")
print("=" * 50)
# عرض معلومات النظام
show_system_info()
# اختبار الاستيراد
if not test_imports():
print("\n❌ فشل في اختبار الاستيراد")
return False
# اختبار الوظائف الأساسية
if not test_basic_functionality():
print("\n❌ فشل في اختبار الوظائف الأساسية")
return False
# اختبار واجهة المستخدم
gui_ok = test_gui_components()
print("\n" + "=" * 50)
if gui_ok:
print("✅ جميع الاختبارات نجحت!")
print("\n🎉 النظام جاهز للتشغيل!")
print("استخدم: python main.py")
else:
print("⚠️ بعض مكونات واجهة المستخدم غير متاحة")
print("لكن النظام الأساسي يعمل")
return True
if __name__ == "__main__":
try:
main()
except KeyboardInterrupt:
print("\n\n⏹️ تم إيقاف الاختبار بواسطة المستخدم")
except Exception as e:
print(f"\n❌ خطأ غير متوقع: {e}")
sys.exit(1)